From 2f859ad32d625a3472b657b4be9c40bd2af7c0e5 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Tue, 20 Sep 2016 03:08:28 +0200 Subject: [PATCH 01/74] Initial example with 2 commands of the new permission system --- .../20160920004320_second.Designer.cs | 587 ++++++++++++++++++ .../Migrations/20160920004320_second.cs | 47 ++ .../NadekoSqliteContextModelSnapshot.cs | 31 + .../Modules/Permissions/Permissions.cs | 28 +- .../Commands/StreamNotificationCommands.cs | 10 +- .../Services/Database/Models/GuildConfig.cs | 3 + .../Services/Database/Models/Permission.cs | 24 + 7 files changed, 725 insertions(+), 5 deletions(-) create mode 100644 src/NadekoBot/Migrations/20160920004320_second.Designer.cs create mode 100644 src/NadekoBot/Migrations/20160920004320_second.cs create mode 100644 src/NadekoBot/Services/Database/Models/Permission.cs diff --git a/src/NadekoBot/Migrations/20160920004320_second.Designer.cs b/src/NadekoBot/Migrations/20160920004320_second.Designer.cs new file mode 100644 index 00000000..c39b6fd1 --- /dev/null +++ b/src/NadekoBot/Migrations/20160920004320_second.Designer.cs @@ -0,0 +1,587 @@ +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using NadekoBot.Services.Database.Impl; + +namespace NadekoBot.Migrations +{ + [DbContext(typeof(NadekoSqliteContext))] + [Migration("20160920004320_second")] + partial class second + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { + modelBuilder + .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ItemId"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("BlacklistItem"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BufferSize"); + + b.Property("CurrencyGenerationChance"); + + b.Property("CurrencyGenerationCooldown"); + + b.Property("CurrencyName"); + + b.Property("CurrencyPluralName"); + + b.Property("CurrencySign"); + + b.Property("DontJoinServers"); + + b.Property("ForwardMessages"); + + b.Property("ForwardToAllOwners"); + + b.Property("RemindMessageFormat"); + + b.Property("RotatingStatuses"); + + b.HasKey("Id"); + + 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("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("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.ConvertUnit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("InternalTrigger"); + + b.Property("Modifier"); + + b.Property("UnitType"); + + b.HasKey("Id"); + + b.ToTable("ConversionUnits"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Currency"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("Name"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Donators"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("EightBallResponses"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("LastStatus"); + + b.Property("Type"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FollowedStream"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoAssignRoleId"); + + b.Property("AutoDeleteByeMessages"); + + b.Property("AutoDeleteGreetMessages"); + + b.Property("AutoDeleteGreetMessagesTimer"); + + b.Property("AutoDeleteSelfAssignedRoleMessages"); + + b.Property("ByeMessageChannelId"); + + b.Property("ChannelByeMessageText"); + + b.Property("ChannelGreetMessageText"); + + b.Property("DefaultMusicVolume"); + + b.Property("DeleteMessageOnCommand"); + + b.Property("DmGreetMessageText"); + + b.Property("ExclusiveSelfAssignedRoles"); + + b.Property("GenerateCurrencyChannelId"); + + b.Property("GreetMessageChannelId"); + + b.Property("GuildId"); + + b.Property("LogSettingId"); + + b.Property("SendChannelByeMessage"); + + b.Property("SendChannelGreetMessage"); + + b.Property("SendDmGreetMessage"); + + b.Property("VoicePlusTextEnabled"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.HasIndex("LogSettingId"); + + b.ToTable("GuildConfigs"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredLogChannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredVoicePresenceCHannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelCreated"); + + b.Property("ChannelDestroyed"); + + b.Property("ChannelId"); + + b.Property("ChannelUpdated"); + + b.Property("IsLogging"); + + b.Property("LogUserPresence"); + + b.Property("LogVoicePresence"); + + b.Property("MessageDeleted"); + + b.Property("MessageReceived"); + + b.Property("MessageUpdated"); + + b.Property("UserBanned"); + + b.Property("UserJoined"); + + b.Property("UserLeft"); + + b.Property("UserPresenceChannelId"); + + b.Property("UserUnbanned"); + + b.Property("UserUpdated"); + + b.Property("VoicePresenceChannelId"); + + b.HasKey("Id"); + + b.ToTable("LogSettings"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ModuleName"); + + b.Property("Prefix"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("ModulePrefixes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Command"); + + b.Property("GuildConfigId"); + + b.Property("Module"); + + b.Property("State"); + + b.Property("Target"); + + b.Property("TargetType"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("Permission"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Status"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("PlayingStatus"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("AuthorName") + .IsRequired(); + + b.Property("GuildId"); + + b.Property("Keyword") + .IsRequired(); + + b.Property("Text") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("Quotes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Icon"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("RaceAnimals"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("IsPrivate"); + + b.Property("Message"); + + b.Property("ServerId"); + + b.Property("UserId"); + + b.Property("When"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildId"); + + b.Property("Interval"); + + b.Property("Message"); + + b.HasKey("Id"); + + b.HasIndex("ChannelId") + .IsUnique(); + + b.ToTable("Repeaters"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildId", "RoleId") + .IsUnique(); + + b.ToTable("SelfAssignableRoles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.ToTable("TypingArticles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("Blacklist") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + { + b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + .WithMany("Bases") + .HasForeignKey("ClashWarId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("EightBallResponses") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FollowedStreams") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany() + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredVoicePresenceChannelIds") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig", "BotConfig") + .WithMany("ModulePrefixes") + .HasForeignKey("BotConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("Permissions") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RotatingStatusMessages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RaceAnimals") + .HasForeignKey("BotConfigId"); + }); + } + } +} diff --git a/src/NadekoBot/Migrations/20160920004320_second.cs b/src/NadekoBot/Migrations/20160920004320_second.cs new file mode 100644 index 00000000..7b417d43 --- /dev/null +++ b/src/NadekoBot/Migrations/20160920004320_second.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace NadekoBot.Migrations +{ + public partial class second : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Permission", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + Command = table.Column(nullable: true), + GuildConfigId = table.Column(nullable: true), + Module = table.Column(nullable: true), + State = table.Column(nullable: false), + Target = table.Column(nullable: true), + TargetType = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Permission", x => x.Id); + table.ForeignKey( + name: "FK_Permission_GuildConfigs_GuildConfigId", + column: x => x.GuildConfigId, + principalTable: "GuildConfigs", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateIndex( + name: "IX_Permission_GuildConfigId", + table: "Permission", + column: "GuildConfigId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Permission"); + } + } +} diff --git a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs index 92d2ea09..06546b13 100644 --- a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs +++ b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs @@ -348,6 +348,30 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Command"); + + b.Property("GuildConfigId"); + + b.Property("Module"); + + b.Property("State"); + + b.Property("Target"); + + b.Property("TargetType"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("Permission"); + }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => { b.Property("Id") @@ -537,6 +561,13 @@ namespace NadekoBot.Migrations .OnDelete(DeleteBehavior.Cascade); }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("Permissions") + .HasForeignKey("GuildConfigId"); + }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => { b.HasOne("NadekoBot.Services.Database.Models.BotConfig") diff --git a/src/NadekoBot/Modules/Permissions/Permissions.cs b/src/NadekoBot/Modules/Permissions/Permissions.cs index 5619ddf0..743f5a26 100644 --- a/src/NadekoBot/Modules/Permissions/Permissions.cs +++ b/src/NadekoBot/Modules/Permissions/Permissions.cs @@ -8,6 +8,8 @@ using Discord.Commands; using Discord.WebSocket; using NadekoBot.Services; using Discord; +using NadekoBot.Services.Database; +using NadekoBot.Services.Database.Models; namespace NadekoBot.Modules.Permissions { @@ -24,7 +26,18 @@ namespace NadekoBot.Modules.Permissions { var channel = (ITextChannel)imsg.Channel; - await channel.SendMessageAsync($"{command.Text} {action.Value} {user}"); + using (var uow = DbHandler.UnitOfWork()) + { + uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + { + TargetType = PermissionType.User, + Target = user.Id.ToString(), + Command = command.Text.ToLowerInvariant(), + State = action.Value, + }); + await uow.CompleteAsync(); + } + await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{command.Text}` command for `{user}` user."); } [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] @@ -33,7 +46,18 @@ namespace NadekoBot.Modules.Permissions { var channel = (ITextChannel)imsg.Channel; - await channel.SendMessageAsync($"{module.Name} {action.Value} {user}"); + using (var uow = DbHandler.UnitOfWork()) + { + uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + { + TargetType = PermissionType.User, + Target = user.Id.ToString(), + Module = module.Name.ToLowerInvariant(), + State = action.Value, + }); + await uow.CompleteAsync(); + } + await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{module.Name}` module for `{user}` user."); } } } diff --git a/src/NadekoBot/Modules/Searches/Commands/StreamNotificationCommands.cs b/src/NadekoBot/Modules/Searches/Commands/StreamNotificationCommands.cs index b313bf63..03f5fc8e 100644 --- a/src/NadekoBot/Modules/Searches/Commands/StreamNotificationCommands.cs +++ b/src/NadekoBot/Modules/Searches/Commands/StreamNotificationCommands.cs @@ -101,7 +101,7 @@ namespace NadekoBot.Modules.Searches cachedStatuses.TryAdd(hitboxUrl, result); return result; case FollowedStream.FollowedStreamType.Twitch: - var twitchUrl = $"https://api.twitch.tv/kraken/streams/{Uri.EscapeUriString(stream.Username)}"; + var twitchUrl = $"https://api.twitch.tv/kraken/streams/{Uri.EscapeUriString(stream.Username)}?client_id=67w6z9i09xv2uoojdm9l0wsyph4hxo6"; if (checkCache && cachedStatuses.TryGetValue(twitchUrl, out result)) return result; using (var http = new HttpClient()) @@ -110,7 +110,7 @@ namespace NadekoBot.Modules.Searches } data = JObject.Parse(response); isLive = !string.IsNullOrWhiteSpace(data["stream"].ToString()); - result = new Tuple(isLive, isLive ? data["stream"]["viewers"].ToString() : "0"); + result = new Tuple(isLive, isLive ? data["stream"]["viewers"].ToString() : stream.Username); cachedStatuses.TryAdd(twitchUrl, result); return result; case FollowedStream.FollowedStreamType.Beam: @@ -225,7 +225,11 @@ namespace NadekoBot.Modules.Searches })); if (streamStatus.Item1) { - await channel.SendMessageAsync($"`Streamer {streamStatus.Item2} is online.`"); + await channel.SendMessageAsync($"`Streamer {username} is online with {streamStatus.Item2}.`"); + } + else + { + await channel.SendMessageAsync($"`Streamer {username} is offline.`"); } } catch diff --git a/src/NadekoBot/Services/Database/Models/GuildConfig.cs b/src/NadekoBot/Services/Database/Models/GuildConfig.cs index ada21e94..33180435 100644 --- a/src/NadekoBot/Services/Database/Models/GuildConfig.cs +++ b/src/NadekoBot/Services/Database/Models/GuildConfig.cs @@ -41,5 +41,8 @@ namespace NadekoBot.Services.Database.Models //currencyGeneration public ulong? GenerateCurrencyChannelId { get; set; } + + //permissions + public List Permissions { get; set; } } } diff --git a/src/NadekoBot/Services/Database/Models/Permission.cs b/src/NadekoBot/Services/Database/Models/Permission.cs new file mode 100644 index 00000000..9b1831a5 --- /dev/null +++ b/src/NadekoBot/Services/Database/Models/Permission.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NadekoBot.Services.Database.Models +{ + public class Permission : DbEntity + { + public PermissionType TargetType { get; set; } + public string Command { get; set; } = null; + public string Module { get; set; } = null; + public bool State { get; set; } + public string Target { get; set; } + } + + public enum PermissionType + { + User, + Channel, + Role + } +} From 1a2d1398a7c0004da01ab1b9ea11d39b2d340f7b Mon Sep 17 00:00:00 2001 From: Kwoth Date: Thu, 22 Sep 2016 20:53:49 +0200 Subject: [PATCH 02/74] More work on permission system, fixes --- .../20160910180231_first.Designer.cs | 556 ------------------ .../Migrations/20160920004320_second.cs | 47 -- ...er.cs => 20160922170157_perms.Designer.cs} | 18 +- ...80231_first.cs => 20160922170157_perms.cs} | 34 +- .../NadekoSqliteContextModelSnapshot.cs | 14 +- .../Modules/Gambling/Commands/AnimalRacing.cs | 2 +- .../Games/Commands/PlantAndPickCommands.cs | 4 +- src/NadekoBot/Modules/Music/Music.cs | 2 +- .../Permissions/PermissionExtensions.cs | 121 ++++ .../Modules/Permissions/Permissions.cs | 43 +- .../Resources/CommandStrings.Designer.cs | 27 + src/NadekoBot/Resources/CommandStrings.resx | 9 + src/NadekoBot/Services/CommandHandler.cs | 70 ++- .../Services/Database/Models/Permission.cs | 18 +- .../Impl/GuildConfigRepository.cs | 1 + 15 files changed, 326 insertions(+), 640 deletions(-) delete mode 100644 src/NadekoBot/Migrations/20160910180231_first.Designer.cs delete mode 100644 src/NadekoBot/Migrations/20160920004320_second.cs rename src/NadekoBot/Migrations/{20160920004320_second.Designer.cs => 20160922170157_perms.Designer.cs} (98%) rename src/NadekoBot/Migrations/{20160910180231_first.cs => 20160922170157_perms.cs} (94%) create mode 100644 src/NadekoBot/Modules/Permissions/PermissionExtensions.cs diff --git a/src/NadekoBot/Migrations/20160910180231_first.Designer.cs b/src/NadekoBot/Migrations/20160910180231_first.Designer.cs deleted file mode 100644 index 1097f981..00000000 --- a/src/NadekoBot/Migrations/20160910180231_first.Designer.cs +++ /dev/null @@ -1,556 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database.Impl; - -namespace NadekoBot.Migrations -{ - [DbContext(typeof(NadekoSqliteContext))] - [Migration("20160910180231_first")] - partial class first - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("ItemId"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("BlacklistItem"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BufferSize"); - - b.Property("CurrencyGenerationChance"); - - b.Property("CurrencyGenerationCooldown"); - - b.Property("CurrencyName"); - - b.Property("CurrencyPluralName"); - - b.Property("CurrencySign"); - - b.Property("DontJoinServers"); - - b.Property("ForwardMessages"); - - b.Property("ForwardToAllOwners"); - - b.Property("RemindMessageFormat"); - - b.Property("RotatingStatuses"); - - b.HasKey("Id"); - - 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("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("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.ConvertUnit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("InternalTrigger"); - - b.Property("Modifier"); - - b.Property("UnitType"); - - b.HasKey("Id"); - - b.ToTable("ConversionUnits"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Amount"); - - b.Property("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("Currency"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Amount"); - - b.Property("Name"); - - b.Property("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("Donators"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Text"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("EightBallResponses"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("GuildConfigId"); - - b.Property("GuildId"); - - b.Property("LastStatus"); - - b.Property("Type"); - - b.Property("Username"); - - b.HasKey("Id"); - - b.HasIndex("GuildConfigId"); - - b.ToTable("FollowedStream"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AutoAssignRoleId"); - - b.Property("AutoDeleteByeMessages"); - - b.Property("AutoDeleteGreetMessages"); - - b.Property("AutoDeleteGreetMessagesTimer"); - - b.Property("AutoDeleteSelfAssignedRoleMessages"); - - b.Property("ByeMessageChannelId"); - - b.Property("ChannelByeMessageText"); - - b.Property("ChannelGreetMessageText"); - - b.Property("DefaultMusicVolume"); - - b.Property("DeleteMessageOnCommand"); - - b.Property("DmGreetMessageText"); - - b.Property("ExclusiveSelfAssignedRoles"); - - b.Property("GenerateCurrencyChannelId"); - - b.Property("GreetMessageChannelId"); - - b.Property("GuildId"); - - b.Property("LogSettingId"); - - b.Property("SendChannelByeMessage"); - - b.Property("SendChannelGreetMessage"); - - b.Property("SendDmGreetMessage"); - - b.Property("VoicePlusTextEnabled"); - - b.HasKey("Id"); - - b.HasIndex("GuildId") - .IsUnique(); - - b.HasIndex("LogSettingId"); - - b.ToTable("GuildConfigs"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("LogSettingId"); - - b.HasKey("Id"); - - b.HasIndex("LogSettingId"); - - b.ToTable("IgnoredLogChannels"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("LogSettingId"); - - b.HasKey("Id"); - - b.HasIndex("LogSettingId"); - - b.ToTable("IgnoredVoicePresenceCHannels"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelCreated"); - - b.Property("ChannelDestroyed"); - - b.Property("ChannelId"); - - b.Property("ChannelUpdated"); - - b.Property("IsLogging"); - - b.Property("LogUserPresence"); - - b.Property("LogVoicePresence"); - - b.Property("MessageDeleted"); - - b.Property("MessageReceived"); - - b.Property("MessageUpdated"); - - b.Property("UserBanned"); - - b.Property("UserJoined"); - - b.Property("UserLeft"); - - b.Property("UserPresenceChannelId"); - - b.Property("UserUnbanned"); - - b.Property("UserUpdated"); - - b.Property("VoicePresenceChannelId"); - - b.HasKey("Id"); - - b.ToTable("LogSettings"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("ModuleName"); - - b.Property("Prefix"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("ModulePrefixes"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Status"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("PlayingStatus"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AuthorId"); - - b.Property("AuthorName") - .IsRequired(); - - b.Property("GuildId"); - - b.Property("Keyword") - .IsRequired(); - - b.Property("Text") - .IsRequired(); - - b.HasKey("Id"); - - b.ToTable("Quotes"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Icon"); - - b.Property("Name"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("RaceAnimals"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("IsPrivate"); - - b.Property("Message"); - - b.Property("ServerId"); - - b.Property("UserId"); - - b.Property("When"); - - b.HasKey("Id"); - - b.ToTable("Reminders"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("GuildId"); - - b.Property("Interval"); - - b.Property("Message"); - - b.HasKey("Id"); - - b.HasIndex("ChannelId") - .IsUnique(); - - b.ToTable("Repeaters"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("GuildId"); - - b.Property("RoleId"); - - b.HasKey("Id"); - - b.HasIndex("GuildId", "RoleId") - .IsUnique(); - - b.ToTable("SelfAssignableRoles"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Author"); - - b.Property("Text"); - - b.HasKey("Id"); - - b.ToTable("TypingArticles"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("Blacklist") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => - { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") - .WithMany("Bases") - .HasForeignKey("ClashWarId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("EightBallResponses") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => - { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") - .WithMany("FollowedStreams") - .HasForeignKey("GuildConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany() - .HasForeignKey("LogSettingId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany("IgnoredChannels") - .HasForeignKey("LogSettingId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany("IgnoredVoicePresenceChannelIds") - .HasForeignKey("LogSettingId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig", "BotConfig") - .WithMany("ModulePrefixes") - .HasForeignKey("BotConfigId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("RotatingStatusMessages") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("RaceAnimals") - .HasForeignKey("BotConfigId"); - }); - } - } -} diff --git a/src/NadekoBot/Migrations/20160920004320_second.cs b/src/NadekoBot/Migrations/20160920004320_second.cs deleted file mode 100644 index 7b417d43..00000000 --- a/src/NadekoBot/Migrations/20160920004320_second.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace NadekoBot.Migrations -{ - public partial class second : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "Permission", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - Command = table.Column(nullable: true), - GuildConfigId = table.Column(nullable: true), - Module = table.Column(nullable: true), - State = table.Column(nullable: false), - Target = table.Column(nullable: true), - TargetType = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Permission", x => x.Id); - table.ForeignKey( - name: "FK_Permission_GuildConfigs_GuildConfigId", - column: x => x.GuildConfigId, - principalTable: "GuildConfigs", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateIndex( - name: "IX_Permission_GuildConfigId", - table: "Permission", - column: "GuildConfigId"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "Permission"); - } - } -} diff --git a/src/NadekoBot/Migrations/20160920004320_second.Designer.cs b/src/NadekoBot/Migrations/20160922170157_perms.Designer.cs similarity index 98% rename from src/NadekoBot/Migrations/20160920004320_second.Designer.cs rename to src/NadekoBot/Migrations/20160922170157_perms.Designer.cs index c39b6fd1..737b3c23 100644 --- a/src/NadekoBot/Migrations/20160920004320_second.Designer.cs +++ b/src/NadekoBot/Migrations/20160922170157_perms.Designer.cs @@ -8,8 +8,8 @@ using NadekoBot.Services.Database.Impl; namespace NadekoBot.Migrations { [DbContext(typeof(NadekoSqliteContext))] - [Migration("20160920004320_second")] - partial class second + [Migration("20160922170157_perms")] + partial class perms { protected override void BuildTargetModel(ModelBuilder modelBuilder) { @@ -354,18 +354,18 @@ namespace NadekoBot.Migrations b.Property("Id") .ValueGeneratedOnAdd(); - b.Property("Command"); - b.Property("GuildConfigId"); - b.Property("Module"); + b.Property("PrimaryTarget"); + + b.Property("PrimaryTargetId"); + + b.Property("SecondaryTarget"); + + b.Property("SecondaryTargetName"); b.Property("State"); - b.Property("Target"); - - b.Property("TargetType"); - b.HasKey("Id"); b.HasIndex("GuildConfigId"); diff --git a/src/NadekoBot/Migrations/20160910180231_first.cs b/src/NadekoBot/Migrations/20160922170157_perms.cs similarity index 94% rename from src/NadekoBot/Migrations/20160910180231_first.cs rename to src/NadekoBot/Migrations/20160922170157_perms.cs index c24604f5..e892e494 100644 --- a/src/NadekoBot/Migrations/20160910180231_first.cs +++ b/src/NadekoBot/Migrations/20160922170157_perms.cs @@ -4,7 +4,7 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace NadekoBot.Migrations { - public partial class first : Migration + public partial class perms : Migration { protected override void Up(MigrationBuilder migrationBuilder) { @@ -428,6 +428,30 @@ namespace NadekoBot.Migrations onDelete: ReferentialAction.Restrict); }); + migrationBuilder.CreateTable( + name: "Permission", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + GuildConfigId = table.Column(nullable: true), + PrimaryTarget = table.Column(nullable: false), + PrimaryTargetId = table.Column(nullable: false), + SecondaryTarget = table.Column(nullable: false), + SecondaryTargetName = table.Column(nullable: true), + State = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Permission", x => x.Id); + table.ForeignKey( + name: "FK_Permission_GuildConfigs_GuildConfigId", + column: x => x.GuildConfigId, + principalTable: "GuildConfigs", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + migrationBuilder.CreateIndex( name: "IX_BlacklistItem_BotConfigId", table: "BlacklistItem", @@ -486,6 +510,11 @@ namespace NadekoBot.Migrations table: "ModulePrefixes", column: "BotConfigId"); + migrationBuilder.CreateIndex( + name: "IX_Permission_GuildConfigId", + table: "Permission", + column: "GuildConfigId"); + migrationBuilder.CreateIndex( name: "IX_PlayingStatus_BotConfigId", table: "PlayingStatus", @@ -541,6 +570,9 @@ namespace NadekoBot.Migrations migrationBuilder.DropTable( name: "ModulePrefixes"); + migrationBuilder.DropTable( + name: "Permission"); + migrationBuilder.DropTable( name: "PlayingStatus"); diff --git a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs index 06546b13..232314b2 100644 --- a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs +++ b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs @@ -353,18 +353,18 @@ namespace NadekoBot.Migrations b.Property("Id") .ValueGeneratedOnAdd(); - b.Property("Command"); - b.Property("GuildConfigId"); - b.Property("Module"); + b.Property("PrimaryTarget"); + + b.Property("PrimaryTargetId"); + + b.Property("SecondaryTarget"); + + b.Property("SecondaryTargetName"); b.Property("State"); - b.Property("Target"); - - b.Property("TargetType"); - b.HasKey("Id"); b.HasIndex("GuildConfigId"); diff --git a/src/NadekoBot/Modules/Gambling/Commands/AnimalRacing.cs b/src/NadekoBot/Modules/Gambling/Commands/AnimalRacing.cs index 7870fa6a..15ea002d 100644 --- a/src/NadekoBot/Modules/Gambling/Commands/AnimalRacing.cs +++ b/src/NadekoBot/Modules/Gambling/Commands/AnimalRacing.cs @@ -96,7 +96,7 @@ namespace NadekoBot.Modules.Gambling { try { - await raceChannel.SendMessageAsync($"🏁`Race is starting in 20 seconds or when the room is full. Type {NadekoBot.ModulePrefixes["Gambling"]}jr to join the race.`"); + await raceChannel.SendMessageAsync($"🏁`Race is starting in 20 seconds or when the room is full. Type {NadekoBot.ModulePrefixes[typeof(Gambling).Name]}jr to join the race.`"); var t = await Task.WhenAny(Task.Delay(20000, token), fullgame); Started = true; cancelSource.Cancel(); diff --git a/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs b/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs index a6976739..689aea42 100644 --- a/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs @@ -86,7 +86,7 @@ namespace NadekoBot.Modules.Games { var sent = await channel.SendFileAsync( GetRandomCurrencyImagePath(), - $"❗ A random { Gambling.Gambling.CurrencyName } appeared! Pick it up by typing `{NadekoBot.ModulePrefixes["Gambling"]}pick`") + $"❗ A random { Gambling.Gambling.CurrencyName } appeared! Pick it up by typing `{NadekoBot.ModulePrefixes[typeof(Games).Name]}pick`") .ConfigureAwait(false); plantedFlowers.AddOrUpdate(channel.Id, new List() { sent }, (id, old) => { old.Add(sent); return old; }); } @@ -148,7 +148,7 @@ namespace NadekoBot.Modules.Games IUserMessage msg; var vowelFirst = new[] { 'a', 'e', 'i', 'o', 'u' }.Contains(Gambling.Gambling.CurrencyName[0]); - var msgToSend = $"Oh how Nice! **{imsg.Author.Username}** planted {(vowelFirst ? "an" : "a")} {Gambling.Gambling.CurrencyName}. Pick it using {NadekoBot.ModulePrefixes["Games"]}pick"; + var msgToSend = $"Oh how Nice! **{imsg.Author.Username}** planted {(vowelFirst ? "an" : "a")} {Gambling.Gambling.CurrencyName}. Pick it using {NadekoBot.ModulePrefixes[typeof(Gambling.Gambling).Name]}pick"; if (file == null) { msg = await channel.SendMessageAsync(Gambling.Gambling.CurrencySign).ConfigureAwait(false); diff --git a/src/NadekoBot/Modules/Music/Music.cs b/src/NadekoBot/Modules/Music/Music.cs index 5675eff1..b2709a72 100644 --- a/src/NadekoBot/Modules/Music/Music.cs +++ b/src/NadekoBot/Modules/Music/Music.cs @@ -17,7 +17,7 @@ using NadekoBot.Services.Database; namespace NadekoBot.Modules.Music { - [NadekoModule("ClashOfClans", "!!")] + [NadekoModule("Music", "!!")] public partial class Music : DiscordModule { public static ConcurrentDictionary MusicPlayers = new ConcurrentDictionary(); diff --git a/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs b/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs new file mode 100644 index 00000000..f1c668c7 --- /dev/null +++ b/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs @@ -0,0 +1,121 @@ +using Discord; +using Discord.Commands; +using NadekoBot.Services.Database.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NadekoBot.Modules.Permissions +{ + public static class PermissionExtensions + { + public static bool CheckPermissions(this IEnumerable permsEnumerable, IUserMessage message, Command command) + { + var perms = permsEnumerable as List ?? permsEnumerable.ToList(); + int throwaway; + return perms.CheckPermissions(message, command, out throwaway); + } + + public static bool CheckPermissions(this IEnumerable permsEnumerable, IUserMessage message, Command command, out int permIndex) + { + var perms = permsEnumerable as List ?? permsEnumerable.ToList(); + + for (int i = 0; i < perms.Count; i++) + { + var perm = perms[i]; + + var result = perm.CheckPermission(message, command); + + if (result == null) + { + continue; + } + else + { + permIndex = i + 1; + return result.Value; + } + } + permIndex = -1; //defaut behaviour + return true; + } + + //null = not applicable + //true = applicable, allowed + //false = applicable, not allowed + public static bool? CheckPermission(this Permission perm, IUserMessage message, Command command) + { + if (!((perm.SecondaryTarget == SecondaryPermissionType.Command && + perm.SecondaryTargetName == command.Text.ToLowerInvariant()) || + (perm.SecondaryTarget == SecondaryPermissionType.Module && + perm.SecondaryTargetName == command.Module.Name.ToLowerInvariant()))) + return null; + + switch (perm.PrimaryTarget) + { + case PrimaryPermissionType.User: + if (perm.PrimaryTargetId == message.Author.Id) + return perm.State; + break; + case PrimaryPermissionType.Channel: + if (perm.PrimaryTargetId == message.Channel.Id) + return perm.State; + break; + case PrimaryPermissionType.Role: + var guildUser = message.Author as IGuildUser; + if (guildUser == null) + break; + if (guildUser.Roles.Any(r => r.Id == perm.PrimaryTargetId)) + return perm.State; + break; + } + return null; + } + + public static string GetCommand(this Permission perm) + { + var com = NadekoBot.ModulePrefixes[typeof(Permissions).Name]; + switch (perm.PrimaryTarget) + { + case PrimaryPermissionType.User: + com += "u"; + break; + case PrimaryPermissionType.Channel: + com += "c"; + break; + case PrimaryPermissionType.Role: + com += "r"; + break; + } + + switch (perm.SecondaryTarget) + { + case SecondaryPermissionType.Module: + com += "m"; + break; + case SecondaryPermissionType.Command: + com += "c"; + break; + } + com += " " + perm.SecondaryTargetName + " " + (perm.State ? "enable" : "disable") + " "; + + switch (perm.PrimaryTarget) + { + case PrimaryPermissionType.User: + com += $"<@{perm.PrimaryTargetId}>"; + break; + case PrimaryPermissionType.Channel: + com += $"<#{perm.PrimaryTargetId}>"; + break; + case PrimaryPermissionType.Role: + com += $"<@&{perm.PrimaryTargetId}>"; + break; + } + + return com; + } + + } +} diff --git a/src/NadekoBot/Modules/Permissions/Permissions.cs b/src/NadekoBot/Modules/Permissions/Permissions.cs index 743f5a26..8a9357d3 100644 --- a/src/NadekoBot/Modules/Permissions/Permissions.cs +++ b/src/NadekoBot/Modules/Permissions/Permissions.cs @@ -20,6 +20,27 @@ namespace NadekoBot.Modules.Permissions { } + [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task ListPerms(IUserMessage msg) + { + var channel = (ITextChannel)msg.Channel; + + string toSend = ""; + using (var uow = DbHandler.UnitOfWork()) + { + var perms = uow.GuildConfigs.For(channel.Guild.Id).Permissions; + + var i = 1; + toSend = String.Join("\n", perms.Select(p => $"`{(i++)}.` {p.GetCommand()}")); + } + + if (string.IsNullOrWhiteSpace(toSend)) + await channel.SendMessageAsync("`No permissions set.`").ConfigureAwait(false); + else + await channel.SendMessageAsync(toSend).ConfigureAwait(false); + } + [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task UsrCmd(IUserMessage imsg, Command command, PermissionAction action, IGuildUser user) @@ -30,14 +51,15 @@ namespace NadekoBot.Modules.Permissions { uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission { - TargetType = PermissionType.User, - Target = user.Id.ToString(), - Command = command.Text.ToLowerInvariant(), + PrimaryTarget = PrimaryPermissionType.User, + PrimaryTargetId = user.Id, + SecondaryTarget = SecondaryPermissionType.Command, + SecondaryTargetName = command.Text.ToLowerInvariant(), State = action.Value, }); - await uow.CompleteAsync(); + await uow.CompleteAsync().ConfigureAwait(false); } - await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{command.Text}` command for `{user}` user."); + await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{command.Text}` command for `{user}` user.").ConfigureAwait(false); } [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] @@ -50,14 +72,15 @@ namespace NadekoBot.Modules.Permissions { uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission { - TargetType = PermissionType.User, - Target = user.Id.ToString(), - Module = module.Name.ToLowerInvariant(), + PrimaryTarget = PrimaryPermissionType.User, + PrimaryTargetId = user.Id, + SecondaryTarget = SecondaryPermissionType.Module, + SecondaryTargetName = module.Name.ToLowerInvariant(), State = action.Value, }); - await uow.CompleteAsync(); + await uow.CompleteAsync().ConfigureAwait(false); } - await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{module.Name}` module for `{user}` user."); + await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{module.Name}` module for `{user}` user.").ConfigureAwait(false); } } } diff --git a/src/NadekoBot/Resources/CommandStrings.Designer.cs b/src/NadekoBot/Resources/CommandStrings.Designer.cs index 25136f16..b727a16e 100644 --- a/src/NadekoBot/Resources/CommandStrings.Designer.cs +++ b/src/NadekoBot/Resources/CommandStrings.Designer.cs @@ -3596,6 +3596,33 @@ namespace NadekoBot.Resources { } } + /// + /// Looks up a localized string similar to Lists whole permission chain with their indexes.. + /// + public static string listperms_desc { + get { + return ResourceManager.GetString("listperms_desc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to `;lp`. + /// + public static string listperms_summary { + get { + return ResourceManager.GetString("listperms_summary", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to listperms lp. + /// + public static string listperms_text { + get { + return ResourceManager.GetString("listperms_text", resourceCulture); + } + } + /// /// Looks up a localized string similar to Lists all playing statuses with their corresponding number. **Bot Owner Only!**. /// diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index e43b132f..5425ea2f 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -2637,4 +2637,13 @@ cash $$ + + Lists whole permission chain with their indexes. + + + `;lp` + + + listperms lp + \ No newline at end of file diff --git a/src/NadekoBot/Services/CommandHandler.cs b/src/NadekoBot/Services/CommandHandler.cs index 493571ce..03863b8a 100644 --- a/src/NadekoBot/Services/CommandHandler.cs +++ b/src/NadekoBot/Services/CommandHandler.cs @@ -8,6 +8,9 @@ using Discord; using NLog; using System.Diagnostics; using Discord.Commands; +using NadekoBot.Services.Database; +using NadekoBot.Services.Database.Models; +using NadekoBot.Modules.Permissions; namespace NadekoBot.Services { @@ -33,11 +36,15 @@ namespace NadekoBot.Services var usrMsg = msg as IUserMessage; if (usrMsg == null) return Task.CompletedTask; + + var guild = (msg.Channel as ITextChannel)?.Guild; + var throwaway = Task.Run(async () => { var sw = new Stopwatch(); sw.Start(); - var t = await _commandService.Execute(usrMsg, usrMsg.Content, MultiMatchHandling.Best); + + var t = await ExecuteCommand(usrMsg, usrMsg.Content, guild, usrMsg.Author, MultiMatchHandling.Best); var command = t.Item1; var result = t.Item2; sw.Stop(); @@ -77,6 +84,67 @@ namespace NadekoBot.Services return Task.CompletedTask; } + + public async Task> ExecuteCommand(IUserMessage message, string input, IGuild guild, IUser user, MultiMatchHandling multiMatchHandling = MultiMatchHandling.Best) { + var searchResult = _commandService.Search(message, input); + if (!searchResult.IsSuccess) + return new Tuple(null, searchResult); + + var commands = searchResult.Commands; + for (int i = commands.Count - 1; i >= 0; i--) + { + var preconditionResult = await commands[i].CheckPreconditions(message); + if (!preconditionResult.IsSuccess) + { + if (commands.Count == 1) + return new Tuple(null, searchResult); + else + continue; + } + + var parseResult = await commands[i].Parse(message, searchResult, preconditionResult); + if (!parseResult.IsSuccess) + { + if (parseResult.Error == CommandError.MultipleMatches) + { + TypeReaderValue[] argList, paramList; + switch (multiMatchHandling) + { + case MultiMatchHandling.Best: + argList = parseResult.ArgValues.Select(x => x.Values.OrderByDescending(y => y.Score).First()).ToArray(); + paramList = parseResult.ParamValues.Select(x => x.Values.OrderByDescending(y => y.Score).First()).ToArray(); + parseResult = ParseResult.FromSuccess(argList, paramList); + break; + } + } + + if (!parseResult.IsSuccess) + { + if (commands.Count == 1) + return new Tuple(null, parseResult); + else + continue; + } + } + var cmd = commands[i]; + List perms; + //check permissions + if (guild != null) + { + using (var uow = DbHandler.UnitOfWork()) + { + perms = uow.GuildConfigs.For(guild.Id).Permissions; + } + int index; + if (!perms.CheckPermissions(message, cmd, out index)) + return new Tuple(null, SearchResult.FromError(CommandError.Exception, $"Permission error. Permission number {index} (`{(index != -1 ? perms[index - 1].GetCommand() : "default")}`)")); + } + + return new Tuple(commands[i], await commands[i].Execute(message, parseResult)); + } + + return new Tuple(null, SearchResult.FromError(CommandError.UnknownCommand, "This input does not match any overload.")); + } } public class CommandExecutedEventArgs diff --git a/src/NadekoBot/Services/Database/Models/Permission.cs b/src/NadekoBot/Services/Database/Models/Permission.cs index 9b1831a5..de342b6b 100644 --- a/src/NadekoBot/Services/Database/Models/Permission.cs +++ b/src/NadekoBot/Services/Database/Models/Permission.cs @@ -8,17 +8,25 @@ namespace NadekoBot.Services.Database.Models { public class Permission : DbEntity { - public PermissionType TargetType { get; set; } - public string Command { get; set; } = null; - public string Module { get; set; } = null; + public PrimaryPermissionType PrimaryTarget { get; set; } + public ulong PrimaryTargetId { get; set; } + + public SecondaryPermissionType SecondaryTarget { get; set; } + public string SecondaryTargetName { get; set; } + public bool State { get; set; } - public string Target { get; set; } } - public enum PermissionType + public enum PrimaryPermissionType { User, Channel, Role } + + public enum SecondaryPermissionType + { + Module, + Command + } } diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs b/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs index 3ff0b7e6..be741701 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs +++ b/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs @@ -29,6 +29,7 @@ namespace NadekoBot.Services.Database.Repositories.Impl public GuildConfig For(ulong guildId) { var config = _set.Include(gc => gc.FollowedStreams) + .Include(gc => gc.Permissions) .Include(gc => gc.LogSetting) .ThenInclude(ls=>ls.IgnoredChannels) .FirstOrDefault(c => c.GuildId == guildId); From 7181c2a6075e624c535ef54dfd99003a549db174 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Fri, 23 Sep 2016 10:23:54 +0200 Subject: [PATCH 03/74] Updated discord.net. More work on permissions --- discord.net | 2 +- .../Attributes/LocalizedDescription.cs | 4 +- .../Modules/Administration/Administration.cs | 52 ++--- .../Commands/AutoAssignRoleCommands.cs | 2 +- .../Commands/CrossServerTextChannel.cs | 4 +- .../Administration/Commands/LogCommand.cs | 10 +- .../Commands/MessageRepeater.cs | 6 +- .../Commands/PlayingRotateCommands.cs | 8 +- .../Commands/RatelimitCommand.cs | 2 +- .../Commands/SelfAssignedRolesCommand.cs | 12 +- .../Commands/ServerGreetCommands.cs | 16 +- .../Commands/VoicePlusTextCommands.cs | 4 +- .../Modules/ClashOfClans/ClashOfClans.cs | 18 +- .../Modules/Gambling/Commands/AnimalRacing.cs | 4 +- .../Gambling/Commands/DiceRollCommand.cs | 12 +- .../Modules/Gambling/Commands/DrawCommand.cs | 4 +- .../Gambling/Commands/FlipCoinCommand.cs | 4 +- src/NadekoBot/Modules/Gambling/Gambling.cs | 14 +- .../Modules/Games/Commands/LeetCommands.cs | 2 +- .../Games/Commands/PlantAndPickCommands.cs | 6 +- .../Modules/Games/Commands/PollCommands.cs | 4 +- .../Games/Commands/SpeedTypingCommands.cs | 4 +- .../Modules/Games/Commands/TriviaCommands.cs | 6 +- src/NadekoBot/Modules/Games/Games.cs | 8 +- src/NadekoBot/Modules/Help/Help.cs | 30 ++- src/NadekoBot/Modules/Music/Music.cs | 56 ++--- src/NadekoBot/Modules/NSFW/NSFW.cs | 16 +- .../Permissions/PermissionExtensions.cs | 16 +- .../Modules/Permissions/Permissions.cs | 217 +++++++++++++++++- src/NadekoBot/Modules/Pokemon/Pokemon.cs | 2 +- .../Searches/Commands/AnimeSearchCommands.cs | 4 +- .../Modules/Searches/Commands/CalcCommand.cs | 4 +- .../Modules/Searches/Commands/JokeCommands.cs | 10 +- .../Modules/Searches/Commands/LoLCommands.cs | 2 +- .../Searches/Commands/MemegenCommands.cs | 4 +- .../Modules/Searches/Commands/OsuCommands.cs | 6 +- .../Commands/PokemonSearchCommands.cs | 4 +- .../Commands/StreamNotificationCommands.cs | 12 +- .../Searches/Commands/UnitConversion.cs | 6 +- src/NadekoBot/Modules/Searches/Searches.cs | 40 ++-- .../Modules/Translator/Translator.cs | 4 +- .../Modules/Utility/Commands/InfoCommands.cs | 6 +- .../Modules/Utility/Commands/QuoteCommands.cs | 8 +- .../Modules/Utility/Commands/Remind.cs | 2 +- src/NadekoBot/Modules/Utility/Utility.cs | 18 +- .../Resources/CommandStrings.Designer.cs | 4 +- src/NadekoBot/Resources/CommandStrings.resx | 4 +- .../Services/Database/Models/Permission.cs | 4 +- 48 files changed, 460 insertions(+), 227 deletions(-) diff --git a/discord.net b/discord.net index b51408de..72131e69 160000 --- a/discord.net +++ b/discord.net @@ -1 +1 @@ -Subproject commit b51408def863ee5f4273478efa65eb50e4008487 +Subproject commit 72131e69f8ab39c4ed3c5002ed602c72ae83b506 diff --git a/src/NadekoBot/Attributes/LocalizedDescription.cs b/src/NadekoBot/Attributes/LocalizedDescription.cs index 470b6113..e05ec7c0 100644 --- a/src/NadekoBot/Attributes/LocalizedDescription.cs +++ b/src/NadekoBot/Attributes/LocalizedDescription.cs @@ -4,9 +4,9 @@ using System.Runtime.CompilerServices; namespace NadekoBot.Attributes { - public class LocalizedDescriptionAttribute : DescriptionAttribute + public class LocalizedRemarksAttribute : RemarksAttribute { - public LocalizedDescriptionAttribute([CallerMemberName] string memberName="") : base(Localization.LoadCommandString(memberName.ToLowerInvariant()+"_desc")) + public LocalizedRemarksAttribute([CallerMemberName] string memberName="") : base(Localization.LoadCommandString(memberName.ToLowerInvariant()+"_desc")) { } diff --git a/src/NadekoBot/Modules/Administration/Administration.cs b/src/NadekoBot/Modules/Administration/Administration.cs index 2d62e236..623ec387 100644 --- a/src/NadekoBot/Modules/Administration/Administration.cs +++ b/src/NadekoBot/Modules/Administration/Administration.cs @@ -60,7 +60,7 @@ namespace NadekoBot.Modules.Administration // Environment.Exit(0); //} - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.Administrator)] public async Task Delmsgoncmd(IUserMessage umsg) @@ -80,7 +80,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("❗`Stopped automatic deletion of successfull command invokations.`"); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] public async Task Setrole(IUserMessage umsg, IGuildUser usr, [Remainder] IRole role) @@ -98,7 +98,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] public async Task Removerole(IUserMessage umsg, IGuildUser usr, [Remainder] IRole role) @@ -115,7 +115,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] public async Task RenameRole(IUserMessage umsg, IRole roleToEdit, string newname) @@ -137,7 +137,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] public async Task RemoveAllRoles(IUserMessage umsg, [Remainder] IGuildUser user) @@ -155,7 +155,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] public async Task CreateRole(IUserMessage umsg, [Remainder] string roleName = null) @@ -176,7 +176,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] public async Task RoleColor(IUserMessage umsg, params string[] args) @@ -214,7 +214,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.BanMembers)] public async Task Ban(IUserMessage umsg, IGuildUser user) @@ -241,7 +241,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.BanMembers)] public async Task Softban(IUserMessage umsg, IGuildUser user, [Remainder] string msg = null) @@ -267,7 +267,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Kick(IUserMessage umsg, IGuildUser user, [Remainder] string msg = null) { @@ -295,7 +295,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.MuteMembers)] public async Task Mute(IUserMessage umsg, params IGuildUser[] users) @@ -318,7 +318,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.MuteMembers)] public async Task Unmute(IUserMessage umsg, params IGuildUser[] users) @@ -341,7 +341,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.DeafenMembers)] public async Task Deafen(IUserMessage umsg, params IGuildUser[] users) @@ -364,7 +364,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.DeafenMembers)] public async Task UnDeafen(IUserMessage umsg, params IGuildUser[] users) @@ -387,7 +387,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageChannels)] public async Task DelVoiChanl(IUserMessage umsg, [Remainder] IVoiceChannel voiceChannel) @@ -396,7 +396,7 @@ namespace NadekoBot.Modules.Administration await umsg.Channel.SendMessageAsync($"Removed channel **{voiceChannel.Name}**.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageChannels)] public async Task CreatVoiChanl(IUserMessage umsg, [Remainder] string channelName) @@ -406,7 +406,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync($"Created voice channel **{ch.Name}**, id `{ch.Id}`.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageChannels)] public async Task DelTxtChanl(IUserMessage umsg, [Remainder] ITextChannel channel) @@ -415,7 +415,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync($"Removed text channel **{channel.Name}**, id `{channel.Id}`.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageChannels)] public async Task CreaTxtChanl(IUserMessage umsg, [Remainder] string channelName) @@ -425,7 +425,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync($"Added text channel **{txtCh.Name}**, id `{txtCh.Id}`.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageChannels)] public async Task SetTopic(IUserMessage umsg, [Remainder] string topic = null) @@ -436,7 +436,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync(":ok: **New channel topic set.**").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageChannels)] public async Task SetChanlName(IUserMessage umsg, [Remainder] string name) @@ -449,7 +449,7 @@ namespace NadekoBot.Modules.Administration //delets her own messages, no perm required - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Prune(IUserMessage umsg) { @@ -462,7 +462,7 @@ namespace NadekoBot.Modules.Administration } // prune x - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(ChannelPermission.ManageMessages)] public async Task Prune(IUserMessage msg, int count) @@ -481,7 +481,7 @@ namespace NadekoBot.Modules.Administration } //prune @user [x] - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Prune(IUserMessage msg, IGuildUser user, int count = 100) { @@ -635,7 +635,7 @@ namespace NadekoBot.Modules.Administration //} - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.MentionEveryone)] public async Task MentionRole(IUserMessage umsg, params IRole[] roles) @@ -660,7 +660,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync(send).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Donators(IUserMessage umsg) { @@ -676,7 +676,7 @@ namespace NadekoBot.Modules.Administration } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Donadd(IUserMessage umsg, IUser donator, int amount) { diff --git a/src/NadekoBot/Modules/Administration/Commands/AutoAssignRoleCommands.cs b/src/NadekoBot/Modules/Administration/Commands/AutoAssignRoleCommands.cs index 1cde1716..b5aedcf4 100644 --- a/src/NadekoBot/Modules/Administration/Commands/AutoAssignRoleCommands.cs +++ b/src/NadekoBot/Modules/Administration/Commands/AutoAssignRoleCommands.cs @@ -42,7 +42,7 @@ namespace NadekoBot.Modules.Administration }; } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] public async Task AutoAssignRole(IUserMessage umsg, [Remainder] IRole role = null) diff --git a/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs b/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs index 36b00e9e..5012a644 100644 --- a/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs +++ b/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs @@ -70,7 +70,7 @@ namespace NadekoBot.Modules.Administration // } //} - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageGuild)] public async Task Jcsc(IUserMessage imsg, int token) @@ -84,7 +84,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync(":ok:").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageGuild)] public async Task Lcsc(IUserMessage imsg) diff --git a/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs b/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs index 6cff7855..e04b9a46 100644 --- a/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs +++ b/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs @@ -482,7 +482,7 @@ namespace NadekoBot.Modules.Administration return channel; } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task LogServer(IUserMessage msg) { @@ -504,7 +504,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("`Logging disabled.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task LogIgnore(IUserMessage imsg) { @@ -527,7 +527,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync($"`Logging will no longer ignore {channel.Name} ({channel.Id}) channel.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task LogAdd(IUserMessage msg, [Remainder] string eventName) { @@ -597,7 +597,7 @@ namespace NadekoBot.Modules.Administration // } //} - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task UserPresence(IUserMessage imsg) { @@ -619,7 +619,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync($"`Stopped logging user presence updates.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task VoicePresence(IUserMessage imsg) { diff --git a/src/NadekoBot/Modules/Administration/Commands/MessageRepeater.cs b/src/NadekoBot/Modules/Administration/Commands/MessageRepeater.cs index 57c5fe9a..7902102c 100644 --- a/src/NadekoBot/Modules/Administration/Commands/MessageRepeater.cs +++ b/src/NadekoBot/Modules/Administration/Commands/MessageRepeater.cs @@ -73,7 +73,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageMessages)] public async Task RepeatInvoke(IUserMessage imsg) @@ -90,7 +90,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("🔄 " + rep.Repeater.Message).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Repeat(IUserMessage imsg) { @@ -110,7 +110,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("`No message is repeating.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Repeat(IUserMessage imsg, int minutes, [Remainder] string message) { diff --git a/src/NadekoBot/Modules/Administration/Commands/PlayingRotateCommands.cs b/src/NadekoBot/Modules/Administration/Commands/PlayingRotateCommands.cs index 59baf3d4..3476b258 100644 --- a/src/NadekoBot/Modules/Administration/Commands/PlayingRotateCommands.cs +++ b/src/NadekoBot/Modules/Administration/Commands/PlayingRotateCommands.cs @@ -86,7 +86,7 @@ namespace NadekoBot.Modules.Administration {"%queued%", () => Music.Music.MusicPlayers.Sum(kvp => kvp.Value.Playlist.Count).ToString()} }; - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task RotatePlaying(IUserMessage umsg) { @@ -106,7 +106,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("`Rotating playing status disabled.`"); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task AddPlaying(IUserMessage umsg, [Remainder] string status) { @@ -122,7 +122,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("`Added.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task ListPlaying(IUserMessage umsg) { @@ -144,7 +144,7 @@ namespace NadekoBot.Modules.Administration } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task RemovePlaying(IUserMessage umsg, int index) { diff --git a/src/NadekoBot/Modules/Administration/Commands/RatelimitCommand.cs b/src/NadekoBot/Modules/Administration/Commands/RatelimitCommand.cs index c127c439..fa606adb 100644 --- a/src/NadekoBot/Modules/Administration/Commands/RatelimitCommand.cs +++ b/src/NadekoBot/Modules/Administration/Commands/RatelimitCommand.cs @@ -84,7 +84,7 @@ namespace NadekoBot.Modules.Administration }; } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Slowmode(IUserMessage umsg, int msg = 1, int perSec = 5) { diff --git a/src/NadekoBot/Modules/Administration/Commands/SelfAssignedRolesCommand.cs b/src/NadekoBot/Modules/Administration/Commands/SelfAssignedRolesCommand.cs index 8a05ceea..8ecfd242 100644 --- a/src/NadekoBot/Modules/Administration/Commands/SelfAssignedRolesCommand.cs +++ b/src/NadekoBot/Modules/Administration/Commands/SelfAssignedRolesCommand.cs @@ -19,7 +19,7 @@ namespace NadekoBot.Modules.Administration public class SelfAssignedRolesCommands { - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] public async Task Asar(IUserMessage umsg, [Remainder] IRole role) @@ -49,7 +49,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync(msg.ToString()).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] public async Task Rsar(IUserMessage umsg, [Remainder] IRole role) @@ -70,7 +70,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync($":ok:**{role.Name}** has been removed from the list of self-assignable roles").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Lsar(IUserMessage umsg) { @@ -105,7 +105,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync(msg.ToString() + "\n\n" + removeMsg.ToString()).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] public async Task Tesar(IUserMessage umsg) @@ -124,7 +124,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("Self assigned roles are now " + exl); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Iam(IUserMessage umsg, [Remainder] IRole role) { @@ -182,7 +182,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Iamnot(IUserMessage umsg, [Remainder] IRole role) { diff --git a/src/NadekoBot/Modules/Administration/Commands/ServerGreetCommands.cs b/src/NadekoBot/Modules/Administration/Commands/ServerGreetCommands.cs index 53a5abd5..b462ebd5 100644 --- a/src/NadekoBot/Modules/Administration/Commands/ServerGreetCommands.cs +++ b/src/NadekoBot/Modules/Administration/Commands/ServerGreetCommands.cs @@ -106,7 +106,7 @@ namespace NadekoBot.Modules.Administration return Task.CompletedTask; } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageGuild)] public async Task GreetDel(IUserMessage umsg) @@ -128,7 +128,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("`Automatic deletion of greet messages has been disabled.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageGuild)] public async Task Greet(IUserMessage umsg) @@ -151,7 +151,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("Greet announcements disabled.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageGuild)] public async Task GreetMsg(IUserMessage umsg, [Remainder] string text) @@ -180,7 +180,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("Enable greet messsages by typing `.greet`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageGuild)] public async Task GreetDm(IUserMessage umsg) @@ -202,7 +202,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("Greet announcements disabled.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageGuild)] public async Task GreetDmMsg(IUserMessage umsg, [Remainder] string text) @@ -231,7 +231,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("Enable DM greet messsages by typing `.greetdm`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageGuild)] public async Task Bye(IUserMessage umsg) @@ -254,7 +254,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("Bye announcements disabled.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageGuild)] public async Task ByeMsg(IUserMessage umsg, [Remainder] string text) @@ -283,7 +283,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("Enable bye messsages by typing `.bye`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageGuild)] public async Task ByeDel(IUserMessage umsg) diff --git a/src/NadekoBot/Modules/Administration/Commands/VoicePlusTextCommands.cs b/src/NadekoBot/Modules/Administration/Commands/VoicePlusTextCommands.cs index 75f4d649..e3a15e49 100644 --- a/src/NadekoBot/Modules/Administration/Commands/VoicePlusTextCommands.cs +++ b/src/NadekoBot/Modules/Administration/Commands/VoicePlusTextCommands.cs @@ -97,7 +97,7 @@ namespace NadekoBot.Modules.Administration private string GetChannelName(string voiceName) => channelNameRegex.Replace(voiceName, "").Trim().Replace(" ", "-").TrimTo(90, true) + "-voice"; - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] [RequirePermission(GuildPermission.ManageChannels)] @@ -138,7 +138,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync(ex.ToString()).ConfigureAwait(false); } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageChannels)] [RequirePermission(GuildPermission.ManageRoles)] diff --git a/src/NadekoBot/Modules/ClashOfClans/ClashOfClans.cs b/src/NadekoBot/Modules/ClashOfClans/ClashOfClans.cs index c7e8e708..04ac67aa 100644 --- a/src/NadekoBot/Modules/ClashOfClans/ClashOfClans.cs +++ b/src/NadekoBot/Modules/ClashOfClans/ClashOfClans.cs @@ -51,7 +51,7 @@ namespace NadekoBot.Modules.ClashOfClans } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task CreateWar(IUserMessage umsg, int size, [Remainder] string enemyClan = null) { @@ -84,7 +84,7 @@ namespace NadekoBot.Modules.ClashOfClans await channel.SendMessageAsync($"❗🔰**CREATED CLAN WAR AGAINST {cw.ShortPrint()}**").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task StartWar(IUserMessage umsg, [Remainder] string number = null) { @@ -112,7 +112,7 @@ namespace NadekoBot.Modules.ClashOfClans SaveWar(war); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task ListWar(IUserMessage umsg, [Remainder] string number = null) { @@ -155,7 +155,7 @@ namespace NadekoBot.Modules.ClashOfClans await channel.SendMessageAsync(warsInfo.Item1[warsInfo.Item2].ToPrettyString()).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Claim(IUserMessage umsg, int number, int baseNumber, [Remainder] string other_name = null) { @@ -183,7 +183,7 @@ namespace NadekoBot.Modules.ClashOfClans } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task ClaimFinish1(IUserMessage umsg, int number, int baseNumber, [Remainder] string other_name = null) { @@ -191,7 +191,7 @@ namespace NadekoBot.Modules.ClashOfClans await FinishClaim(umsg, number, baseNumber, other_name, 1); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task ClaimFinish2(IUserMessage umsg, int number, int baseNumber, [Remainder] string other_name = null) { @@ -199,7 +199,7 @@ namespace NadekoBot.Modules.ClashOfClans await FinishClaim(umsg, number, baseNumber, other_name, 2); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task ClaimFinish(IUserMessage umsg, int number, int baseNumber, [Remainder] string other_name = null) { @@ -207,7 +207,7 @@ namespace NadekoBot.Modules.ClashOfClans await FinishClaim(umsg, number, baseNumber, other_name); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task EndWar(IUserMessage umsg, int number) { @@ -228,7 +228,7 @@ namespace NadekoBot.Modules.ClashOfClans warsInfo.Item1.RemoveAt(warsInfo.Item2); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Unclaim(IUserMessage umsg, int number, [Remainder] string otherName = null) { diff --git a/src/NadekoBot/Modules/Gambling/Commands/AnimalRacing.cs b/src/NadekoBot/Modules/Gambling/Commands/AnimalRacing.cs index 15ea002d..8e34016c 100644 --- a/src/NadekoBot/Modules/Gambling/Commands/AnimalRacing.cs +++ b/src/NadekoBot/Modules/Gambling/Commands/AnimalRacing.cs @@ -24,7 +24,7 @@ namespace NadekoBot.Modules.Gambling } public static ConcurrentDictionary AnimalRaces = new ConcurrentDictionary(); - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Race(IUserMessage umsg) { @@ -36,7 +36,7 @@ namespace NadekoBot.Modules.Gambling await channel.SendMessageAsync("🏁 `Failed starting a race. Another race is probably running.`"); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task JoinRace(IUserMessage umsg, int amount = 0) { diff --git a/src/NadekoBot/Modules/Gambling/Commands/DiceRollCommand.cs b/src/NadekoBot/Modules/Gambling/Commands/DiceRollCommand.cs index 95ab1cf8..10972871 100644 --- a/src/NadekoBot/Modules/Gambling/Commands/DiceRollCommand.cs +++ b/src/NadekoBot/Modules/Gambling/Commands/DiceRollCommand.cs @@ -21,7 +21,7 @@ namespace NadekoBot.Modules.Gambling { private Regex dndRegex { get; } = new Regex(@"(?\d+)d(?\d+)", RegexOptions.Compiled); - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Roll(IUserMessage umsg) { @@ -44,7 +44,7 @@ namespace NadekoBot.Modules.Gambling await channel.SendFileAsync(imageStream, "dice.png", $"{umsg.Author.Mention} rolled " + Format.Code(gen.ToString())).ConfigureAwait(false); } //todo merge into internallDndRoll and internalRoll - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Roll(IUserMessage umsg, string arg) { @@ -74,7 +74,7 @@ namespace NadekoBot.Modules.Gambling } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Roll(IUserMessage umsg, int num) { @@ -128,7 +128,7 @@ namespace NadekoBot.Modules.Gambling await channel.SendFileAsync(ms, "dice.png", $"{umsg.Author.Mention} rolled {values.Count} {(values.Count == 1 ? "die" : "dice")}. Total: **{values.Sum()}** Average: **{(values.Sum() / (1.0f * values.Count)).ToString("N2")}**").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Rolluo(IUserMessage umsg, string arg) { @@ -158,7 +158,7 @@ namespace NadekoBot.Modules.Gambling } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Rolluo(IUserMessage umsg, int num) { @@ -211,7 +211,7 @@ namespace NadekoBot.Modules.Gambling await channel.SendFileAsync(ms, "dice.png", $"{umsg.Author.Mention} rolled {values.Count} {(values.Count == 1 ? "die" : "dice")}. Total: **{values.Sum()}** Average: **{(values.Sum() / (1.0f * values.Count)).ToString("N2")}**").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task NRoll(IUserMessage umsg, [Remainder] string range) { diff --git a/src/NadekoBot/Modules/Gambling/Commands/DrawCommand.cs b/src/NadekoBot/Modules/Gambling/Commands/DrawCommand.cs index e7f36388..9a455ac5 100644 --- a/src/NadekoBot/Modules/Gambling/Commands/DrawCommand.cs +++ b/src/NadekoBot/Modules/Gambling/Commands/DrawCommand.cs @@ -18,7 +18,7 @@ namespace NadekoBot.Modules.Gambling private static readonly ConcurrentDictionary AllDecks = new ConcurrentDictionary(); private const string cardsPath = "data/images/cards"; - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Draw(IUserMessage msg) { @@ -50,7 +50,7 @@ namespace NadekoBot.Modules.Gambling } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Shuffle(IUserMessage imsg) { diff --git a/src/NadekoBot/Modules/Gambling/Commands/FlipCoinCommand.cs b/src/NadekoBot/Modules/Gambling/Commands/FlipCoinCommand.cs index c1888913..05096884 100644 --- a/src/NadekoBot/Modules/Gambling/Commands/FlipCoinCommand.cs +++ b/src/NadekoBot/Modules/Gambling/Commands/FlipCoinCommand.cs @@ -19,7 +19,7 @@ namespace NadekoBot.Modules.Gambling private const string tailsPath = "data/images/coins/tails.png"; public FlipCoinCommands() { } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Flip(IUserMessage imsg, int count = 1) { @@ -47,7 +47,7 @@ namespace NadekoBot.Modules.Gambling await channel.SendFileAsync(imgs.Merge().ToStream(), $"{count} coins.png").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Betflip(IUserMessage umsg, int amount, string guess) { diff --git a/src/NadekoBot/Modules/Gambling/Gambling.cs b/src/NadekoBot/Modules/Gambling/Gambling.cs index 589441ac..df318cfd 100644 --- a/src/NadekoBot/Modules/Gambling/Gambling.cs +++ b/src/NadekoBot/Modules/Gambling/Gambling.cs @@ -33,7 +33,7 @@ namespace NadekoBot.Modules.Gambling } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Raffle(IUserMessage umsg, [Remainder] IRole role = null) { @@ -47,7 +47,7 @@ namespace NadekoBot.Modules.Gambling await channel.SendMessageAsync($"**Raffled user:** {usr.Username} (id: {usr.Id})").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Cash(IUserMessage umsg, [Remainder] IUser user = null) { @@ -65,7 +65,7 @@ namespace NadekoBot.Modules.Gambling await channel.SendMessageAsync($"{user.Username} has {amount} {config.CurrencySign}").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Give(IUserMessage umsg, long amount, [Remainder] IGuildUser receiver) { @@ -83,12 +83,12 @@ namespace NadekoBot.Modules.Gambling } //todo owner only - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public Task Award(IUserMessage umsg, long amount, [Remainder] IGuildUser usr) => Award(umsg, amount, usr.Id); - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Award(IUserMessage umsg, long amount, [Remainder] ulong usrId) { @@ -122,7 +122,7 @@ namespace NadekoBot.Modules.Gambling // await channel.SendMessageAsync($"{umsg.Author.Mention} successfully took {amount} {Gambling.CurrencyName}s from <@{usrId}>!").ConfigureAwait(false); //} - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task BetRoll(IUserMessage umsg, long amount) { @@ -172,7 +172,7 @@ namespace NadekoBot.Modules.Gambling await channel.SendMessageAsync(str).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Leaderboard(IUserMessage umsg) { diff --git a/src/NadekoBot/Modules/Games/Commands/LeetCommands.cs b/src/NadekoBot/Modules/Games/Commands/LeetCommands.cs index 63e4ca54..4f0f85af 100644 --- a/src/NadekoBot/Modules/Games/Commands/LeetCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/LeetCommands.cs @@ -12,7 +12,7 @@ namespace NadekoBot.Modules.Games { public partial class Games { - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Leet(IUserMessage umsg, int level, [Remainder] string text = null) { diff --git a/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs b/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs index 689aea42..f2474d50 100644 --- a/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs @@ -96,7 +96,7 @@ namespace NadekoBot.Modules.Games }); return Task.CompletedTask; } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Pick(IUserMessage imsg) { @@ -129,7 +129,7 @@ namespace NadekoBot.Modules.Games }); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Plant(IUserMessage imsg) { @@ -160,7 +160,7 @@ namespace NadekoBot.Modules.Games plantedFlowers.AddOrUpdate(channel.Id, new List() { msg }, (id, old) => { old.Add(msg); return old; }); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageMessages)] public async Task Gencurrency(IUserMessage imsg) diff --git a/src/NadekoBot/Modules/Games/Commands/PollCommands.cs b/src/NadekoBot/Modules/Games/Commands/PollCommands.cs index 711873d3..0f2c31e5 100644 --- a/src/NadekoBot/Modules/Games/Commands/PollCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/PollCommands.cs @@ -14,7 +14,7 @@ namespace NadekoBot.Modules.Games { public static ConcurrentDictionary ActivePolls = new ConcurrentDictionary(); - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Poll(IUserMessage umsg, [Remainder] string arg = null) { @@ -35,7 +35,7 @@ namespace NadekoBot.Modules.Games } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Pollend(IUserMessage umsg) { diff --git a/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs b/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs index 7817a61a..b2b05d19 100644 --- a/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs @@ -139,7 +139,7 @@ namespace NadekoBot.Modules.Games RunningContests = new ConcurrentDictionary(); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task TypeStart(IUserMessage msg) { @@ -160,7 +160,7 @@ namespace NadekoBot.Modules.Games } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task TypeStop(IUserMessage imsg) { diff --git a/src/NadekoBot/Modules/Games/Commands/TriviaCommands.cs b/src/NadekoBot/Modules/Games/Commands/TriviaCommands.cs index 63a8a820..8556ac00 100644 --- a/src/NadekoBot/Modules/Games/Commands/TriviaCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/TriviaCommands.cs @@ -17,7 +17,7 @@ namespace NadekoBot.Modules.Games { public static ConcurrentDictionary RunningTrivias = new ConcurrentDictionary(); - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Trivia(IUserMessage umsg, params string[] args) { @@ -44,7 +44,7 @@ namespace NadekoBot.Modules.Games await channel.SendMessageAsync("Trivia game is already running on this server.\n" + trivia.CurrentQuestion).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Tl(IUserMessage umsg) { @@ -57,7 +57,7 @@ namespace NadekoBot.Modules.Games await channel.SendMessageAsync("No trivia is running on this server.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Tq(IUserMessage umsg) { diff --git a/src/NadekoBot/Modules/Games/Games.cs b/src/NadekoBot/Modules/Games/Games.cs index 99083ae7..ea57db12 100644 --- a/src/NadekoBot/Modules/Games/Games.cs +++ b/src/NadekoBot/Modules/Games/Games.cs @@ -27,7 +27,7 @@ namespace NadekoBot.Modules.Games { } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Choose(IUserMessage umsg, [Remainder] string list = null) { @@ -41,7 +41,7 @@ namespace NadekoBot.Modules.Games await channel.SendMessageAsync(listArr[rng.Next(0, listArr.Length)]).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task _8Ball(IUserMessage umsg, [Remainder] string question = null) { @@ -54,7 +54,7 @@ namespace NadekoBot.Modules.Games 🎱 `8Ball Answers` __**{_8BallResponses.Shuffle().FirstOrDefault()}**__").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Rps(IUserMessage umsg, string input) { @@ -104,7 +104,7 @@ namespace NadekoBot.Modules.Games await channel.SendMessageAsync(msg).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Linux(IUserMessage umsg, string guhnoo, string loonix) { diff --git a/src/NadekoBot/Modules/Help/Help.cs b/src/NadekoBot/Modules/Help/Help.cs index 070b6930..40775a4e 100644 --- a/src/NadekoBot/Modules/Help/Help.cs +++ b/src/NadekoBot/Modules/Help/Help.cs @@ -9,6 +9,8 @@ using System; using System.IO; using System.Text; using Discord.WebSocket; +using System.Collections; +using System.Collections.Generic; namespace NadekoBot.Modules.Help { @@ -25,17 +27,17 @@ namespace NadekoBot.Modules.Help { } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Modules(IUserMessage umsg) { var channel = (ITextChannel)umsg.Channel; - await channel.SendMessageAsync("`List of modules:` \n• " + string.Join("\n• ", _commands.Modules.Select(m => m.Name)) + $"\n`Type \"-commands module_name\" to get a list of commands in that module.`") + await channel.SendMessageAsync("`List of modules:` ```xl\n• " + string.Join("\n• ", _commands.Modules.Select(m => m.Name)) + $"\n``` `Type \"-commands module_name\" to get a list of commands in that module.`") .ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Commands(IUserMessage umsg, [Remainder] string module = null) { @@ -46,7 +48,9 @@ namespace NadekoBot.Modules.Help return; var cmds = _commands.Commands.Where(c => c.Module.Name.ToUpperInvariant().StartsWith(module)) .OrderBy(c => c.Text) + .Distinct(new CommandTextEqualityComparer()) .AsEnumerable(); + var cmdsArray = cmds as Command[] ?? cmds.ToArray(); if (!cmdsArray.Any()) { @@ -64,7 +68,7 @@ namespace NadekoBot.Modules.Help await channel.SendMessageAsync($"`You can type \"-h command_name\" to see the help about that specific command.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task H(IUserMessage umsg, [Remainder] string comToFind = null) { @@ -88,11 +92,11 @@ namespace NadekoBot.Modules.Help if (alias != null) str += $" / `{ alias }`"; if (com != null) - await channel.SendMessageAsync(str + $@"{Environment.NewLine}**Desc:** {com.Description} + await channel.SendMessageAsync(str + $@"{Environment.NewLine}**Desc:** {com.Remarks} **Usage:** {com.Summary}").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Hgit(IUserMessage umsg) { @@ -108,7 +112,7 @@ namespace NadekoBot.Modules.Help helpstr.AppendLine("----------------|--------------|-------"); lastModule = com.Module.Name; } - helpstr.AppendLine($"`{com.Text}` {string.Join(" ", com.Aliases.Skip(1).Select(a=>"`"+a+"`"))} | {com.Description} | {com.Summary}"); + helpstr.AppendLine($"`{com.Text}` {string.Join(" ", com.Aliases.Skip(1).Select(a=>"`"+a+"`"))} | {com.Remarks} | {com.Summary}"); } helpstr = helpstr.Replace((await NadekoBot.Client.GetCurrentUserAsync()).Username , "@BotName"); #if DEBUG @@ -118,7 +122,7 @@ namespace NadekoBot.Modules.Help #endif } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Guide(IUserMessage umsg) { @@ -129,7 +133,7 @@ namespace NadekoBot.Modules.Help **Hosting Guides and docs can be found here**: ").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Donate(IUserMessage umsg) { @@ -143,4 +147,12 @@ Don't forget to leave your discord name or id in the message. **Thank you** ♥️").ConfigureAwait(false); } } + + public class CommandTextEqualityComparer : IEqualityComparer + { + public bool Equals(Command x, Command y) => x.Text == y.Text; + + public int GetHashCode(Command obj) => obj.Text.GetHashCode(); + + } } \ No newline at end of file diff --git a/src/NadekoBot/Modules/Music/Music.cs b/src/NadekoBot/Modules/Music/Music.cs index b2709a72..db9b285f 100644 --- a/src/NadekoBot/Modules/Music/Music.cs +++ b/src/NadekoBot/Modules/Music/Music.cs @@ -35,7 +35,7 @@ namespace NadekoBot.Modules.Music _google = google; } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public Task Next(IUserMessage umsg) { @@ -48,7 +48,7 @@ namespace NadekoBot.Modules.Music return Task.CompletedTask; } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public Task Stop(IUserMessage umsg) { @@ -64,7 +64,7 @@ namespace NadekoBot.Modules.Music return Task.CompletedTask; } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public Task Destroy(IUserMessage umsg) { @@ -77,7 +77,7 @@ namespace NadekoBot.Modules.Music return Task.CompletedTask; } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Pause(IUserMessage umsg) { @@ -94,7 +94,7 @@ namespace NadekoBot.Modules.Music await channel.SendMessageAsync("🎵`Music Player unpaused.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Queue(IUserMessage umsg, [Remainder] string query) { @@ -108,7 +108,7 @@ namespace NadekoBot.Modules.Music } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task SoundCloudQueue(IUserMessage umsg, [Remainder] string query) { @@ -122,7 +122,7 @@ namespace NadekoBot.Modules.Music } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task ListQueue(IUserMessage umsg, int page = 1) { @@ -155,7 +155,7 @@ namespace NadekoBot.Modules.Music await channel.SendMessageAsync(toSend + string.Join("\n", musicPlayer.Playlist.Skip(startAt).Take(15).Select(v => $"`{number++}.` {v.PrettyName}"))).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task NowPlaying(IUserMessage umsg) { @@ -170,7 +170,7 @@ namespace NadekoBot.Modules.Music $"{currentSong.PrettyCurrentTime()}").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Volume(IUserMessage umsg, int val) { @@ -186,7 +186,7 @@ namespace NadekoBot.Modules.Music await channel.SendMessageAsync($"🎵 `Volume set to {volume}%`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Defvol(IUserMessage umsg, [Remainder] int val) { @@ -205,7 +205,7 @@ namespace NadekoBot.Modules.Music await channel.SendMessageAsync($"🎵 `Default volume set to {val}%`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public Task Mute(IUserMessage umsg) { @@ -219,7 +219,7 @@ namespace NadekoBot.Modules.Music return Task.CompletedTask; } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public Task Max(IUserMessage umsg) { @@ -233,7 +233,7 @@ namespace NadekoBot.Modules.Music return Task.CompletedTask; } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Shuffle(IUserMessage umsg) { @@ -253,7 +253,7 @@ namespace NadekoBot.Modules.Music await channel.SendMessageAsync("🎵 `Songs shuffled.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Playlist(IUserMessage umsg, [Remainder] string playlist) { @@ -295,7 +295,7 @@ namespace NadekoBot.Modules.Music await msg.ModifyAsync(m => m.Content = "🎵 `Playlist queue complete.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task SoundCloudPl(IUserMessage umsg, [Remainder] string pl) { @@ -332,7 +332,7 @@ namespace NadekoBot.Modules.Music } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task LocalPl(IUserMessage umsg, [Remainder] string directory) { @@ -361,7 +361,7 @@ namespace NadekoBot.Modules.Music catch { } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Radio(IUserMessage umsg, string radio_link) { @@ -379,7 +379,7 @@ namespace NadekoBot.Modules.Music } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Local(IUserMessage umsg, [Remainder] string path) { @@ -391,7 +391,7 @@ namespace NadekoBot.Modules.Music } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Move(IUserMessage umsg) { @@ -403,7 +403,7 @@ namespace NadekoBot.Modules.Music await musicPlayer.MoveToVoiceChannel(voiceChannel); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Remove(IUserMessage umsg, int num) { @@ -423,7 +423,7 @@ namespace NadekoBot.Modules.Music await channel.SendMessageAsync($"🎵**Track {song.PrettyName} at position `#{num}` has been removed.**").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Remove(IUserMessage umsg, string all) { @@ -438,7 +438,7 @@ namespace NadekoBot.Modules.Music return; } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task MoveSong(IUserMessage umsg, [Remainder] string fromto) { @@ -474,7 +474,7 @@ namespace NadekoBot.Modules.Music } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task SetMaxQueue(IUserMessage umsg, uint size) { @@ -488,7 +488,7 @@ namespace NadekoBot.Modules.Music await channel.SendMessageAsync($"🎵 `Max queue set to {(size == 0 ? ("unlimited") : size + " tracks")}`"); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task ReptCurSong(IUserMessage umsg) { @@ -506,7 +506,7 @@ namespace NadekoBot.Modules.Music .ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task RepeatPl(IUserMessage umsg) { @@ -551,7 +551,7 @@ namespace NadekoBot.Modules.Music //} - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Goto(IUserMessage umsg, int time) { @@ -588,7 +588,7 @@ namespace NadekoBot.Modules.Music await channel.SendMessageAsync($"`Skipped to {minutes}:{seconds}`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task GetLink(IUserMessage umsg, int index = 0) { @@ -623,7 +623,7 @@ namespace NadekoBot.Modules.Music } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Autoplay(IUserMessage umsg) { diff --git a/src/NadekoBot/Modules/NSFW/NSFW.cs b/src/NadekoBot/Modules/NSFW/NSFW.cs index cbcfc15d..3b7a6e62 100644 --- a/src/NadekoBot/Modules/NSFW/NSFW.cs +++ b/src/NadekoBot/Modules/NSFW/NSFW.cs @@ -22,7 +22,7 @@ namespace NadekoBot.Modules.NSFW { } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Hentai(IUserMessage umsg, [Remainder] string tag = null) { @@ -41,7 +41,7 @@ namespace NadekoBot.Modules.NSFW await channel.SendMessageAsync(String.Join("\n\n", links)).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Danbooru(IUserMessage umsg, [Remainder] string tag = null) { @@ -55,7 +55,7 @@ namespace NadekoBot.Modules.NSFW await channel.SendMessageAsync(link).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Gelbooru(IUserMessage umsg, [Remainder] string tag = null) { @@ -69,7 +69,7 @@ namespace NadekoBot.Modules.NSFW await channel.SendMessageAsync(link).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Rule34(IUserMessage umsg, [Remainder] string tag = null) { @@ -83,7 +83,7 @@ namespace NadekoBot.Modules.NSFW await channel.SendMessageAsync(link).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task E621(IUserMessage umsg, [Remainder] string tag = null) { @@ -97,7 +97,7 @@ namespace NadekoBot.Modules.NSFW await channel.SendMessageAsync(link).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Cp(IUserMessage umsg) { @@ -106,7 +106,7 @@ namespace NadekoBot.Modules.NSFW await channel.SendMessageAsync("http://i.imgur.com/MZkY1md.jpg").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Boobs(IUserMessage umsg) { @@ -126,7 +126,7 @@ namespace NadekoBot.Modules.NSFW } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Butts(IUserMessage umsg) { diff --git a/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs b/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs index f1c668c7..bb131b14 100644 --- a/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs +++ b/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs @@ -49,8 +49,10 @@ namespace NadekoBot.Modules.Permissions { if (!((perm.SecondaryTarget == SecondaryPermissionType.Command && perm.SecondaryTargetName == command.Text.ToLowerInvariant()) || - (perm.SecondaryTarget == SecondaryPermissionType.Module && - perm.SecondaryTargetName == command.Module.Name.ToLowerInvariant()))) + ((perm.SecondaryTarget == SecondaryPermissionType.Module || perm.SecondaryTarget == SecondaryPermissionType.AllCommands) && + perm.SecondaryTargetName == command.Module.Name.ToLowerInvariant()) || + perm.SecondaryTarget == SecondaryPermissionType.AllModules || + (perm.SecondaryTarget == SecondaryPermissionType.AllCommands && perm.SecondaryTargetName == command.Module.Name.ToLowerInvariant()))) return null; switch (perm.PrimaryTarget) @@ -76,7 +78,7 @@ namespace NadekoBot.Modules.Permissions public static string GetCommand(this Permission perm) { - var com = NadekoBot.ModulePrefixes[typeof(Permissions).Name]; + var com = ""; switch (perm.PrimaryTarget) { case PrimaryPermissionType.User: @@ -98,6 +100,12 @@ namespace NadekoBot.Modules.Permissions case SecondaryPermissionType.Command: com += "c"; break; + case SecondaryPermissionType.AllCommands: + com = "a" + com + "c"; + break; + case SecondaryPermissionType.AllModules: + com = "a" + com + "m"; + break; } com += " " + perm.SecondaryTargetName + " " + (perm.State ? "enable" : "disable") + " "; @@ -114,7 +122,7 @@ namespace NadekoBot.Modules.Permissions break; } - return com; + return NadekoBot.ModulePrefixes[typeof(Permissions).Name] + com; } } diff --git a/src/NadekoBot/Modules/Permissions/Permissions.cs b/src/NadekoBot/Modules/Permissions/Permissions.cs index 8a9357d3..d35c8810 100644 --- a/src/NadekoBot/Modules/Permissions/Permissions.cs +++ b/src/NadekoBot/Modules/Permissions/Permissions.cs @@ -20,7 +20,7 @@ namespace NadekoBot.Modules.Permissions { } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task ListPerms(IUserMessage msg) { @@ -41,7 +41,7 @@ namespace NadekoBot.Modules.Permissions await channel.SendMessageAsync(toSend).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task UsrCmd(IUserMessage imsg, Command command, PermissionAction action, IGuildUser user) { @@ -62,7 +62,7 @@ namespace NadekoBot.Modules.Permissions await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{command.Text}` command for `{user}` user.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task UsrMdl(IUserMessage imsg, Module module, PermissionAction action, IGuildUser user) { @@ -82,5 +82,216 @@ namespace NadekoBot.Modules.Permissions } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{module.Name}` module for `{user}` user.").ConfigureAwait(false); } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task RoleCmd(IUserMessage imsg, Command command, PermissionAction action, IRole role) + { + var channel = (ITextChannel)imsg.Channel; + + using (var uow = DbHandler.UnitOfWork()) + { + uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + { + PrimaryTarget = PrimaryPermissionType.Role, + PrimaryTargetId = role.Id, + SecondaryTarget = SecondaryPermissionType.Command, + SecondaryTargetName = command.Text.ToLowerInvariant(), + State = action.Value, + }); + await uow.CompleteAsync().ConfigureAwait(false); + } + await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{command.Text}` command for `{role}` role.").ConfigureAwait(false); + } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task RoleMdl(IUserMessage imsg, Module module, PermissionAction action, IRole role) + { + var channel = (ITextChannel)imsg.Channel; + + using (var uow = DbHandler.UnitOfWork()) + { + uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + { + PrimaryTarget = PrimaryPermissionType.Role, + PrimaryTargetId = role.Id, + SecondaryTarget = SecondaryPermissionType.Module, + SecondaryTargetName = module.Name.ToLowerInvariant(), + State = action.Value, + }); + await uow.CompleteAsync().ConfigureAwait(false); + } + await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{module.Name}` module for `{role}` role.").ConfigureAwait(false); + } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task ChnlCmd(IUserMessage imsg, Command command, PermissionAction action, ITextChannel chnl) + { + var channel = (ITextChannel)imsg.Channel; + + using (var uow = DbHandler.UnitOfWork()) + { + uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + { + PrimaryTarget = PrimaryPermissionType.Channel, + PrimaryTargetId = chnl.Id, + SecondaryTarget = SecondaryPermissionType.Command, + SecondaryTargetName = command.Text.ToLowerInvariant(), + State = action.Value, + }); + await uow.CompleteAsync().ConfigureAwait(false); + } + await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{command.Text}` command for `{chnl}` channel.").ConfigureAwait(false); + } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task ChnlMdl(IUserMessage imsg, Module module, PermissionAction action, ITextChannel chnl) + { + var channel = (ITextChannel)imsg.Channel; + + using (var uow = DbHandler.UnitOfWork()) + { + uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + { + PrimaryTarget = PrimaryPermissionType.Channel, + PrimaryTargetId = chnl.Id, + SecondaryTarget = SecondaryPermissionType.Module, + SecondaryTargetName = module.Name.ToLowerInvariant(), + State = action.Value, + }); + await uow.CompleteAsync().ConfigureAwait(false); + } + await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{module.Name}` module for `{chnl}` channel.").ConfigureAwait(false); + } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task AllChnlMdls(IUserMessage imsg, PermissionAction action, ITextChannel chnl) + { + var channel = (ITextChannel)imsg.Channel; + + using (var uow = DbHandler.UnitOfWork()) + { + uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + { + PrimaryTarget = PrimaryPermissionType.Channel, + PrimaryTargetId = chnl.Id, + SecondaryTarget = SecondaryPermissionType.AllModules, + SecondaryTargetName = "*", + State = action.Value, + }); + await uow.CompleteAsync().ConfigureAwait(false); + } + await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL MODULES` for `{chnl}` channel.").ConfigureAwait(false); + } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task AllRoleMdls(IUserMessage imsg, PermissionAction action, IRole role) + { + var channel = (ITextChannel)imsg.Channel; + + using (var uow = DbHandler.UnitOfWork()) + { + uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + { + PrimaryTarget = PrimaryPermissionType.Role, + PrimaryTargetId = role.Id, + SecondaryTarget = SecondaryPermissionType.AllModules, + SecondaryTargetName = "*", + State = action.Value, + }); + await uow.CompleteAsync().ConfigureAwait(false); + } + await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL MODULES` for `{role}` role.").ConfigureAwait(false); + } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task AllUserMdls(IUserMessage imsg, PermissionAction action, IUser user) + { + var channel = (ITextChannel)imsg.Channel; + + using (var uow = DbHandler.UnitOfWork()) + { + uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + { + PrimaryTarget = PrimaryPermissionType.User, + PrimaryTargetId = user.Id, + SecondaryTarget = SecondaryPermissionType.AllModules, + SecondaryTargetName = "*", + State = action.Value, + }); + await uow.CompleteAsync().ConfigureAwait(false); + } + await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL MODULES` for `{user}` user.").ConfigureAwait(false); + } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task AllChnlCmds(IUserMessage imsg, Module module, PermissionAction action, ITextChannel chnl) + { + var channel = (ITextChannel)imsg.Channel; + + using (var uow = DbHandler.UnitOfWork()) + { + uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + { + PrimaryTarget = PrimaryPermissionType.Channel, + PrimaryTargetId = chnl.Id, + SecondaryTarget = SecondaryPermissionType.Command, + SecondaryTargetName = module.Name.ToLowerInvariant(), + State = action.Value, + }); + await uow.CompleteAsync().ConfigureAwait(false); + } + await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL COMMANDS` from `{module.Name}` module for `{chnl}` channel.").ConfigureAwait(false); + } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task AllRoleCmds(IUserMessage imsg, Module module, PermissionAction action, IRole role) + { + var channel = (ITextChannel)imsg.Channel; + + using (var uow = DbHandler.UnitOfWork()) + { + uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + { + PrimaryTarget = PrimaryPermissionType.Role, + PrimaryTargetId = role.Id, + SecondaryTarget = SecondaryPermissionType.AllCommands, + SecondaryTargetName = module.Name.ToLowerInvariant(), + State = action.Value, + }); + await uow.CompleteAsync().ConfigureAwait(false); + } + await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL COMMANDS` from `{module.Name}` module for `{role}` role.").ConfigureAwait(false); + } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task AllUserCmds(IUserMessage imsg, Module module, PermissionAction action, IUser user) + { + var channel = (ITextChannel)imsg.Channel; + + using (var uow = DbHandler.UnitOfWork()) + { + uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + { + PrimaryTarget = PrimaryPermissionType.User, + PrimaryTargetId = user.Id, + SecondaryTarget = SecondaryPermissionType.AllCommands, + SecondaryTargetName = module.Name.ToLowerInvariant(), + State = action.Value, + }); + await uow.CompleteAsync().ConfigureAwait(false); + } + await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL COMMANDS` from `{module.Name}` module for `{user}` user.").ConfigureAwait(false); + } + } } diff --git a/src/NadekoBot/Modules/Pokemon/Pokemon.cs b/src/NadekoBot/Modules/Pokemon/Pokemon.cs index 31082944..870aa482 100644 --- a/src/NadekoBot/Modules/Pokemon/Pokemon.cs +++ b/src/NadekoBot/Modules/Pokemon/Pokemon.cs @@ -15,7 +15,7 @@ namespace NadekoBot.Modules.Games } //todo Dragon should PR this in - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Poke(IUserMessage umsg) { diff --git a/src/NadekoBot/Modules/Searches/Commands/AnimeSearchCommands.cs b/src/NadekoBot/Modules/Searches/Commands/AnimeSearchCommands.cs index dd96cf0e..15803201 100644 --- a/src/NadekoBot/Modules/Searches/Commands/AnimeSearchCommands.cs +++ b/src/NadekoBot/Modules/Searches/Commands/AnimeSearchCommands.cs @@ -29,7 +29,7 @@ namespace NadekoBot.Modules.Searches _log = LogManager.GetCurrentClassLogger(); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Anime(IUserMessage umsg, [Remainder] string query) { @@ -43,7 +43,7 @@ namespace NadekoBot.Modules.Searches await channel.SendMessageAsync(result.ToString() ?? "`No anime found.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Manga(IUserMessage umsg, [Remainder] string query) { diff --git a/src/NadekoBot/Modules/Searches/Commands/CalcCommand.cs b/src/NadekoBot/Modules/Searches/Commands/CalcCommand.cs index 1f9f00dc..b1faf848 100644 --- a/src/NadekoBot/Modules/Searches/Commands/CalcCommand.cs +++ b/src/NadekoBot/Modules/Searches/Commands/CalcCommand.cs @@ -14,7 +14,7 @@ namespace NadekoBot.Modules.Searches [Group] public partial class Searches { - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public static async Task Calculate(IUserMessage msg, [Remainder] string expression) { @@ -41,7 +41,7 @@ namespace NadekoBot.Modules.Searches } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task CalcOps(IUserMessage msg) { diff --git a/src/NadekoBot/Modules/Searches/Commands/JokeCommands.cs b/src/NadekoBot/Modules/Searches/Commands/JokeCommands.cs index 4bacbb52..1df3fcea 100644 --- a/src/NadekoBot/Modules/Searches/Commands/JokeCommands.cs +++ b/src/NadekoBot/Modules/Searches/Commands/JokeCommands.cs @@ -42,7 +42,7 @@ namespace NadekoBot.Modules.Searches _log.Warn("data/magicitems.json is missing. Magic items are not loaded."); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Yomama(IUserMessage umsg) { @@ -54,7 +54,7 @@ namespace NadekoBot.Modules.Searches } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Randjoke(IUserMessage umsg) { @@ -66,7 +66,7 @@ namespace NadekoBot.Modules.Searches } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task ChuckNorris(IUserMessage umsg) { @@ -78,7 +78,7 @@ namespace NadekoBot.Modules.Searches } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task WowJoke(IUserMessage umsg) { @@ -90,7 +90,7 @@ namespace NadekoBot.Modules.Searches await channel.SendMessageAsync(wowJokes[new NadekoRandom().Next(0, wowJokes.Count)].ToString()); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task MagicItem(IUserMessage umsg) { diff --git a/src/NadekoBot/Modules/Searches/Commands/LoLCommands.cs b/src/NadekoBot/Modules/Searches/Commands/LoLCommands.cs index 0dc758e3..d667b270 100644 --- a/src/NadekoBot/Modules/Searches/Commands/LoLCommands.cs +++ b/src/NadekoBot/Modules/Searches/Commands/LoLCommands.cs @@ -32,7 +32,7 @@ namespace NadekoBot.Modules.Searches "Doesn't matter what you ban really. Enemy will ban your main and you will lose." }; - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Lolban(IUserMessage umsg) { diff --git a/src/NadekoBot/Modules/Searches/Commands/MemegenCommands.cs b/src/NadekoBot/Modules/Searches/Commands/MemegenCommands.cs index 43b6fbe4..ffccb71a 100644 --- a/src/NadekoBot/Modules/Searches/Commands/MemegenCommands.cs +++ b/src/NadekoBot/Modules/Searches/Commands/MemegenCommands.cs @@ -15,7 +15,7 @@ namespace NadekoBot.Modules.Searches { public partial class Searches { - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Memelist(IUserMessage umsg) { @@ -29,7 +29,7 @@ namespace NadekoBot.Modules.Searches } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Memegen(IUserMessage umsg, string meme, string topText, string botText) { diff --git a/src/NadekoBot/Modules/Searches/Commands/OsuCommands.cs b/src/NadekoBot/Modules/Searches/Commands/OsuCommands.cs index fffe02e2..481e250b 100644 --- a/src/NadekoBot/Modules/Searches/Commands/OsuCommands.cs +++ b/src/NadekoBot/Modules/Searches/Commands/OsuCommands.cs @@ -25,7 +25,7 @@ namespace NadekoBot.Modules.Searches { _log = LogManager.GetCurrentClassLogger(); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Osu(IUserMessage umsg, string usr, string mode) { @@ -58,7 +58,7 @@ namespace NadekoBot.Modules.Searches } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Osub(IUserMessage umsg, [Remainder] string map) { @@ -95,7 +95,7 @@ namespace NadekoBot.Modules.Searches } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Osu5(IUserMessage umsg, string user, [Remainder] string mode) { diff --git a/src/NadekoBot/Modules/Searches/Commands/PokemonSearchCommands.cs b/src/NadekoBot/Modules/Searches/Commands/PokemonSearchCommands.cs index e090d09f..55885f7c 100644 --- a/src/NadekoBot/Modules/Searches/Commands/PokemonSearchCommands.cs +++ b/src/NadekoBot/Modules/Searches/Commands/PokemonSearchCommands.cs @@ -38,7 +38,7 @@ namespace NadekoBot.Modules.Searches _log.Warn(PokemonAbilitiesFile + " is missing. Pokemon abilities not loaded."); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Pokemon(IUserMessage umsg, [Remainder] string pokemon = null) { @@ -59,7 +59,7 @@ namespace NadekoBot.Modules.Searches await channel.SendMessageAsync("`No pokemon found.`"); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task PokemonAbility(IUserMessage umsg, [Remainder] string ability = null) { diff --git a/src/NadekoBot/Modules/Searches/Commands/StreamNotificationCommands.cs b/src/NadekoBot/Modules/Searches/Commands/StreamNotificationCommands.cs index 03f5fc8e..7b250624 100644 --- a/src/NadekoBot/Modules/Searches/Commands/StreamNotificationCommands.cs +++ b/src/NadekoBot/Modules/Searches/Commands/StreamNotificationCommands.cs @@ -132,28 +132,28 @@ namespace NadekoBot.Modules.Searches return new Tuple(false, "0"); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageMessages)] public async Task Hitbox(IUserMessage msg, [Remainder] string username) => await TrackStream((ITextChannel)msg.Channel, username, FollowedStream.FollowedStreamType.Hitbox) .ConfigureAwait(false); - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageMessages)] public async Task Twitch(IUserMessage msg, [Remainder] string username) => await TrackStream((ITextChannel)msg.Channel, username, FollowedStream.FollowedStreamType.Twitch) .ConfigureAwait(false); - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageMessages)] public async Task Beam(IUserMessage msg, [Remainder] string username) => await TrackStream((ITextChannel)msg.Channel, username, FollowedStream.FollowedStreamType.Beam) .ConfigureAwait(false); - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task ListStreams(IUserMessage imsg) { @@ -179,7 +179,7 @@ namespace NadekoBot.Modules.Searches await channel.SendMessageAsync($"You are following **{streams.Count()}** streams on this server.\n\n" + text).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task RemoveStream(IUserMessage msg, [Remainder] string username) { @@ -207,7 +207,7 @@ namespace NadekoBot.Modules.Searches await channel.SendMessageAsync($":ok: Removed `{toRemove.Username}`'s stream ({toRemove.Type}) from notifications.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task CheckStream(IUserMessage imsg, FollowedStream.FollowedStreamType platform, [Remainder] string username) { diff --git a/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs b/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs index 64422620..e4f19cba 100644 --- a/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs +++ b/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs @@ -96,7 +96,7 @@ namespace NadekoBot.Modules.Searches public List Units { get; set; } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task ConvertListE(IUserMessage msg) //extended and bugged list { @@ -115,7 +115,7 @@ namespace NadekoBot.Modules.Searches } await msg.ReplyLong(sb.ToString(), breakOn: new[] { "```xl", "\n" }); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task ConvertList(IUserMessage msg) { @@ -129,7 +129,7 @@ namespace NadekoBot.Modules.Searches } await msg.ReplyLong(sb.ToString(), breakOn: new[] { "```xl\n", "\n" }); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] public async Task Convert(IUserMessage msg, string origin, string target, decimal value) { var originUnit = Units.Find(x => x.Triggers.Select(y => y.ToLowerInvariant()).Contains(origin.ToLowerInvariant())); diff --git a/src/NadekoBot/Modules/Searches/Searches.cs b/src/NadekoBot/Modules/Searches/Searches.cs index da2fee95..cb886063 100644 --- a/src/NadekoBot/Modules/Searches/Searches.cs +++ b/src/NadekoBot/Modules/Searches/Searches.cs @@ -30,7 +30,7 @@ namespace NadekoBot.Modules.Searches _google = youtube; } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Weather(IUserMessage umsg, string city, string country) { @@ -51,7 +51,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 🌄 **Sunrise:** {obj["sunrise"]} 🌇 **Sunset:** {obj["sunset"]}").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Youtube(IUserMessage umsg, [Remainder] string query = null) { @@ -66,7 +66,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 await channel.SendMessageAsync(result).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Imdb(IUserMessage umsg, [Remainder] string query = null) { @@ -90,7 +90,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 await channel.SendMessageAsync(result.ToString()).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task RandomCat(IUserMessage umsg) { @@ -103,7 +103,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task RandomDog(IUserMessage umsg) { @@ -114,7 +114,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task I(IUserMessage umsg, [Remainder] string query = null) { @@ -144,7 +144,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Ir(IUserMessage umsg, [Remainder] string query = null) { @@ -176,7 +176,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Lmgtfy(IUserMessage umsg, [Remainder] string ffs = null) { @@ -190,7 +190,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 .ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Google(IUserMessage umsg, [Remainder] string terms = null) { @@ -204,7 +204,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 .ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Hearthstone(IUserMessage umsg, [Remainder] string name = null) { @@ -256,7 +256,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Ud(IUserMessage umsg, [Remainder] string query = null) { @@ -290,7 +290,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Hashtag(IUserMessage umsg, [Remainder] string query = null) { @@ -325,7 +325,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Catfact(IUserMessage umsg) { @@ -339,7 +339,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Revav(IUserMessage umsg, [Remainder] string arg = null) { @@ -356,7 +356,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 await channel.SendMessageAsync($"https://images.google.com/searchbyimage?image_url={usr.AvatarUrl}").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Revimg(IUserMessage umsg, [Remainder] string imageLink = null) { @@ -368,7 +368,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 await channel.SendMessageAsync($"https://images.google.com/searchbyimage?image_url={imageLink}").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Safebooru(IUserMessage umsg, [Remainder] string tag = null) { @@ -382,7 +382,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 await channel.SendMessageAsync(link).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Wiki(IUserMessage umsg, [Remainder] string query = null) { @@ -402,7 +402,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Clr(IUserMessage umsg, [Remainder] string color = null) { @@ -422,7 +422,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 await channel.SendFileAsync(img.ToStream(), $"{color}.png"); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Videocall(IUserMessage umsg, [Remainder] string arg = null) { @@ -445,7 +445,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Avatar(IUserMessage umsg, [Remainder] string mention = null) { diff --git a/src/NadekoBot/Modules/Translator/Translator.cs b/src/NadekoBot/Modules/Translator/Translator.cs index e974746a..4d66a7a6 100644 --- a/src/NadekoBot/Modules/Translator/Translator.cs +++ b/src/NadekoBot/Modules/Translator/Translator.cs @@ -16,7 +16,7 @@ namespace NadekoBot.Modules.Translator { } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Translate(IUserMessage umsg, string langs, [Remainder] string text = null) { @@ -44,7 +44,7 @@ namespace NadekoBot.Modules.Translator } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Translangs(IUserMessage umsg) { diff --git a/src/NadekoBot/Modules/Utility/Commands/InfoCommands.cs b/src/NadekoBot/Modules/Utility/Commands/InfoCommands.cs index 9993c1d3..1e4683e6 100644 --- a/src/NadekoBot/Modules/Utility/Commands/InfoCommands.cs +++ b/src/NadekoBot/Modules/Utility/Commands/InfoCommands.cs @@ -12,7 +12,7 @@ namespace NadekoBot.Modules.Utility { partial class Utility : DiscordModule { - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task ServerInfo(IUserMessage msg, string guild = null) { @@ -47,7 +47,7 @@ namespace NadekoBot.Modules.Utility await msg.Reply(sb.ToString()).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task ChannelInfo(IUserMessage msg, ITextChannel channel = null) { @@ -63,7 +63,7 @@ namespace NadekoBot.Modules.Utility await msg.Reply(toReturn).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task UserInfo(IUserMessage msg, IGuildUser usr = null) { diff --git a/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs b/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs index f2102c15..4995703e 100644 --- a/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs +++ b/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs @@ -14,7 +14,7 @@ namespace NadekoBot.Modules.Utility { public partial class Utility { - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task ShowQuote(IUserMessage umsg, string keyword) { @@ -37,7 +37,7 @@ namespace NadekoBot.Modules.Utility await channel.SendMessageAsync("📣 " + quote.Text); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task AddQuote(IUserMessage umsg, string keyword, [Remainder] string text) { @@ -63,7 +63,7 @@ namespace NadekoBot.Modules.Utility } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task DeleteQuote(IUserMessage umsg, string keyword) { @@ -90,7 +90,7 @@ namespace NadekoBot.Modules.Utility await channel.SendMessageAsync("`Deleted a random quote.`"); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task DelAllQuotes(IUserMessage umsg, string keyword) { diff --git a/src/NadekoBot/Modules/Utility/Commands/Remind.cs b/src/NadekoBot/Modules/Utility/Commands/Remind.cs index ba48f1e9..2ecc2140 100644 --- a/src/NadekoBot/Modules/Utility/Commands/Remind.cs +++ b/src/NadekoBot/Modules/Utility/Commands/Remind.cs @@ -92,7 +92,7 @@ namespace NadekoBot.Modules.Utility } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Remind(IUserMessage umsg, string meorchannel, string timeStr, [Remainder] string message) { diff --git a/src/NadekoBot/Modules/Utility/Utility.cs b/src/NadekoBot/Modules/Utility/Utility.cs index 5ce18ef3..2614faea 100644 --- a/src/NadekoBot/Modules/Utility/Utility.cs +++ b/src/NadekoBot/Modules/Utility/Utility.cs @@ -23,7 +23,7 @@ namespace NadekoBot.Modules.Utility } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task WhosPlaying(IUserMessage umsg, [Remainder] string game = null) { @@ -43,7 +43,7 @@ namespace NadekoBot.Modules.Utility await channel.SendMessageAsync("```xl\n" + string.Join("\n", arr.GroupBy(item => (i++) / 3).Select(ig => string.Concat(ig.Select(el => $"• {el,-35}")))) + "\n```").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task InRole(IUserMessage umsg, [Remainder] string roles = null) { @@ -76,7 +76,7 @@ namespace NadekoBot.Modules.Utility await channel.SendMessageAsync(send).ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task CheckMyPerms(IUserMessage msg) { @@ -93,7 +93,7 @@ namespace NadekoBot.Modules.Utility await msg.Reply(builder.ToString()); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task UserId(IUserMessage msg, IGuildUser target = null) { @@ -101,20 +101,20 @@ namespace NadekoBot.Modules.Utility await msg.Reply($"Id of the user { usr.Username } is { usr.Id })").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] public async Task ChannelId(IUserMessage msg) { await msg.Reply($"This Channel's ID is {msg.Channel.Id}").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task ServerId(IUserMessage msg) { await msg.Reply($"This server's ID is {((ITextChannel)msg.Channel).Guild.Id}").ConfigureAwait(false); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Roles(IUserMessage msg, IGuildUser target = null) { @@ -130,7 +130,7 @@ namespace NadekoBot.Modules.Utility } } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task ChannelTopic(IUserMessage umsg) { @@ -143,7 +143,7 @@ namespace NadekoBot.Modules.Utility await channel.SendMessageAsync("`Topic:` " + topic); } - [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task Stats(IUserMessage umsg) { diff --git a/src/NadekoBot/Resources/CommandStrings.Designer.cs b/src/NadekoBot/Resources/CommandStrings.Designer.cs index b727a16e..8f4f90f4 100644 --- a/src/NadekoBot/Resources/CommandStrings.Designer.cs +++ b/src/NadekoBot/Resources/CommandStrings.Designer.cs @@ -1671,7 +1671,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to commands. + /// Looks up a localized string similar to commands cmds. /// public static string commands_text { get { @@ -4209,7 +4209,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to modules. + /// Looks up a localized string similar to modules mdls. /// public static string modules_text { get { diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index 5425ea2f..31d4bda9 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -145,7 +145,7 @@ `-donate` or `~donate` - modules + modules mdls List all bot modules. @@ -154,7 +154,7 @@ `-modules` or `.modules` - commands + commands cmds List all of the bot's commands from a certain module. diff --git a/src/NadekoBot/Services/Database/Models/Permission.cs b/src/NadekoBot/Services/Database/Models/Permission.cs index de342b6b..6c620ecb 100644 --- a/src/NadekoBot/Services/Database/Models/Permission.cs +++ b/src/NadekoBot/Services/Database/Models/Permission.cs @@ -27,6 +27,8 @@ namespace NadekoBot.Services.Database.Models public enum SecondaryPermissionType { Module, - Command + Command, + AllCommands, + AllModules } } From 597b73d38c5c879aba4db74e341339ab24483872 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Mon, 26 Sep 2016 19:23:01 +0200 Subject: [PATCH 04/74] More permission stuff. MovePerm doesn't work, RemovePerm works, permission fixes. --- .../20160926144107_second.Designer.cs | 587 ++++++++++++++++++ .../Migrations/20160926144107_second.cs | 19 + .../Administration/Commands/LogCommand.cs | 54 +- .../Gambling/Commands/DiceRollCommand.cs | 2 + .../Permissions/PermissionExtensions.cs | 3 +- .../Modules/Permissions/Permissions.cs | 64 +- .../Resources/CommandStrings.Designer.cs | 108 ++++ src/NadekoBot/Resources/CommandStrings.resx | 36 ++ src/NadekoBot/Services/CommandHandler.cs | 2 +- .../Services/Database/Models/GuildConfig.cs | 2 +- 10 files changed, 843 insertions(+), 34 deletions(-) create mode 100644 src/NadekoBot/Migrations/20160926144107_second.Designer.cs create mode 100644 src/NadekoBot/Migrations/20160926144107_second.cs diff --git a/src/NadekoBot/Migrations/20160926144107_second.Designer.cs b/src/NadekoBot/Migrations/20160926144107_second.Designer.cs new file mode 100644 index 00000000..095ee7cf --- /dev/null +++ b/src/NadekoBot/Migrations/20160926144107_second.Designer.cs @@ -0,0 +1,587 @@ +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using NadekoBot.Services.Database.Impl; + +namespace NadekoBot.Migrations +{ + [DbContext(typeof(NadekoSqliteContext))] + [Migration("20160926144107_second")] + partial class second + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { + modelBuilder + .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ItemId"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("BlacklistItem"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BufferSize"); + + b.Property("CurrencyGenerationChance"); + + b.Property("CurrencyGenerationCooldown"); + + b.Property("CurrencyName"); + + b.Property("CurrencyPluralName"); + + b.Property("CurrencySign"); + + b.Property("DontJoinServers"); + + b.Property("ForwardMessages"); + + b.Property("ForwardToAllOwners"); + + b.Property("RemindMessageFormat"); + + b.Property("RotatingStatuses"); + + b.HasKey("Id"); + + 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("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("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.ConvertUnit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("InternalTrigger"); + + b.Property("Modifier"); + + b.Property("UnitType"); + + b.HasKey("Id"); + + b.ToTable("ConversionUnits"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Currency"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("Name"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Donators"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("EightBallResponses"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("LastStatus"); + + b.Property("Type"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FollowedStream"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoAssignRoleId"); + + b.Property("AutoDeleteByeMessages"); + + b.Property("AutoDeleteGreetMessages"); + + b.Property("AutoDeleteGreetMessagesTimer"); + + b.Property("AutoDeleteSelfAssignedRoleMessages"); + + b.Property("ByeMessageChannelId"); + + b.Property("ChannelByeMessageText"); + + b.Property("ChannelGreetMessageText"); + + b.Property("DefaultMusicVolume"); + + b.Property("DeleteMessageOnCommand"); + + b.Property("DmGreetMessageText"); + + b.Property("ExclusiveSelfAssignedRoles"); + + b.Property("GenerateCurrencyChannelId"); + + b.Property("GreetMessageChannelId"); + + b.Property("GuildId"); + + b.Property("LogSettingId"); + + b.Property("SendChannelByeMessage"); + + b.Property("SendChannelGreetMessage"); + + b.Property("SendDmGreetMessage"); + + b.Property("VoicePlusTextEnabled"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.HasIndex("LogSettingId"); + + b.ToTable("GuildConfigs"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredLogChannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredVoicePresenceCHannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelCreated"); + + b.Property("ChannelDestroyed"); + + b.Property("ChannelId"); + + b.Property("ChannelUpdated"); + + b.Property("IsLogging"); + + b.Property("LogUserPresence"); + + b.Property("LogVoicePresence"); + + b.Property("MessageDeleted"); + + b.Property("MessageReceived"); + + b.Property("MessageUpdated"); + + b.Property("UserBanned"); + + b.Property("UserJoined"); + + b.Property("UserLeft"); + + b.Property("UserPresenceChannelId"); + + b.Property("UserUnbanned"); + + b.Property("UserUpdated"); + + b.Property("VoicePresenceChannelId"); + + b.HasKey("Id"); + + b.ToTable("LogSettings"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ModuleName"); + + b.Property("Prefix"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("ModulePrefixes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildConfigId"); + + b.Property("PrimaryTarget"); + + b.Property("PrimaryTargetId"); + + b.Property("SecondaryTarget"); + + b.Property("SecondaryTargetName"); + + b.Property("State"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("Permission"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Status"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("PlayingStatus"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("AuthorName") + .IsRequired(); + + b.Property("GuildId"); + + b.Property("Keyword") + .IsRequired(); + + b.Property("Text") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("Quotes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Icon"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("RaceAnimals"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("IsPrivate"); + + b.Property("Message"); + + b.Property("ServerId"); + + b.Property("UserId"); + + b.Property("When"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildId"); + + b.Property("Interval"); + + b.Property("Message"); + + b.HasKey("Id"); + + b.HasIndex("ChannelId") + .IsUnique(); + + b.ToTable("Repeaters"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildId", "RoleId") + .IsUnique(); + + b.ToTable("SelfAssignableRoles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.ToTable("TypingArticles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("Blacklist") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + { + b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + .WithMany("Bases") + .HasForeignKey("ClashWarId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("EightBallResponses") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FollowedStreams") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany() + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredVoicePresenceChannelIds") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig", "BotConfig") + .WithMany("ModulePrefixes") + .HasForeignKey("BotConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("Permissions") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RotatingStatusMessages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RaceAnimals") + .HasForeignKey("BotConfigId"); + }); + } + } +} diff --git a/src/NadekoBot/Migrations/20160926144107_second.cs b/src/NadekoBot/Migrations/20160926144107_second.cs new file mode 100644 index 00000000..e79f9421 --- /dev/null +++ b/src/NadekoBot/Migrations/20160926144107_second.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace NadekoBot.Migrations +{ + public partial class second : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs b/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs index e04b9a46..d9fd3d58 100644 --- a/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs +++ b/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs @@ -60,7 +60,7 @@ namespace NadekoBot.Modules.Administration }, null, TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(10)); - _client.MessageReceived += _client_MessageReceived; + //_client.MessageReceived += _client_MessageReceived; _client.MessageUpdated += _client_MessageUpdated; _client.MessageDeleted += _client_MessageDeleted; _client.UserBanned += _client_UserBanned; @@ -408,37 +408,37 @@ namespace NadekoBot.Modules.Administration return Task.CompletedTask; } - private Task _client_MessageReceived(IMessage imsg) - { - var msg = imsg as IUserMessage; - if (msg == null || msg.IsAuthor()) - return Task.CompletedTask; +// private Task _client_MessageReceived(IMessage imsg) +// { +// var msg = imsg as IUserMessage; +// if (msg == null || msg.IsAuthor()) +// return Task.CompletedTask; - var channel = msg.Channel as ITextChannel; - if (channel == null) - return Task.CompletedTask; +// var channel = msg.Channel as ITextChannel; +// if (channel == null) +// return Task.CompletedTask; - LogSetting logSetting; - if (!GuildLogSettings.TryGetValue(channel.Guild.Id, out logSetting) - || !logSetting.IsLogging - || !logSetting.MessageReceived) - return Task.CompletedTask; +// LogSetting logSetting; +// if (!GuildLogSettings.TryGetValue(channel.Guild.Id, out logSetting) +// || !logSetting.IsLogging +// || !logSetting.MessageReceived) +// return Task.CompletedTask; - ITextChannel logChannel; - if ((logChannel = TryGetLogChannel(channel.Guild, logSetting)) == null || logChannel.Id == imsg.Channel.Id) - return Task.CompletedTask; +// ITextChannel logChannel; +// if ((logChannel = TryGetLogChannel(channel.Guild, logSetting)) == null || logChannel.Id == imsg.Channel.Id) +// return Task.CompletedTask; - var task = Task.Run(async () => - { - var str = $@"🕔`{prettyCurrentTime}` **New Message** `#{channel.Name}` -👤`{msg.Author.Username}`: {msg.Resolve(userHandling: UserMentionHandling.NameAndDiscriminator)}"; - if (msg.Attachments.Any()) - str += $"{Environment.NewLine}`Attachements`: {string.Join(", ", msg.Attachments.Select(a => a.ProxyUrl))}"; - await logChannel.SendMessageAsync(str).ConfigureAwait(false); - }); +// var task = Task.Run(async () => +// { +// var str = $@"🕔`{prettyCurrentTime}` **New Message** `#{channel.Name}` +//👤`{msg.Author.Username}`: {msg.Resolve(userHandling: UserMentionHandling.NameAndDiscriminator)}"; +// if (msg.Attachments.Any()) +// str += $"{Environment.NewLine}`Attachements`: {string.Join(", ", msg.Attachments.Select(a => a.ProxyUrl))}"; +// await logChannel.SendMessageAsync(str).ConfigureAwait(false); +// }); - return Task.CompletedTask; - } +// return Task.CompletedTask; +// } private enum LogChannelType { Text, Voice, UserPresence }; private ITextChannel TryGetLogChannel(IGuild guild, LogSetting logSetting, LogChannelType logChannelType = LogChannelType.Text) diff --git a/src/NadekoBot/Modules/Gambling/Commands/DiceRollCommand.cs b/src/NadekoBot/Modules/Gambling/Commands/DiceRollCommand.cs index 10972871..24e2b4c5 100644 --- a/src/NadekoBot/Modules/Gambling/Commands/DiceRollCommand.cs +++ b/src/NadekoBot/Modules/Gambling/Commands/DiceRollCommand.cs @@ -46,6 +46,7 @@ namespace NadekoBot.Modules.Gambling //todo merge into internallDndRoll and internalRoll [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] + [Priority(1)] public async Task Roll(IUserMessage umsg, string arg) { var channel = (ITextChannel)umsg.Channel; @@ -76,6 +77,7 @@ namespace NadekoBot.Modules.Gambling [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] + [Priority(2)] public async Task Roll(IUserMessage umsg, int num) { var channel = (ITextChannel)umsg.Channel; diff --git a/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs b/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs index bb131b14..30996f05 100644 --- a/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs +++ b/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs @@ -20,6 +20,7 @@ namespace NadekoBot.Modules.Permissions public static bool CheckPermissions(this IEnumerable permsEnumerable, IUserMessage message, Command command, out int permIndex) { + permsEnumerable = permsEnumerable.Reverse(); var perms = permsEnumerable as List ?? permsEnumerable.ToList(); for (int i = 0; i < perms.Count; i++) @@ -107,7 +108,7 @@ namespace NadekoBot.Modules.Permissions com = "a" + com + "m"; break; } - com += " " + perm.SecondaryTargetName + " " + (perm.State ? "enable" : "disable") + " "; + com += " " + (perm.SecondaryTargetName != "*" ? perm.SecondaryTargetName + " " : "") + (perm.State ? "enable" : "disable") + " "; switch (perm.PrimaryTarget) { diff --git a/src/NadekoBot/Modules/Permissions/Permissions.cs b/src/NadekoBot/Modules/Permissions/Permissions.cs index d35c8810..cccbc0c1 100644 --- a/src/NadekoBot/Modules/Permissions/Permissions.cs +++ b/src/NadekoBot/Modules/Permissions/Permissions.cs @@ -10,6 +10,7 @@ using NadekoBot.Services; using Discord; using NadekoBot.Services.Database; using NadekoBot.Services.Database.Models; +using Discord.API; namespace NadekoBot.Modules.Permissions { @@ -29,7 +30,7 @@ namespace NadekoBot.Modules.Permissions string toSend = ""; using (var uow = DbHandler.UnitOfWork()) { - var perms = uow.GuildConfigs.For(channel.Guild.Id).Permissions; + var perms = uow.GuildConfigs.For(channel.Guild.Id).Permissions.AsEnumerable().Reverse(); var i = 1; toSend = String.Join("\n", perms.Select(p => $"`{(i++)}.` {p.GetCommand()}")); @@ -41,6 +42,61 @@ namespace NadekoBot.Modules.Permissions await channel.SendMessageAsync(toSend).ConfigureAwait(false); } + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task RemovePerm(IUserMessage imsg, int index) + { + var channel = (ITextChannel)imsg.Channel; + try + { + Permission p; + using (var uow = DbHandler.UnitOfWork()) + { + var perms = uow.GuildConfigs.For(channel.Guild.Id).Permissions.AsEnumerable().ToList(); + p = perms[perms.Count - index]; + perms.RemoveAt(perms.Count - index); + uow.GuildConfigs.For(channel.Guild.Id).Permissions = perms; + await uow.CompleteAsync().ConfigureAwait(false); + } + await channel.SendMessageAsync($"`Removed permission \"{p.GetCommand()}\" from position #{index}.`").ConfigureAwait(false); + } + catch (ArgumentOutOfRangeException) + { + await channel.SendMessageAsync("`No command on that index found.`").ConfigureAwait(false); + } + } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task MovePerm(IUserMessage imsg, int from, int to) + { + var channel = (ITextChannel)imsg.Channel; + if (!(from == to || from < 1 || to < 1)) + { + try + { + Permission toInsert; + using (var uow = DbHandler.UnitOfWork()) + { + var perms = uow.GuildConfigs.For(channel.Guild.Id).Permissions.AsEnumerable().ToList(); + toInsert = perms[perms.Count - from]; + perms.RemoveAt(perms.Count - from); + uow.GuildConfigs.For(channel.Guild.Id).Permissions = perms; + if (from < to) + to -= 1; + perms.Insert(perms.Count - to, toInsert); + await uow.CompleteAsync().ConfigureAwait(false); + } + await channel.SendMessageAsync($"`Moved permission \"{toInsert.GetCommand()}\" from #{from} to #{to}.`").ConfigureAwait(false); + return; + } + catch (Exception e) when (e is ArgumentOutOfRangeException || e is IndexOutOfRangeException) + { + } + } + await channel.SendMessageAsync("`Invalid index(es) specified.`").ConfigureAwait(false); + } + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task UsrCmd(IUserMessage imsg, Command command, PermissionAction action, IGuildUser user) @@ -211,7 +267,7 @@ namespace NadekoBot.Modules.Permissions [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] - public async Task AllUserMdls(IUserMessage imsg, PermissionAction action, IUser user) + public async Task AllUsrMdls(IUserMessage imsg, PermissionAction action, IUser user) { var channel = (ITextChannel)imsg.Channel; @@ -242,7 +298,7 @@ namespace NadekoBot.Modules.Permissions { PrimaryTarget = PrimaryPermissionType.Channel, PrimaryTargetId = chnl.Id, - SecondaryTarget = SecondaryPermissionType.Command, + SecondaryTarget = SecondaryPermissionType.AllCommands, SecondaryTargetName = module.Name.ToLowerInvariant(), State = action.Value, }); @@ -274,7 +330,7 @@ namespace NadekoBot.Modules.Permissions [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] - public async Task AllUserCmds(IUserMessage imsg, Module module, PermissionAction action, IUser user) + public async Task AllUsrCmds(IUserMessage imsg, Module module, PermissionAction action, IUser user) { var channel = (ITextChannel)imsg.Channel; diff --git a/src/NadekoBot/Resources/CommandStrings.Designer.cs b/src/NadekoBot/Resources/CommandStrings.Designer.cs index 8f4f90f4..ffa02391 100644 --- a/src/NadekoBot/Resources/CommandStrings.Designer.cs +++ b/src/NadekoBot/Resources/CommandStrings.Designer.cs @@ -383,6 +383,60 @@ namespace NadekoBot.Resources { } } + /// + /// Looks up a localized string similar to Sets permission for all commands from a module for a specific user.. + /// + public static string allusrcmds_desc { + get { + return ResourceManager.GetString("allusrcmds_desc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to `;auc Searches disable @Someone`. + /// + public static string allusrcmds_summary { + get { + return ResourceManager.GetString("allusrcmds_summary", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to allusrcmds auc. + /// + public static string allusrcmds_text { + get { + return ResourceManager.GetString("allusrcmds_text", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Sets permission for all modules for a specific user.. + /// + public static string allusrmdls_desc { + get { + return ResourceManager.GetString("allusrmdls_desc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to `;aum enable @someone`. + /// + public static string allusrmdls_summary { + get { + return ResourceManager.GetString("allusrmdls_summary", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to allusrmdls aum. + /// + public static string allusrmdls_text { + get { + return ResourceManager.GetString("allusrmdls_text", resourceCulture); + } + } + /// /// Looks up a localized string similar to Queries anilist for an anime and shows the first result.. /// @@ -4271,6 +4325,33 @@ namespace NadekoBot.Resources { } } + /// + /// Looks up a localized string similar to Moves permission from one position to another.. + /// + public static string moveperm_desc { + get { + return ResourceManager.GetString("moveperm_desc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to `;mp 2 4`. + /// + public static string moveperm_summary { + get { + return ResourceManager.GetString("moveperm_summary", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to moveperm mp. + /// + public static string moveperm_text { + get { + return ResourceManager.GetString("moveperm_text", resourceCulture); + } + } + /// /// Looks up a localized string similar to Moves a song from one position to another.. /// @@ -5108,6 +5189,33 @@ namespace NadekoBot.Resources { } } + /// + /// Looks up a localized string similar to Removes a permission from a given position. + /// + public static string removeperm_desc { + get { + return ResourceManager.GetString("removeperm_desc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to `;rp 1`. + /// + public static string removeperm_summary { + get { + return ResourceManager.GetString("removeperm_summary", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to removeperm rp. + /// + public static string removeperm_text { + get { + return ResourceManager.GetString("removeperm_text", resourceCulture); + } + } + /// /// Looks up a localized string similar to Removes a playing string on a given number. **Bot Owner Only!**. /// diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index 31d4bda9..59917de7 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -2646,4 +2646,40 @@ listperms lp + + Sets permission for all commands from a module for a specific user. + + + `;auc Searches disable @Someone` + + + allusrcmds auc + + + Sets permission for all modules for a specific user. + + + `;aum enable @someone` + + + allusrmdls aum + + + Moves permission from one position to another. + + + `;mp 2 4` + + + moveperm mp + + + Removes a permission from a given position + + + `;rp 1` + + + removeperm rp + \ No newline at end of file diff --git a/src/NadekoBot/Services/CommandHandler.cs b/src/NadekoBot/Services/CommandHandler.cs index 03863b8a..5f6eb49f 100644 --- a/src/NadekoBot/Services/CommandHandler.cs +++ b/src/NadekoBot/Services/CommandHandler.cs @@ -137,7 +137,7 @@ namespace NadekoBot.Services } int index; if (!perms.CheckPermissions(message, cmd, out index)) - return new Tuple(null, SearchResult.FromError(CommandError.Exception, $"Permission error. Permission number {index} (`{(index != -1 ? perms[index - 1].GetCommand() : "default")}`)")); + return new Tuple(null, SearchResult.FromError(CommandError.Exception, $"Permission error. Permission number {index} (`{(index != -1 ? perms[perms.Count - index].GetCommand() : "default")}`)")); } return new Tuple(commands[i], await commands[i].Execute(message, parseResult)); diff --git a/src/NadekoBot/Services/Database/Models/GuildConfig.cs b/src/NadekoBot/Services/Database/Models/GuildConfig.cs index 33180435..30d7253a 100644 --- a/src/NadekoBot/Services/Database/Models/GuildConfig.cs +++ b/src/NadekoBot/Services/Database/Models/GuildConfig.cs @@ -43,6 +43,6 @@ namespace NadekoBot.Services.Database.Models public ulong? GenerateCurrencyChannelId { get; set; } //permissions - public List Permissions { get; set; } + public List Permissions { get; set; } = new List(); } } From 210ca07cde228443474965d39adfafd32d89dda1 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Tue, 27 Sep 2016 15:26:37 +0200 Subject: [PATCH 05/74] Work on permissions, added tests for permission linked list --- NadekoBot.sln | 7 + .../20160927023659_moar perms.Designer.cs | 596 + .../Migrations/20160927023659_moar perms.cs | 106 + .../NadekoSqliteContextModelSnapshot.cs | 19 +- .../Permissions/PermissionExtensions.cs | 109 +- .../Modules/Permissions/Permissions.cs | 42 +- src/NadekoBot/Services/CommandHandler.cs | 8 +- .../Services/Database/Models/GuildConfig.cs | 10 +- .../Services/Database/Models/Permission.cs | 3 + .../Services/Database/NadekoContext.cs | 7 + .../Impl/GuildConfigRepository.cs | 2 +- src/NadekoBot/Services/Database/UnitOfWork.cs | 2 +- src/tests/Tests.cs | 111 + .../netcoreapp1.0/Discord.Net.Commands.dll | Bin 0 -> 65024 bytes .../netcoreapp1.0/Discord.Net.Commands.pdb | Bin 0 -> 148992 bytes .../netcoreapp1.0/Discord.Net.Commands.xml | 26 + .../bin/Debug/netcoreapp1.0/Discord.Net.dll | Bin 0 -> 719360 bytes .../bin/Debug/netcoreapp1.0/Discord.Net.pdb | Bin 0 -> 1555968 bytes .../bin/Debug/netcoreapp1.0/Discord.Net.xml | 1129 ++ .../bin/Debug/netcoreapp1.0/NadekoBot.dll | Bin 0 -> 998400 bytes .../bin/Debug/netcoreapp1.0/NadekoBot.pdb | Bin 0 -> 1447424 bytes .../bin/Debug/netcoreapp1.0/tests.deps.json | 1101 ++ src/tests/bin/Debug/netcoreapp1.0/tests.dll | Bin 0 -> 6144 bytes src/tests/bin/Debug/netcoreapp1.0/tests.pdb | Bin 0 -> 1388 bytes .../tests.runtimeconfig.dev.json | 7 + .../netcoreapp1.0/tests.runtimeconfig.json | 8 + src/tests/project.json | 27 + src/tests/project.lock.json | 9841 +++++++++++++++++ src/tests/tests.xproj | 21 + 29 files changed, 13146 insertions(+), 36 deletions(-) create mode 100644 src/NadekoBot/Migrations/20160927023659_moar perms.Designer.cs create mode 100644 src/NadekoBot/Migrations/20160927023659_moar perms.cs create mode 100644 src/tests/Tests.cs create mode 100644 src/tests/bin/Debug/netcoreapp1.0/Discord.Net.Commands.dll create mode 100644 src/tests/bin/Debug/netcoreapp1.0/Discord.Net.Commands.pdb create mode 100644 src/tests/bin/Debug/netcoreapp1.0/Discord.Net.Commands.xml create mode 100644 src/tests/bin/Debug/netcoreapp1.0/Discord.Net.dll create mode 100644 src/tests/bin/Debug/netcoreapp1.0/Discord.Net.pdb create mode 100644 src/tests/bin/Debug/netcoreapp1.0/Discord.Net.xml create mode 100644 src/tests/bin/Debug/netcoreapp1.0/NadekoBot.dll create mode 100644 src/tests/bin/Debug/netcoreapp1.0/NadekoBot.pdb create mode 100644 src/tests/bin/Debug/netcoreapp1.0/tests.deps.json create mode 100644 src/tests/bin/Debug/netcoreapp1.0/tests.dll create mode 100644 src/tests/bin/Debug/netcoreapp1.0/tests.pdb create mode 100644 src/tests/bin/Debug/netcoreapp1.0/tests.runtimeconfig.dev.json create mode 100644 src/tests/bin/Debug/netcoreapp1.0/tests.runtimeconfig.json create mode 100644 src/tests/project.json create mode 100644 src/tests/project.lock.json create mode 100644 src/tests/tests.xproj diff --git a/NadekoBot.sln b/NadekoBot.sln index 48336ef6..aba14bf4 100644 --- a/NadekoBot.sln +++ b/NadekoBot.sln @@ -16,6 +16,8 @@ Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Discord.Net", "discord.net\ EndProject Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Discord.Net.Commands", "discord.net\src\Discord.Net.Commands\Discord.Net.Commands.xproj", "{078DD7E6-943D-4D09-AFC2-D2BA58B76C9C}" EndProject +Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "tests", "src\tests\tests.xproj", "{14CBADA0-971C-44E3-B331-C7D01DD74F0B}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -34,11 +36,16 @@ Global {078DD7E6-943D-4D09-AFC2-D2BA58B76C9C}.Debug|Any CPU.Build.0 = Debug|Any CPU {078DD7E6-943D-4D09-AFC2-D2BA58B76C9C}.Release|Any CPU.ActiveCfg = Release|Any CPU {078DD7E6-943D-4D09-AFC2-D2BA58B76C9C}.Release|Any CPU.Build.0 = Release|Any CPU + {14CBADA0-971C-44E3-B331-C7D01DD74F0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {14CBADA0-971C-44E3-B331-C7D01DD74F0B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {14CBADA0-971C-44E3-B331-C7D01DD74F0B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {14CBADA0-971C-44E3-B331-C7D01DD74F0B}.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} + {14CBADA0-971C-44E3-B331-C7D01DD74F0B} = {04929013-5BAB-42B0-B9B2-8F2BB8F16AF2} EndGlobalSection EndGlobal diff --git a/src/NadekoBot/Migrations/20160927023659_moar perms.Designer.cs b/src/NadekoBot/Migrations/20160927023659_moar perms.Designer.cs new file mode 100644 index 00000000..d05622cc --- /dev/null +++ b/src/NadekoBot/Migrations/20160927023659_moar perms.Designer.cs @@ -0,0 +1,596 @@ +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using NadekoBot.Services.Database.Impl; + +namespace NadekoBot.Migrations +{ + [DbContext(typeof(NadekoSqliteContext))] + [Migration("20160927023659_moar perms")] + partial class moarperms + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { + modelBuilder + .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ItemId"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("BlacklistItem"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BufferSize"); + + b.Property("CurrencyGenerationChance"); + + b.Property("CurrencyGenerationCooldown"); + + b.Property("CurrencyName"); + + b.Property("CurrencyPluralName"); + + b.Property("CurrencySign"); + + b.Property("DontJoinServers"); + + b.Property("ForwardMessages"); + + b.Property("ForwardToAllOwners"); + + b.Property("RemindMessageFormat"); + + b.Property("RotatingStatuses"); + + b.HasKey("Id"); + + 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("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("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.ConvertUnit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("InternalTrigger"); + + b.Property("Modifier"); + + b.Property("UnitType"); + + b.HasKey("Id"); + + b.ToTable("ConversionUnits"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Currency"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("Name"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Donators"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("EightBallResponses"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("LastStatus"); + + b.Property("Type"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FollowedStream"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoAssignRoleId"); + + b.Property("AutoDeleteByeMessages"); + + b.Property("AutoDeleteGreetMessages"); + + b.Property("AutoDeleteGreetMessagesTimer"); + + b.Property("AutoDeleteSelfAssignedRoleMessages"); + + b.Property("ByeMessageChannelId"); + + b.Property("ChannelByeMessageText"); + + b.Property("ChannelGreetMessageText"); + + b.Property("DefaultMusicVolume"); + + b.Property("DeleteMessageOnCommand"); + + b.Property("DmGreetMessageText"); + + b.Property("ExclusiveSelfAssignedRoles"); + + b.Property("GenerateCurrencyChannelId"); + + b.Property("GreetMessageChannelId"); + + b.Property("GuildId"); + + b.Property("LogSettingId"); + + b.Property("RootPermissionId"); + + b.Property("SendChannelByeMessage"); + + b.Property("SendChannelGreetMessage"); + + b.Property("SendDmGreetMessage"); + + b.Property("VoicePlusTextEnabled"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.HasIndex("LogSettingId"); + + b.HasIndex("RootPermissionId"); + + b.ToTable("GuildConfigs"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredLogChannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredVoicePresenceCHannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelCreated"); + + b.Property("ChannelDestroyed"); + + b.Property("ChannelId"); + + b.Property("ChannelUpdated"); + + b.Property("IsLogging"); + + b.Property("LogUserPresence"); + + b.Property("LogVoicePresence"); + + b.Property("MessageDeleted"); + + b.Property("MessageReceived"); + + b.Property("MessageUpdated"); + + b.Property("UserBanned"); + + b.Property("UserJoined"); + + b.Property("UserLeft"); + + b.Property("UserPresenceChannelId"); + + b.Property("UserUnbanned"); + + b.Property("UserUpdated"); + + b.Property("VoicePresenceChannelId"); + + b.HasKey("Id"); + + b.ToTable("LogSettings"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ModuleName"); + + b.Property("Prefix"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("ModulePrefixes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + 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.Services.Database.Models.PlayingStatus", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Status"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("PlayingStatus"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("AuthorName") + .IsRequired(); + + b.Property("GuildId"); + + b.Property("Keyword") + .IsRequired(); + + b.Property("Text") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("Quotes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Icon"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("RaceAnimals"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("IsPrivate"); + + b.Property("Message"); + + b.Property("ServerId"); + + b.Property("UserId"); + + b.Property("When"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildId"); + + b.Property("Interval"); + + b.Property("Message"); + + b.HasKey("Id"); + + b.HasIndex("ChannelId") + .IsUnique(); + + b.ToTable("Repeaters"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildId", "RoleId") + .IsUnique(); + + b.ToTable("SelfAssignableRoles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.ToTable("TypingArticles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("Blacklist") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + { + b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + .WithMany("Bases") + .HasForeignKey("ClashWarId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("EightBallResponses") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FollowedStreams") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany() + .HasForeignKey("LogSettingId"); + + b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + .WithMany() + .HasForeignKey("RootPermissionId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredVoicePresenceChannelIds") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig", "BotConfig") + .WithMany("ModulePrefixes") + .HasForeignKey("BotConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + .WithOne("Previous") + .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RotatingStatusMessages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RaceAnimals") + .HasForeignKey("BotConfigId"); + }); + } + } +} diff --git a/src/NadekoBot/Migrations/20160927023659_moar perms.cs b/src/NadekoBot/Migrations/20160927023659_moar perms.cs new file mode 100644 index 00000000..b360ca7f --- /dev/null +++ b/src/NadekoBot/Migrations/20160927023659_moar perms.cs @@ -0,0 +1,106 @@ +using System; +using System.Collections.Generic; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace NadekoBot.Migrations +{ + public partial class moarperms : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Permission_GuildConfigs_GuildConfigId", + table: "Permission"); + + migrationBuilder.DropIndex( + name: "IX_Permission_GuildConfigId", + table: "Permission"); + + migrationBuilder.DropColumn( + name: "GuildConfigId", + table: "Permission"); + + migrationBuilder.AddColumn( + name: "NextId", + table: "Permission", + nullable: true); + + migrationBuilder.AddColumn( + name: "RootPermissionId", + table: "GuildConfigs", + nullable: true); + + migrationBuilder.CreateIndex( + name: "IX_Permission_NextId", + table: "Permission", + column: "NextId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_GuildConfigs_RootPermissionId", + table: "GuildConfigs", + column: "RootPermissionId"); + + migrationBuilder.AddForeignKey( + name: "FK_GuildConfigs_Permission_RootPermissionId", + table: "GuildConfigs", + column: "RootPermissionId", + principalTable: "Permission", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_Permission_Permission_NextId", + table: "Permission", + column: "NextId", + principalTable: "Permission", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_GuildConfigs_Permission_RootPermissionId", + table: "GuildConfigs"); + + migrationBuilder.DropForeignKey( + name: "FK_Permission_Permission_NextId", + table: "Permission"); + + migrationBuilder.DropIndex( + name: "IX_Permission_NextId", + table: "Permission"); + + migrationBuilder.DropIndex( + name: "IX_GuildConfigs_RootPermissionId", + table: "GuildConfigs"); + + migrationBuilder.DropColumn( + name: "NextId", + table: "Permission"); + + migrationBuilder.DropColumn( + name: "RootPermissionId", + table: "GuildConfigs"); + + migrationBuilder.AddColumn( + name: "GuildConfigId", + table: "Permission", + nullable: true); + + migrationBuilder.CreateIndex( + name: "IX_Permission_GuildConfigId", + table: "Permission", + column: "GuildConfigId"); + + migrationBuilder.AddForeignKey( + name: "FK_Permission_GuildConfigs_GuildConfigId", + table: "Permission", + column: "GuildConfigId", + principalTable: "GuildConfigs", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + } + } +} diff --git a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs index 232314b2..039c2090 100644 --- a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs +++ b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs @@ -236,6 +236,8 @@ namespace NadekoBot.Migrations b.Property("LogSettingId"); + b.Property("RootPermissionId"); + b.Property("SendChannelByeMessage"); b.Property("SendChannelGreetMessage"); @@ -251,6 +253,8 @@ namespace NadekoBot.Migrations b.HasIndex("LogSettingId"); + b.HasIndex("RootPermissionId"); + b.ToTable("GuildConfigs"); }); @@ -353,7 +357,7 @@ namespace NadekoBot.Migrations b.Property("Id") .ValueGeneratedOnAdd(); - b.Property("GuildConfigId"); + b.Property("NextId"); b.Property("PrimaryTarget"); @@ -367,7 +371,8 @@ namespace NadekoBot.Migrations b.HasKey("Id"); - b.HasIndex("GuildConfigId"); + b.HasIndex("NextId") + .IsUnique(); b.ToTable("Permission"); }); @@ -537,6 +542,10 @@ namespace NadekoBot.Migrations b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") .WithMany() .HasForeignKey("LogSettingId"); + + b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + .WithMany() + .HasForeignKey("RootPermissionId"); }); modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => @@ -563,9 +572,9 @@ namespace NadekoBot.Migrations modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") - .WithMany("Permissions") - .HasForeignKey("GuildConfigId"); + b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + .WithOne("Previous") + .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); }); modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => diff --git a/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs b/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs index 30996f05..7fded44f 100644 --- a/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs +++ b/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs @@ -1,5 +1,6 @@ using Discord; using Discord.Commands; +using NadekoBot.Services.Database; using NadekoBot.Services.Database.Models; using System; using System.Collections.Generic; @@ -51,8 +52,8 @@ namespace NadekoBot.Modules.Permissions if (!((perm.SecondaryTarget == SecondaryPermissionType.Command && perm.SecondaryTargetName == command.Text.ToLowerInvariant()) || ((perm.SecondaryTarget == SecondaryPermissionType.Module || perm.SecondaryTarget == SecondaryPermissionType.AllCommands) && - perm.SecondaryTargetName == command.Module.Name.ToLowerInvariant()) || - perm.SecondaryTarget == SecondaryPermissionType.AllModules || + perm.SecondaryTargetName == command.Module.Name.ToLowerInvariant()) || + perm.SecondaryTarget == SecondaryPermissionType.AllModules || (perm.SecondaryTarget == SecondaryPermissionType.AllCommands && perm.SecondaryTargetName == command.Module.Name.ToLowerInvariant()))) return null; @@ -126,5 +127,109 @@ namespace NadekoBot.Modules.Permissions return NadekoBot.ModulePrefixes[typeof(Permissions).Name] + com; } + public static void Add(this Permission perm, Permission toAdd) + { + var last = perm; + while (last.Next != null) + { + last = last.Next; + } + + toAdd.Previous = last; + last.Next = toAdd; + toAdd.Next = null; + } + + public static void Insert(this Permission perm, int index, Permission toAdd) + { + if (index < 0) + throw new IndexOutOfRangeException(); + + if (index == 0) + { + perm.Previous = toAdd; + toAdd.Next = perm; + return; + } + + var atIndex = perm; + var i = 0; + while (i != index) + { + atIndex = atIndex.Next; + i++; + if (atIndex == null) + throw new IndexOutOfRangeException(); + } + var previous = atIndex.Previous; + + //connect right side + atIndex.Previous = toAdd; + toAdd.Next = atIndex; + + //connect left side + toAdd.Previous = previous; + previous.Next = toAdd; + } + + public static Permission RemoveAt(this Permission perm, int index) + { + if (index < 0) + throw new IndexOutOfRangeException(); + + if (index == 0) + { + perm.Next.Previous = null; + perm.Next = null; + return perm; + } + + var toRemove = perm; + var i = 0; + while (i != index) + { + toRemove = toRemove.Next; + i++; + if (toRemove == null) + throw new IndexOutOfRangeException(); + } + + toRemove.Previous.Next = toRemove.Next; + toRemove.Next.Previous = toRemove.Previous; + return toRemove; + } + + public static Permission GetAt(this Permission perm, int index) + { + if (index < 0) + throw new IndexOutOfRangeException(); + var temp = perm; + while (index > 0) { temp = temp?.Next; index--; } + if (temp == null) + throw new IndexOutOfRangeException(); + return temp; + } + + public static int Count(this Permission perm) + { + var i = 1; + var temp = perm; + while ((temp = temp.Next) != null) { i++; } + return i; + } + + public static IEnumerable AsEnumerable(this Permission perm) + { + do yield return perm; + while ((perm = perm.Next) != null); + } + + public static Permission GetRoot(this Permission perm) + { + Permission toReturn; + do toReturn = perm; + while ((perm = perm.Previous) != null); + return toReturn; + } } } diff --git a/src/NadekoBot/Modules/Permissions/Permissions.cs b/src/NadekoBot/Modules/Permissions/Permissions.cs index cccbc0c1..3c4e7c2e 100644 --- a/src/NadekoBot/Modules/Permissions/Permissions.cs +++ b/src/NadekoBot/Modules/Permissions/Permissions.cs @@ -30,7 +30,7 @@ namespace NadekoBot.Modules.Permissions string toSend = ""; using (var uow = DbHandler.UnitOfWork()) { - var perms = uow.GuildConfigs.For(channel.Guild.Id).Permissions.AsEnumerable().Reverse(); + var perms = uow.GuildConfigs.For(channel.Guild.Id).RootPermission.AsEnumerable().Reverse(); var i = 1; toSend = String.Join("\n", perms.Select(p => $"`{(i++)}.` {p.GetCommand()}")); @@ -52,10 +52,8 @@ namespace NadekoBot.Modules.Permissions Permission p; using (var uow = DbHandler.UnitOfWork()) { - var perms = uow.GuildConfigs.For(channel.Guild.Id).Permissions.AsEnumerable().ToList(); - p = perms[perms.Count - index]; - perms.RemoveAt(perms.Count - index); - uow.GuildConfigs.For(channel.Guild.Id).Permissions = perms; + var perms = uow.GuildConfigs.For(channel.Guild.Id).RootPermission; + p = perms.RemoveAt(perms.Count() - index); await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"`Removed permission \"{p.GetCommand()}\" from position #{index}.`").ConfigureAwait(false); @@ -78,13 +76,13 @@ namespace NadekoBot.Modules.Permissions Permission toInsert; using (var uow = DbHandler.UnitOfWork()) { - var perms = uow.GuildConfigs.For(channel.Guild.Id).Permissions.AsEnumerable().ToList(); - toInsert = perms[perms.Count - from]; - perms.RemoveAt(perms.Count - from); - uow.GuildConfigs.For(channel.Guild.Id).Permissions = perms; + var perms = uow.GuildConfigs.For(channel.Guild.Id).RootPermission; + var count = perms.Count(); + toInsert = perms.RemoveAt(count - from); if (from < to) to -= 1; - perms.Insert(perms.Count - to, toInsert); + perms.Insert(count - to, toInsert); + uow.GuildConfigs.For(channel.Guild.Id).RootPermission = perms; await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"`Moved permission \"{toInsert.GetCommand()}\" from #{from} to #{to}.`").ConfigureAwait(false); @@ -105,7 +103,7 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { - uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission { PrimaryTarget = PrimaryPermissionType.User, PrimaryTargetId = user.Id, @@ -126,7 +124,7 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { - uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission { PrimaryTarget = PrimaryPermissionType.User, PrimaryTargetId = user.Id, @@ -147,7 +145,7 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { - uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission { PrimaryTarget = PrimaryPermissionType.Role, PrimaryTargetId = role.Id, @@ -168,7 +166,7 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { - uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission { PrimaryTarget = PrimaryPermissionType.Role, PrimaryTargetId = role.Id, @@ -189,7 +187,7 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { - uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission { PrimaryTarget = PrimaryPermissionType.Channel, PrimaryTargetId = chnl.Id, @@ -210,7 +208,7 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { - uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission { PrimaryTarget = PrimaryPermissionType.Channel, PrimaryTargetId = chnl.Id, @@ -231,7 +229,7 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { - uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission { PrimaryTarget = PrimaryPermissionType.Channel, PrimaryTargetId = chnl.Id, @@ -252,7 +250,7 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { - uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission { PrimaryTarget = PrimaryPermissionType.Role, PrimaryTargetId = role.Id, @@ -273,7 +271,7 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { - uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission { PrimaryTarget = PrimaryPermissionType.User, PrimaryTargetId = user.Id, @@ -294,7 +292,7 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { - uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission { PrimaryTarget = PrimaryPermissionType.Channel, PrimaryTargetId = chnl.Id, @@ -315,7 +313,7 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { - uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission { PrimaryTarget = PrimaryPermissionType.Role, PrimaryTargetId = role.Id, @@ -336,7 +334,7 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { - uow.GuildConfigs.For(channel.Guild.Id).Permissions.Add(new Permission + uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission { PrimaryTarget = PrimaryPermissionType.User, PrimaryTargetId = user.Id, diff --git a/src/NadekoBot/Services/CommandHandler.cs b/src/NadekoBot/Services/CommandHandler.cs index 5f6eb49f..c884c476 100644 --- a/src/NadekoBot/Services/CommandHandler.cs +++ b/src/NadekoBot/Services/CommandHandler.cs @@ -127,17 +127,17 @@ namespace NadekoBot.Services } } var cmd = commands[i]; - List perms; + Permission rootPerm; //check permissions if (guild != null) { using (var uow = DbHandler.UnitOfWork()) { - perms = uow.GuildConfigs.For(guild.Id).Permissions; + rootPerm = uow.GuildConfigs.For(guild.Id).RootPermission; } int index; - if (!perms.CheckPermissions(message, cmd, out index)) - return new Tuple(null, SearchResult.FromError(CommandError.Exception, $"Permission error. Permission number {index} (`{(index != -1 ? perms[perms.Count - index].GetCommand() : "default")}`)")); + if (!rootPerm.AsEnumerable().CheckPermissions(message, cmd, out index)) + return new Tuple(null, SearchResult.FromError(CommandError.Exception, $"Permission error. Permission number {index} (`{(index != -1 ? rootPerm.GetAt(rootPerm.Count() - index).GetCommand() : "default")}`)")); } return new Tuple(commands[i], await commands[i].Execute(message, parseResult)); diff --git a/src/NadekoBot/Services/Database/Models/GuildConfig.cs b/src/NadekoBot/Services/Database/Models/GuildConfig.cs index 30d7253a..7ae9b0d0 100644 --- a/src/NadekoBot/Services/Database/Models/GuildConfig.cs +++ b/src/NadekoBot/Services/Database/Models/GuildConfig.cs @@ -43,6 +43,14 @@ namespace NadekoBot.Services.Database.Models public ulong? GenerateCurrencyChannelId { get; set; } //permissions - public List Permissions { get; set; } = new List(); + public Permission RootPermission { get; set; } = new Permission() + { + Next = null, + Previous = null, + PrimaryTarget = PrimaryPermissionType.Role, + PrimaryTargetId = 0, + SecondaryTarget = SecondaryPermissionType.AllModules, + SecondaryTargetName = "*", + }; } } diff --git a/src/NadekoBot/Services/Database/Models/Permission.cs b/src/NadekoBot/Services/Database/Models/Permission.cs index 6c620ecb..ea20f61b 100644 --- a/src/NadekoBot/Services/Database/Models/Permission.cs +++ b/src/NadekoBot/Services/Database/Models/Permission.cs @@ -8,6 +8,9 @@ namespace NadekoBot.Services.Database.Models { public class Permission : DbEntity { + public Permission Previous { get; set; } = null; + public Permission Next { get; set; } = null; + public PrimaryPermissionType PrimaryTarget { get; set; } public ulong PrimaryTargetId { get; set; } diff --git a/src/NadekoBot/Services/Database/NadekoContext.cs b/src/NadekoBot/Services/Database/NadekoContext.cs index b2da1c17..b5ead5f0 100644 --- a/src/NadekoBot/Services/Database/NadekoContext.cs +++ b/src/NadekoBot/Services/Database/NadekoContext.cs @@ -181,6 +181,13 @@ namespace NadekoBot.Services.Database .IsUnique(); #endregion + #region Permission + var permissionEntity = modelBuilder.Entity(); + permissionEntity + .HasOne(p => p.Next) + .WithOne(p => p.Previous); + #endregion + #region LogSettings //var logSettingEntity = modelBuilder.Entity(); diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs b/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs index be741701..17133bf4 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs +++ b/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs @@ -29,7 +29,7 @@ namespace NadekoBot.Services.Database.Repositories.Impl public GuildConfig For(ulong guildId) { var config = _set.Include(gc => gc.FollowedStreams) - .Include(gc => gc.Permissions) + .Include(gc => gc.RootPermission) .Include(gc => gc.LogSetting) .ThenInclude(ls=>ls.IgnoredChannels) .FirstOrDefault(c => c.GuildId == guildId); diff --git a/src/NadekoBot/Services/Database/UnitOfWork.cs b/src/NadekoBot/Services/Database/UnitOfWork.cs index 7a4c9520..b2b84e3e 100644 --- a/src/NadekoBot/Services/Database/UnitOfWork.cs +++ b/src/NadekoBot/Services/Database/UnitOfWork.cs @@ -10,7 +10,7 @@ namespace NadekoBot.Services.Database { public class UnitOfWork : IUnitOfWork { - private NadekoContext _context; + public NadekoContext _context; private IQuoteRepository _quotes; public IQuoteRepository Quotes => _quotes ?? (_quotes = new QuoteRepository(_context)); diff --git a/src/tests/Tests.cs b/src/tests/Tests.cs new file mode 100644 index 00000000..1448b1a9 --- /dev/null +++ b/src/tests/Tests.cs @@ -0,0 +1,111 @@ +using NadekoBot.Modules.Permissions; +using NadekoBot.Services.Database.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using Xunit; + +namespace Tests +{ + public class Tests + { + + private Permission GetRoot() + { + Permission root = new Permission(); + root.SecondaryTargetName = "Root"; + var cur = root; + for (var i = 1; i < 10; i++) + { + var p = new Permission(); + p.SecondaryTargetName = i.ToString(); + p.Previous = cur; + cur.Next = p; + cur = p; + } + return root; + } + [Fact] + public void CountTest() + { + var root = GetRoot(); + + Assert.Equal(10, root.Count()); + } + + [Fact] + public void AddTest() + { + var root = GetRoot(); + + root.Add(new Permission() { SecondaryTargetName = "Added" }); + + Assert.Equal(11, root.Count()); + + Assert.Equal("Added", root.AsEnumerable().Last().SecondaryTargetName); + } + + [Fact] + public void GetAtTest() + { + var root = GetRoot(); + Assert.Equal("Root", root.GetAt(0).SecondaryTargetName); + Assert.Equal("1", root.GetAt(1).SecondaryTargetName); + Assert.Equal("5", root.GetAt(5).SecondaryTargetName); + Assert.Equal("9", root.GetAt(9).SecondaryTargetName); + + Assert.Throws(typeof(IndexOutOfRangeException), () => { root.GetAt(-5); }); + Assert.Throws(typeof(IndexOutOfRangeException), () => { root.GetAt(10); }); + } + + [Fact] + public void InsertTest() { + + var root = GetRoot(); + + root.Insert(5, new Permission() { SecondaryTargetName = "in2" }); + + Assert.Equal(11, root.Count()); + Assert.Equal("in2", root.GetAt(5).SecondaryTargetName); + + root.Insert(0, new Permission() { SecondaryTargetName = "Inserted" }); + + root = root.Previous; + Assert.Equal("Inserted", root.SecondaryTargetName); + Assert.Equal(12, root.Count()); + Assert.Equal("Root", root.GetAt(1).SecondaryTargetName); + + Assert.Throws(typeof(IndexOutOfRangeException), () => { root.GetAt(12); }); + } + + [Fact] + public void RemoveAtTest() + { + var root = GetRoot(); + + var removed = root.RemoveAt(3); + + Assert.Equal("3", removed.SecondaryTargetName); + Assert.Equal(9, root.Count()); + + var temp = root.Next; + removed = root.RemoveAt(0); + + Assert.Equal(8, temp.Count()); + Assert.Equal(null, temp.Previous); + + Assert.Throws(typeof(IndexOutOfRangeException), () => { temp.RemoveAt(8); }); + Assert.Throws(typeof(IndexOutOfRangeException), () => { temp.RemoveAt(-1); }); + } + + [Fact] + public void TestGetRoot() + { + var root = GetRoot(); + + var random = root.GetAt(5).GetRoot(); + + Assert.Equal("Root", random.SecondaryTargetName); + } + } +} diff --git a/src/tests/bin/Debug/netcoreapp1.0/Discord.Net.Commands.dll b/src/tests/bin/Debug/netcoreapp1.0/Discord.Net.Commands.dll new file mode 100644 index 0000000000000000000000000000000000000000..45e99c5e3396e7d778f81669ffe9827373d65c4b GIT binary patch literal 65024 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%0A1B8!u2> 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 SPy+sx{$znaS>Qj81^x|QO*{4g literal 0 HcmV?d00001 diff --git a/src/tests/bin/Debug/netcoreapp1.0/Discord.Net.Commands.xml b/src/tests/bin/Debug/netcoreapp1.0/Discord.Net.Commands.xml new file mode 100644 index 00000000..4783bb54 --- /dev/null +++ b/src/tests/bin/Debug/netcoreapp1.0/Discord.Net.Commands.xml @@ -0,0 +1,26 @@ + + + + Discord.Net.Commands + + + + Provides aliases for a command. + + + The aliases which have been defined for the command. + + + Creates a new with the given aliases. + + + Sets priority of commands + + + The priority which has been set for the command + + + Creates a new with the given priority. + + + diff --git a/src/tests/bin/Debug/netcoreapp1.0/Discord.Net.dll b/src/tests/bin/Debug/netcoreapp1.0/Discord.Net.dll new file mode 100644 index 0000000000000000000000000000000000000000..fdc9e0e89a078d56f7cb8187f56f836277ecdd59 GIT binary patch literal 719360 zcmdpfcbr^R8TQ?K@67DZmh9~Aok=4b5;k0Rb|ZuqdZ^NCfB-^5CjoN9453}lCiE5p z(h0puQxHKwQHml6hyn^WKrBd6ii+5m?|I($+-cc_$oGfe@5>MNE$5u)^!LPN$9enJ> zLl2%mKRSNmA%{;aEu24b?)-_{?6%j$W23_kpW5D@UBg1}zOCcz+~hg0{rH`Ili1#H zCQWQ@THA5{oOPVEYD=B1jx!PbL{P`+6yDWzQ^EAhzd3M+p8q^&##!{r|EkoARN>!5 z;O-_&t22WI(fDshtJ4PE+a0aW_(r#t$rBx?xyHR2^7b|I)Z-67>3GN|eTY25P4a5f zop^(K&eT%5bSM;(Hs+lf{Rm-d{>^~%)Y9R{MDWP8I!LpW!QYqjw^dCrVP~>j@sDY9 zos=``(@2?4RJq9i)?7&j_=*J4P5coai`Nr@wn`*E!C@zkqUg z!_}b=C*e;tnH&;O>>Ko_^b}KJ9~6CqQ>TpNF`B|4YvRwCC=`F`DJ2A6u$T!c<-mp6zDm}8*Fz=z+Dja1Gm^z z$fgHImoA0E>l;K8?vtQJxV08LO7~ZQT8mBwA-dQ0oehA6Dn}BBMj=_*d~0z+I3?b5g%=|&efiQe@OyJ#q4d1a(WMuK zjw!t?bZqJ8q>C9v|JX7*UYgZ|#;nyN%sg8!jyrMfg^p7mM4Tb&A??sF(koSp-1z-l zIjB==T;GUdnj6l7&uA*b^dD4u4Y8@l4flgSWEl|Ua~5T7OV_bW9Tkl?Q*&(PqnBToeI*N`U)_^ZK(DAeK-WMP~U%n5FI5OZBBeIRM0;D!g{?~+T{ zFp>nW2MB4g!XU-#CkkP9bX-3?3ZYN{;Sr?$^AO{+h|!CFfWKv=EgR0Ii-Q6}9lH+7 z(D6{mZg?d0*)FFqM5?pWu-iiDdU^`j5v!%O`4zW$p2Vm&IO&Pko9ljBFmPJbXJIq%OQ7n-tmdf9Y@fQUXqSUj4 zD2?F&Eq+|4*zHA$6Usj;ZPJS_S+VcLsp32Qo+f|n&;>cy^lv8P@P>P4G_B+Z3-*U|Ojn0j%%ic{E>q*TP-{t9)176^NbCgSJA zy-`9=my;Tsa2-C1#%eoKy{#2K-P=~-GrjElMF@Gw|dZ{f_IHa|?cl}|XooVo;ba$%g-O^Ddh`K8(HXh-6Y8~R8}2m@Ty!Cq|g9LbU6l#Yd$(cvbDto#X}7Sl?U?rl)g zW|aQapri#Ut?SkYr#)FjYcd?b1i9?qS3+V*G$R@La4%aflt$M{g*s_Woiw&i8mAJv z7*Wvn1vC*`>&3QuvAtgGs24}oi=Fjiu3qe_7klc(pkA~&PZDV}n~1g~647Qp5pC`h zu_628H6k$@Qr4WKO~wSR)@JO3f`ZNH@JEN1O%)QZBQ>VNrpH#;%(x2Mj51CTT3}xi zJ`4Mj@U5^f3Eu|$lJM=YFA3iP`;zdZU|$lx6ZR$HbFeQ7-v#@U@ZGR43Eu_>^+=@>1Rpw9e!R=e}*2B)K2 z%}KR(cRJ05p)P- z1+7f9q;GoKj&#mOJJlj~YSVf<#U58@r#Aa9?Gyn>?bO+eE*CqpA?!$L zVb#v84sVOEpizNwxysV3EnP->5XVotU@ArjOvOaM4708cvz)4KB!4%PznkE1c{|2E zh(9RXu|wAoMeJlAIp=6YjP9-@dT|&aovqEU^dK}Db&a7-2RBt5-V_BY^hh z70$ibAM0$|s?5DsGM8h|{x9*)ENP< z)wzUQpqBclEuuji4v;Oke~Rn*;U4fM>pg5MIjywwSl1r_C02Vr_F%f|}*A8Ila0`}+yDFF2hmyADPJ?!V>Ghr$_%8+dCwUR$BP%MG`L+%nb67c&s( z*qRy0BHk}Be6bnaf#jV2sX$GI`&(GC!`KCI+6C7Qw^H0$j^EbIode1P8-m#y3}?^S z8Y)cfDX!tB6x&NFvS=g@Xf)O?_(?QEi->O?foM$VMktY%Fsx;@tol2%VfEJnp~t<_gh6k;ZmonEAI^pO)LlMzLqN7VUY zx4SvlywO?2%g^g>!T(vTMfbu%a=8Hyj_B@~MRa$e)Vun%%=d8)xQ|WNaWL}Vj&ek^4(9;3xAU-<&~b#H0CtkH zFZIg|UVLJk&Fk$v#Gi1;oYWj6s_UVeIrFW5@QrRi>3_V~(r8}ls;ylgu zdh+2yz@RT7|J?UNW%CGv`(8K7j@Qk)ht(7Agamrgtq{=)yF9T{<66Rc_wv>=@O<};XQA`XOhNH7f=8L#zDywTHUS>GbFTch#XE(; zxTTymCzB1#NhC1^1!@)`%Hcc#O45aScdq;gi*p)7dFFJI@Myv)Y35hrbN?q?`X z(AUTY=01{`g5tm&0f(|pP|`jp5U0iBe1oC1z#k?Xn1@JW3W@`B0vyV=z!RKa;h&v(fN<~t-Y1;s)42M*=%be0b% zYY)&=(nbxSoK`1Zm&JRUp*{0`0TE$1-3_<$83-Gl%WwpEkPN~m7?X(6V=~nM+89)0cvb7!Tsgl`pelFeEYz=4=deCBrnv zgZg#WWEgBUNIX}oXY4i9MZmn%Z%Dt_Sije*-|OhN3XBo=>vp7l(9(x2eV9}Zndk#U z13h5Kr8^Iq#C=D%r%)K(+oFe;-_=UvIyZJ5XD!5!o#scO&AQ=ZAg%sjj~hM?&K@&I z*CRbe%m!<9Q=w}sq&NyUO_)`fH7XU}0M%eenyPd+i=-2!%s*Am@I>ZCZ^+~}()G;CQG5FmreS4(&s95J=c zgkKV-D;?errZRf=3}aVBSP46LYg@lp6qz(=*v(~@p>m( zC-t{q^cAX|;(GPr+-@8&3>3U{-g=MjVLAk(*qop_fU`-`x(@G!FHBpzIXm9U!Nj(R zWB6QWgi_9SVgXFYV~x{%Ra&IZqQ7G`l4oRQQc+1sl6^Us8gk1MAsBQFG;Ff)9|o`phMxLS5#wO{)&&KRKEO_v z#a)9mCYb0yS;uuxrB5$JFUm@w*Rf>Fq(j7swN}4fM`fMW)=bt>tA>Zft`c4{W)x{7 zCRw}sQySFp5kkB|HZU)XiKU>nJ}H&2l$?9*fe^L>(-g2Ij#Sjq{k;O-7w zw2xf*8MqMlS%&k>b0og`0ZGa{PonTYBpa9?k;D`fevH6VR(O`>EMR|**e^g$>=zlx zGcS?&=Eo!{^Ai%-&X-ATL6Z&4Pf6le@K@s)s|5|Y8pj;Ou{PuQ8Pts9=M3bTUy%6b zmn13kDhc9vO=!xzPO5SJifmxsAc-kxT;n7z%GJ1Xh-)3hh07_QeDcYn+1`O!9LPJF z{ynk$RaNT1nZCDUhkxMA{;}bEYWk(!?~kz47&eb4@3?65zXrC0gU8Wncep$L4J44? zf;3+?D~lt?w&n)?(z(Nad&}Sp4weCKJ`?_q0N8`*_R+PmRc`x7%Gq)|y?(|1b_n7{ zpJTj;)v>X*7AH9k=$Xs%!ydPq^6jrr(@Q=LJ{Z3oem$Gl32431It#{^zAQ41=(Kg*ZvV<~z>%$SXF{J`j%_X0iF!TDpLdehA$uK>8EiP+jPMDQ8pA4HyQS zUHOzn^Op~of(q8KwRBSz%C}Hh#`=}80Oni+Hq_aWxYiVV1vVapzn|g%%%u2vtxqUl zt|&Vgx9n%tM&*0(n#RVA=XJW?g{`RTY`!~F9F@*x#O&Xk!?iF@5O6UJUNI3E{2kZ} zFM`ij|H3&i{%vk^I#d1&Vjk``Z0?*eeMFiveFdswcABQ|#i9Aea+rb!i zFqGNiR_O@VHrwiCmK+L5Bo!^Twe(iCOfqgv%uMt*{LP1d=ilKbfG9Qu;W)294s;{tIf*libp`vz(z)Tk=~t!9MRSnH^;+p zT(?KDo23JJ(I?Ph`wY2H6<{UCG~3S9rV|JDmnZWT^C9g9HtN4ge?dyvW?&rJ^R`Wn zvoX^@eLZlMT(tRJPFGX2%}H~t1<5NOuz~GJ17@3SU!CfdS%z)Ghmd-wY6P2DJ)DB3 zUW1Kydb(2zmtNN0T-?I(bG8fuEdz+OB9%hG-X?aX^WE9kFw1pv&D|;dvE{+`YNw2Y z4_Z_yU=Ib$!cQ+NHzBDZR=1cOFc=MW<{~!lz8wp%%&h7z)3${DSgsB)d|1!3cGIf=tQp>V#KM(8Rccrv? zoJ`VAhimEw<2~vptw_zNpXrw}?desiqAy_2oF<4f{nadj)J3JXv=)k8IpEm}ghk;X zVe7oJDPwD>C8?qPW)`|zU*8(lo?gD%QBfPu#)$4Zq3X z=`XQbTJ7HQw$3klo7$N#+Nv@rY84%3%dD?;2G;Zy*bFAy|d`Q!oFJMN1(^qca zBRw?Awbi%{{N`~v3jHg{cs9Yg=F8^IYRzE?X0J)KV)fC(27j9IZ2K8|z&wlutj4L1 zJ6e0i{*r;j+WK6h4YcaiNnBog5$!SGmPfHBFr$A~c%`lAH;;a$t$ECW1MSV@4jgE1 zUhP0w16+1yCmZ~2GbUdjEJBy#Vvb$Tc|9}5Vb^oChjlyRqpc^|)CAcE_*y^%JxU!(Vzp|IOmMLy@}6Q?jM#cDlbo!6Q3bDegqw2Qf% zFU5vs-{5bYW@#$yTeeAbr}H?=IMEhFu4`F$cX3}Q*Nu8$TgS4mTa12J(3Q`nmd<5B zHK@5%E`TG=pY=nHny{PEy>j`aTflJTdb+!TO7mC96$Y=z;R&i1%g>|&P>G{+qc=Vt z9mFjp5!EzD7vO#_T|2Tb*Fqg>%y>81IS|Yo{NDzi z|1QBax8P|5bqh%gwMA<6oJVnm5!rCj_a~ zj)hq>omX|T>m#3>UA~y~r@S+&kH?8>bJql&L3}S;98;H+^fEOU>B20mIEMY!%;2wd z4Y)JHY{@WTD;fi)JwsTu`2#^39M*0Aesafs81pbTWz6pKPS^&Y!`+MN5#AQln_~mE z6`kh(J>A~?VXHe|efDM?KRdI+cKF93#83xlc@zarFNP_Wb8eIqc0!B$%(%UDB+4pX z%tM!ht{SG?#em=O1`DMRFqP7?Q$6-x3yr84l>Re)WS3Tm8q}^XWJUoiJ&f~a| zJ&L-IT z8HYVor*~-N^p2gjeziXOtM$>F6!w&rCcUxz>k50Mq{}#s ze&TG$vKx8|UCWK~sF`d!Du9F&FuQBTosM46Xe_I2`lCpCb2JV-7NF61&_c8t{zen< zM{5@|RaUQTmM(>N&U_p{>ZLAI+%uPnCX#K&ydy%Z%;tQ|Za5j;0LvQ8>9R6Lj`ncl z0F&=@gsXMg?$)kW-ZI2GR%b(;OJatLeOH|FXLJd38>TB6Ojj~?5ksGz41p~;LyvI# zG%Km+dS~MeVZL8)Z63%pTi=;z4dQoT@1Ua}Mi@&8*E!Oe{gj@U^Q7Q~kCS~i-#Hyn zpO}aU4PZ5gy!X{6ckuCsv|^shP3PMC6jPjS=2g?jwc_@YK5Tq7 z)a&ZYr*D`4B7GBag~E?8)yItvEo0dTXBn?qm*~425*;$pxCoPjUDA2{6lcFh)wLq* zGtcC6p5^l)5oIa*RO#yo zF`(>>DvYA<4}op_&6T6ar{{W`dyiBHynU3O?+#~ zOJUr>byaNY#8W{eYHX~34!qtUpw=xIQNV#>KlY9YGU$25v{f+C-GP(Dk}qOUfFW>g)&^JylH5CkHFEZ- z@!M0JUh&J%p9rrTErUJBQNY%ymH9nntHqlN`yzP2s>REcwnhmRxBRS_^7-OyKwt$^ zp2kE^!psG?h_cvQ#qI)EHs$q65iiRSTSKz{=D15RL~?fsjV$Bo#+$9nF!2MZ4G?yK zGo%f{BtbCCuMI_9>;+rg=tksK>%XmZERyEw#6#zMgNZ*tPEW8m0+R$&?1qq~SgnwyWkJ-y5iZTu)w6dNAj4_LTMqlN)XikArPpxW+pG1C#TMZBXt2rJVJ*dTlt@ z!MZHltT$|%6Tqpb1lXXE)y&1%K* zNZUd@xMZ&J;5xhH=QB06k>lAgX>W)Jx6QKy6Tut^W(Cc!5rsCD7}EX_^q>R--*#Gz z<(lJ)Fr+;KV@`r`a0O$z=D8vaX`jG2B*8eeg0Wn49SNg$y!1zC&;KvEr~WU~H&Xc8 z@v&h%c3$;{Z#)A<7w*C^4l<;eky*$cse3}5BgFv zpL2C4T^Sr%-v2MT+hyu!PTxr3rzH7DAC~qv3XIO@SR9R2B6Hl@FfylO7@gCtQW$B6 z45Rb9RSF|*kzsUhw@P88Ju-~W?^Y>{v`L21IUbAbQ_DcwCBx`EZ^4@(r`g9< z3e#X8S1C+`eO#q54fb)B!Zg@N7TKqkL4$oc&5Y;0~vkxY(LL3^URYd!|KI^VKv7@FD}CenohR!kQFlw|u!P3KNEF!NeUJ zhrMO_3~Vfz;q*4#Qa&8GeT(T5Vi(V%Bhm{Q=@E<+hn2+;fJJDRQj1x8mKT_d*q`*B zD}cX0)_0XVamP$PZnNx9Z&|R$jQ#y%W@Wu&Cf~XMir;>I#{R8tAwBu|AMoFYTkJo# zd=&6`>D6}&{xP)$r?njxa-!G_NCV+nDugEX=-Vdz7m7^#xis0Yz79NU%&+_;P z@r>0fNJpD^IE{J*f6~zcdczYr-onG+vyGRfaDv{Y72F&h2j>VM`{AOz?#p>jg!m4s zi4SQj!vpYVI%$b7L0Qe#d2=|?ZMIqy#TOLBr%?I%9mKTxzP*~CaN!Z2I{#n@5$o{3uekAPa)c#f2Gsu1{?3rZ$ zChS>cam5r-oK5y0RTdY7pgo7$e+hdo*?(8r|5VxGD*H*5bx;Iu`8)<|683zuZk6?f zy?|Q3%BF-}LTy^u3(01LT}rlD*o(-v2zxQvtgv4s+gfGY$a-FQ2Z}iSA}R<4>qVU? zb;I@qzKb<*Icoqy4}~kOkf(696-HCI#tLI8++>9g3O9(5&zDaF6J94$!Tgp{xFNpP zOqX89VMFw41`)q3MRW;L+E<4=vH0SSGE`YWhU z<6Gyd{wX+@ucW@YPTx%bS5co8Js|L9ce;EvRN?O>nNVdbs^2B5){5%wMAcSNy_=}o zsai&?7ep1}1gXd`7*O%oLd|a@eDvxFA2z1lh~?H({%0D2I*=SWbHn*D@A&7+d&(KD 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

@Yzsca^;x8)PSS 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 literal 0 HcmV?d00001 diff --git a/src/tests/bin/Debug/netcoreapp1.0/Discord.Net.pdb b/src/tests/bin/Debug/netcoreapp1.0/Discord.Net.pdb new file mode 100644 index 0000000000000000000000000000000000000000..095b548c3ee9ce667678921b39b34f65c85e2808 GIT binary patch literal 1555968 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 rPWg)rS#snlP^3he3RP; + + + Discord.Net + + + +

Gets or sets the minimum log level severity that will be sent to the LogMessage event. + + + Returns a markdown-formatted string with bold formatting. + + + Returns a markdown-formatted string with italics formatting. + + + Returns a markdown-formatted string with underline formatting. + + + Returns a markdown-formatted string with strikethrough formatting. + + + Returns a markdown-formatted string with strikeout formatting. + + + Sanitizes the string, safely escaping any Markdown sequences. + + + The max time, in milliseconds, to wait for this request to complete. If null, a request will not time out. If a rate limit has been triggered for this request's bucket and will not be unpaused in time, this request will fail immediately. + + + C←S - Used to send most events. + + + C↔S - Used to keep the connection alive and measure latency. + + + C→S - Used to associate a connection with a token and specify configuration. + + + C→S - Used to update client's status and current game id. + + + C→S - Used to join a particular voice channel. + + + C→S - Used to ensure the guild's voice server is alive. + + + C→S - Used to resume a connection after a redirect occurs. + + + C←S - Used to notify a client that they must reconnect to another gateway. + + + C→S - Used to request members that were withheld by large_threshold + + + C←S - Used to notify the client that their session has expired and cannot be resumed. + + + C←S - Used to provide information to the client immediately on connection. + + + C←S - Used to reply to a client's heartbeat. + + + C→S - Used to request presence updates from particular guilds. + + + C→S - Used to associate a connection with a token. + + + C→S - Used to specify configuration. + + + C←S - Used to notify that the voice connection was successful and informs the client of available protocols. + + + C→S - Used to keep the connection alive and measure latency. + + + C←S - Used to reply to a client's heartbeat. + + + C←S - Used to provide an encryption key to the client. + + + C↔S - Used to inform that a certain user is speaking. + + + Creates a new REST/WebSocket discord client. + + + + + + + + + + + + Gets the current connection state of this client. + + + Gets the estimated round-trip latency, in milliseconds, to the gateway server. + + + Gets the bit rate of this converter. + + + Gets the bytes per sample. + + + Gets the maximum amount of channels this encoder supports. + + + Gets the input sampling rate of this converter. + + + Gets the number of samples per second for this stream. + + + Produces PCM samples from Opus-encoded audio. + PCM samples to decode. + Offset of the frame in input. + Buffer to store the decoded frame. + + + Gets the coding mode of the encoder. + + + Produces Opus encoded audio from PCM samples. + PCM samples to encode. + Buffer to store the encoded frame. + Length of the frame contained in outputBuffer. + + + Gets or sets whether Forward Error Correction is enabled. + + + Gets or sets whether Forward Error Correction is enabled. + + + Deletes this object and all its children. + + + Gets the unique identifier for this object. + + + Returns true if this object is getting live updates from the DiscordClient. + + + Returns a special string used to mention this object. + + + Gets when this object was created. + + + Updates this object's properties with its current state. + + + Gets a collection of all users in this channel. + + + Gets a user in this channel with the provided id. + + + Gets the recipient of all messages in this channel. + + + Closes this private channel, removing it from your channel list. + + + Adds a user to this group. + + + Leaves this group. + + + Gets the name of this channel. + + + Gets the position of this channel in the guild's channel list, relative to others of the same type. + + + Gets the guild this channel is a member of. + + + Creates a new invite to this channel. + The time (in seconds) until the invite expires. Set to null to never expire. + The max amount of times this invite may be used. Set to null to have unlimited uses. + If true, a user accepting this invite will be kicked from the guild after closing their client. + + + Returns a collection of all invites to this channel. + + + Gets a collection of permission overwrites for this channel. + + + Modifies this guild channel. + + + Gets the permission overwrite for a specific role, or null if one does not exist. + + + Gets the permission overwrite for a specific user, or null if one does not exist. + + + Removes the permission overwrite for the given role, if one exists. + + + Removes the permission overwrite for the given user, if one exists. + + + Adds or updates the permission overwrite for the given role. + + + Adds or updates the permission overwrite for the given user. + + + Gets a collection of all users in this channel. + + + Gets a user in this channel with the provided id. + + + Gets all messages in this channel's cache. + + + Sends a message to this message channel. + + + Sends a file to this text channel, with an optional caption. + + + Sends a file to this text channel, with an optional caption. + + + Gets a message from this message channel with the given id, or null if not found. + + + Gets the message from this channel's cache with the given id, or null if not found. + + + Gets the last N messages from this message channel. + + + Gets a collection of messages in this channel. + + + Gets a collection of pinned messages in this channel. + + + Bulk deletes multiple messages. + + + Broadcasts the "user is typing" message to all users in this channel, lasting 10 seconds. + + + Gets the current topic for this text channel. + + + Modifies this text channel. + + + Gets the bitrate, in bits per second, clients in this voice channel are requested to use. + + + Gets the max amount of users allowed to be connected to this channel at one time. A value of 0 represents no limit. + + + Modifies this voice channel. + + + Connects to this voice channel. + + + By default, only mentions will trigger notifications. + + + By default, all messages will trigger notifications. + + + Gets the name of this guild. + + + Gets the amount of time (in seconds) a user must be inactive in a voice channel for until they are automatically moved to the AFK voice channel, if one is set. + + + Returns true if this guild is embeddable (e.g. widget) + + + Gets the default message notifications for users who haven't explicitly set their notification settings. + + + Gets the level of mfa requirements a user must fulfill before being allowed to perform administrative actions in this guild. + + + Gets the level of requirements a user must fulfill before being allowed to post messages in this guild. + + + Returns the url to this guild's icon, or null if one is not set. + + + Returns the url to this guild's splash image, or null if one is not set. + + + Returns true if this guild is currently connected and ready to be used. Only applies to the WebSocket client. + + + Gets the id of the AFK voice channel for this guild if set, or null if not. + + + Gets the id of the the default channel for this guild. + + + Gets the id of the embed channel for this guild if set, or null if not. + + + Gets the id of the user that created this guild. + + + Gets the id of the region hosting this guild's voice channels. + + + Gets the IAudioClient currently associated with this guild. + + + Gets the built-in role containing all users in this guild. + + + Gets a collection of all custom emojis for this guild. + + + Gets a collection of all extra features added to this guild. + + + Gets a collection of all roles in this guild. + + + Modifies this guild. + + + Modifies this guild's embed. + + + Bulk modifies the channels of this guild. + + + Bulk modifies the roles of this guild. + + + Leaves this guild. If you are the owner, use Delete instead. + + + Gets a collection of all users banned on this guild. + + + Bans the provided user from this guild and optionally prunes their recent messages. + + + Bans the provided user id from this guild and optionally prunes their recent messages. + + + Unbans the provided user if it is currently banned. + + + Unbans the provided user id if it is currently banned. + + + Gets a collection of all channels in this guild. + + + Gets the channel in this guild with the provided id, or null if not found. + + + Creates a new text channel. + + + Creates a new voice channel. + + + Gets a collection of all invites to this guild. + + + Gets the role in this guild with the provided id, or null if not found. + + + Creates a new role. + + + Gets a collection of all users in this guild. + + + Gets the user in this guild with the provided id, or null if not found. + + + Gets the current user for this guild. + + + Downloads all users for this guild if the current list is incomplete. Only applies to the WebSocket client. + + + Removes all users from this guild if they have not logged on in a provided number of days or, if simulate is true, returns the number of users that would be removed. + + + Gets the name of this guild. + + + Returns the url to this guild's icon, or null if one is not set. + + + Returns true if the current user owns this guild. + + + Returns the current user's permissions for this guild. + + + Gets the unique identifier for this voice region. + + + Gets the name of this voice region. + + + Returns true if this voice region is exclusive to VIP accounts. + + + Returns true if this voice region is the closest to your machine. + + + Gets an example hostname for this voice region. + + + Gets an example port for this voice region. + + + Users have no additional MFA restriction on this guild. + + + Users must have MFA enabled on their account to perform administrative actions. + + + Users have no additional restrictions on sending messages to this guild. + + + Users must have a verified email on their account. + + + Users must fulfill the requirements of Low, and be registered on Discord for at least 5 minutes. + + + Users must fulfill the requirements of Medium, and be a member of this guild for at least 10 minutes. + + + Gets the unique identifier for this invite. + + + Gets the url used to accept this invite, using Code. + + + Gets the id of the the channel this invite is linked to. + + + Gets the id of the guild this invite is linked to. + + + Accepts this invite and joins the target guild. This will fail on bot accounts. + + + Gets the user that created this invite. + + + Returns true if this invite was revoked. + + + Returns true if users accepting this invite will be removed from the guild when they log off. + + + Gets the time (in seconds) until the invite expires, or null if it never expires. + + + Gets the max amount of times this invite may be used, or null if there is no limit. + + + Gets the amount of times this invite has been used. + + + Gets when this invite was created. + + + Returns true if this message was sent as a text-to-speech message. + + + Returns true if this message was added to its channel's pinned messages. + + + Returns the content for this message. + + + Gets the time this message was sent. + + + Gets the time of this message's last edit, if any. + + + Gets the channel this message was sent to. + + + Gets the author of this message. + + + Returns a collection of all attachments included in this message. + + + Returns a collection of all embeds included in this message. + + + Returns a collection of channel ids mentioned in this message. + + + Returns a collection of roles mentioned in this message. + + + Returns a collection of users mentioned in this message. + + + Gets the type of this system message. + + + Modifies this message. + + + Adds this message to its channel's pinned messages. + + + Removes this message from its channel's pinned messages. + + + Transforms this message's text into a human readable form, resolving mentions to that object's name. + + + Transforms this message's text into a human readable form, resolving mentions to that object's name. + + + Gets a blank ChannelPermissions that grants no permissions. + + + Gets a ChannelPermissions that grants all permissions for a given channelType. + + + Gets a packed value representing all the permissions in this ChannelPermissions. + + + If True, a user may create invites. + + + If True, a user may create, delete and modify this channel. + + + If True, a user may join channels. + + + If True, a user may send messages. + + + If True, a user may send text-to-speech messages. + + + If True, a user may delete messages. + + + If True, Discord will auto-embed links sent by this user. + + + If True, a user may send files. + + + If True, a user may read previous messages. + + + If True, a user may mention @everyone. + + + If True, a user may use custom emoji from other guilds. + + + If True, a user may connect to a voice channel. + + + If True, a user may speak in a voice channel. + + + If True, a user may mute users. + + + If True, a user may deafen users. + + + If True, a user may move other users between voice channels. + + + If True, a user may use voice-activity-detection rather than push-to-talk. + + + If True, a user may adjust permissions. This also implictly grants all other permissions. + + + Creates a new ChannelPermissions with the provided packed value. + + + Creates a new ChannelPermissions with the provided permissions. + + + Creates a new ChannelPermissions from this one, changing the provided non-null permissions. + + + Gets a blank GuildPermissions that grants no permissions. + + + Gets a GuildPermissions that grants all permissions. + + + Gets a packed value representing all the permissions in this GuildPermissions. + + + If True, a user may create invites. + + + If True, a user may ban users from the guild. + + + If True, a user may kick users from the guild. + + + If True, a user is granted all permissions, and cannot have them revoked via channel permissions. + + + If True, a user may create, delete and modify channels. + + + If True, a user may adjust guild properties. + + + If True, a user may join channels. + + + If True, a user may send messages. + + + If True, a user may send text-to-speech messages. + + + If True, a user may delete messages. + + + If True, Discord will auto-embed links sent by this user. + + + If True, a user may send files. + + + If True, a user may read previous messages. + + + If True, a user may mention @everyone. + + + If True, a user may use custom emoji from other guilds. + + + If True, a user may connect to a voice channel. + + + If True, a user may speak in a voice channel. + + + If True, a user may mute users. + + + If True, a user may deafen users. + + + If True, a user may move other users between voice channels. + + + If True, a user may use voice-activity-detection rather than push-to-talk. + + + If True, a user may change their own nickname. + + + If True, a user may change the nickname of other users. + + + If True, a user may adjust roles. + + + Creates a new GuildPermissions with the provided packed value. + + + Creates a new GuildPermissions with the provided permissions. + + + Creates a new GuildPermissions from this one, changing the provided non-null permissions. + + + Gets the unique identifier for the object this overwrite is targeting. + + + Gets the type of object this overwrite is targeting. + + + Gets the permissions associated with this overwrite entry. + + + Creates a new Overwrite with provided target information and modified permissions. + + + Gets a blank OverwritePermissions that inherits all permissions. + + + Gets a OverwritePermissions that grants all permissions for a given channelType. + + + Gets a OverwritePermissions that denies all permissions for a given channelType. + + + Gets a packed value representing all the allowed permissions in this OverwritePermissions. + + + Gets a packed value representing all the denied permissions in this OverwritePermissions. + + + If Allowed, a user may create invites. + + + If Allowed, a user may create, delete and modify this channel. + + + If Allowed, a user may join channels. + + + If Allowed, a user may send messages. + + + If Allowed, a user may send text-to-speech messages. + + + If Allowed, a user may delete messages. + + + If Allowed, Discord will auto-embed links sent by this user. + + + If Allowed, a user may send files. + + + If Allowed, a user may read previous messages. + + + If Allowed, a user may mention @everyone. + + + If Allowed, a user may use custom emoji from other guilds. + + + If Allowed, a user may connect to a voice channel. + + + If Allowed, a user may speak in a voice channel. + + + If Allowed, a user may mute users. + + + If Allowed, a user may deafen users. + + + If Allowed, a user may move other users between voice channels. + + + If Allowed, a user may use voice-activity-detection rather than push-to-talk. + + + If Allowed, a user may adjust permissions. This also implictly grants all other permissions. + + + Creates a new OverwritePermissions with the provided allow and deny packed values. + + + Creates a new ChannelPermissions with the provided permissions. + + + Creates a new OverwritePermissions from this one, changing the provided non-null permissions. + + + Gets the default user color value. + + + Gets the encoded value for this color. + + + Gets the red component for this color. + + + Gets the green component for this color. + + + Gets the blue component for this color. + + + Gets the color given to users of this role. + + + Returns true if users of this role are separated in the user list. + + + Returns true if this role is automatically managed by Discord. + + + Gets the name of this role. + + + Gets the permissions granted to members of this role. + + + Gets this role's position relative to other roles in the same guild. + + + Gets the id of the guild owning this role. + + + Modifies this role. + + + Kicks this user from this group. + + + Returns a private message channel to this user, creating one if it does not already exist. + + + A Guild-User pairing. + + + Gets when this user joined this guild. + + + Gets the nickname for this user. + + + Gets the guild-level permissions granted to this user by their roles. + + + Gets the guild for this guild-user pair. + + + Returns a collection of the roles this user is a member of in this guild, including the guild's @everyone role. + + + Gets the level permissions granted to this user to a given channel. + + + Kicks this user from this guild. + + + Modifies this user's properties in this guild. + + + Returns a private message channel to this user, creating one if it does not already exist. + + + Gets the game this user is currently playing, if any. + + + Gets the current status of this user. + + + Gets the email associated with this user. + + + Returns true if this user's email has been verified. + + + Returns true if this user has enabled MFA on their account. + + + Gets the url to this user's avatar. + + + Gets the per-username unique id for this user. + + + Gets the per-username unique id for this user. + + + Returns true if this user is a bot account. + + + Gets the username for this user. + + + Returns true if the guild has deafened this user. + + + Returns true if the guild has muted this user. + + + Returns true if this user has marked themselves as deafened. + + + Returns true if this user has marked themselves as muted. + + + Returns true if the guild is temporarily blocking audio to/from this user. + + + Gets the voice channel this user is currently in, if any. + + + Gets the unique identifier for this user's voice session. + + + Gets the unique identifier for this bucket. + + + Gets the name of this bucket. + + + Gets the amount of requests that may be sent per window. + + + Gets the length of this bucket's window, in seconds. + + + Gets the type of account this bucket affects. + + + Gets this bucket's parent. + + + Creates a new REST-only discord client. + + + Creates a new REST-only discord client. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets or sets the provider used to generate new REST connections. + + + Creates a new RPC discord client. + + + Creates a new RPC discord client. + + + + + + + + + Gets or sets the Discord client/application id used for this RPC connection. + + + Gets or sets the origin used for this RPC connection. + + + Gets or sets the time, in milliseconds, to wait for a connection to complete before aborting. + + + Gets or sets the provider used to generate new websocket connections. + + + Parses a provided user mention string. + + + Tries to parse a provided user mention string. + + + Parses a provided channel mention string. + + + Tries to parse a provided channel mention string. + + + Parses a provided role mention string. + + + Tries to parse a provided role mention string. + + + Gets the value for this paramter. + + + Returns true if this value has been specified. + + + Creates a new Parameter with the provided value. + + + Gets the shard id of this client. + + + Gets the current connection state of this client. + + + Gets the estimated round-trip latency, in milliseconds, to the gateway server. + + + Creates a new REST/WebSocket discord client. + + + Creates a new REST/WebSocket discord client. + + + + + + + + + + + + + + + + + + + + + + + + + + + Downloads the users list for all large guilds. + + + Downloads the users list for the provided guilds, if they don't have a complete list. + + + Gets or sets the time, in milliseconds, to wait for a connection to complete before aborting. + + + Gets or sets the id for this shard. Must be less than TotalShards. + + + Gets or sets the total number of shards for this application. + + + Gets or sets the number of messages per channel that should be kept in cache. Setting this to zero disables the message cache entirely. + + + + Gets or sets the max number of users a guild may have for offline users to be included in the READY packet. Max is 250. + + + + Gets or sets the type of audio this DiscordClient supports. + + + Gets or sets the provider used to generate new websocket connections. + + + diff --git a/src/tests/bin/Debug/netcoreapp1.0/NadekoBot.dll b/src/tests/bin/Debug/netcoreapp1.0/NadekoBot.dll new file mode 100644 index 0000000000000000000000000000000000000000..246ffe93a837c66cbe2f8a55c580408b7eee8052 GIT binary patch literal 998400 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

1WQIC{r~+wmAuLFV_D@^N=2r>vzGIe`ilt zAw@*MKfq%k;2*)8V^0VL0?vrJ0{$Trr{BZx`t~FYOPy)uI+7U!om>m{a-CyOSU=d4 zkLf@o{}-<8$y~{ZwI>XO{LqQWHB&ZkPgp1gTZMbU=2N6TQG3GbHXuJ)s-1CnCRTdm>W$ft0LOtmft+mWV{=(7WyR4p)X_o}|MX4hF(-(1~;~rfk-5uuS$ZmF@c% zpKJw0x;GrGY{P1obzh-4U!@0gpTnSK3k(QFL|18F$uMkHE9H(@wLL5DMP`jn?2 z$8cB*64?~caEJoRuZl;9YO4604&@AoGF1a)8;%fPPk#T+JjA{G!18QzJnk>k`-%7Y zHp0H2c#qyznN@Vse1M?feD8elG%=CS_Wi_ld8zg|X@+~Ug2+Q zd%TdPY3d4UwrGQ!GooNWzOCg^oz^(_aymL9^K6*mrAfORd5%nLRCdo7D}a~e#mGko zwSLDlUXth6-XkH#?Wo9yp|BftBBp^!k(s?y0hjmi@{?7an4l&TM^s#SxBpUex2`l$+{BeF2z<6To0Ei3q4fP)Xli zBRk|tJK3!|cy{wCkkCPsbMzf|yXjImZ?A`FEz?$^I8(~B)T)wJo};@@RagwRfw zP!>;?Wn!!zt|1|WoanYJPnL7z!wps(7{h+Qy9hqSkrGMsVf|BFo|_ddD(rrULE2Sd z>rs(Yj|x{0ezjYytZ2Ft6~ShR3d>_wg5~S0-J}opq>{S;RE%0G`$P009@>+M;2dgr z05~`b?!9oM>#{t1crNf5vwJOZU-)qXXBG=HV_y{ZqidZ5x7zu{{ys!geM(g>Bl0UdUd3V5W_?^h?W zdqWutl};z3(wTHUm3}U`3raI^YUODe1eiF+9RVUQt1dXI??`$;xNL;4__qwg)6=Vl;-ZU--5J7v)GC zKgc49<2aOZ#{FMS$y?5+(4jYqsW+6Xgg5(h1|c5m4eTG{KWsjfei#Uejp_$ZA9lju z3gA(F!mfKLdg@X5b9#VxWbsT6Zp}b{-w1T$tPMXH`#Vd3WVHj7-lzgU4;7I^dfpJv z8lOz+4zW)4prvk)h_$z96H%Dv5u`b`7H|4XYPVF6P^_)s)tw}KRhw1DBE)aq{z!f0 z{g`Os4IHAtV1{@%GadgYVq`j^IMPZt(^(YoH@z{^U_j*A5}~1X%Tio0vJa%G zwmrU8Q;SJ|V)<0$SUZvXAKHN{sgYt09-I8^vcGrIj$YY3P<5No;kv=b@IciiY9CZj z`A95aC{!Jt$Z&v3q3U>I0UtdH?w;gTE1eL4`%m;se})x84-!%x1cz*0+=LK}$ElPO zoF6A^#E;Zi0B8*YjfqAwcnQXSsVDJ+(~-E51p)5`!znirQ{_~p?1@;2yAHs01pX^S zoAdVJ6Cg!S{)to0PXvaS4-q-fGb0ced+H$PT~NM1Q^t`eLfqAGRIYo}JYhS#33So6YLm@CXLD`BtHk@EHS6%n zU~;n?IkZ1Glzt5IxW(SNh;&nv;MTPPydU|?z2S-*-dm(cH>)gI^#KY*uUCOef|na5 znJrMhLq*2p>K24+^LX&RdrpLST1c8PQqavMwSA!*GCdeA&EGAyjFS7LvI`6Kbf&h3 zcG9G`21>6@E;pJ_w++&*$GC>2&`oWpb6m-DE;;4>0!hEA3%>Xra(fBrO8tt-m&6b+ zPD*t4`KB(Io3nz!(+1HrWR0qPOeb9FIN*S2*!uY$a{ywUFmUv=PWWomO|@7*gJ#@H zzq^ATe<(jkGg5e<8MmZE&A2%{(v0Xq=z~2Vb@4Pq(Ld=#G$WG+nz5@_jFCE%r>Skh zzBUJe@w!9hdP;h<9+bj{ozCJib;vAM{BJI-eF1=H~@dSeVW)9{JB2u*1PcTJvshO z3~PC}(f1%cSnpa*Z>!9AbkcmV>s`2l4eMQew(DIz#!o`p$=d+nH;`Lkd1Ldr4K1d` z@QLJIaibVz>4brl6^saume}Eg${6X{t3UhNSnd1idPJ^cwZu5*B)HpwE|b?qnLxDb zP(V%l5{)zSX7j!X>IWe8D0&a>+v2$EVFc7k_w9fX%(G~?;yHg9%t!aQ4XeXq zC%!w2cBt!s^zrd$fl-+O$N&;aXZ#LSK&+U3t`?n;hMhdrTC|yPBOMFoq>hJAyH(fm zuum%f@q z2@#dv9?xC6cfd%AG}_3ySsqWb=3C%OauIb6h-z=|&BW3nv}ipl3W^yC zmkS1~;~D_QyA2KkWQpzcg@+V_=?kx{W7BaQHJC1EM*ZQzm30NRXlbaPm1r(pzygp) zm~LeH!oj-R3Tb8@(bnmJ}OI7A~OW3LYnvu zxW_~jH&DjY45hB58_|cN$u5@T%qebp=GhNkoi~WN#nW`GELB@bY^}+VucmIA=cOgO zF)@`b^faVCwKQC{<06eFprxpO|@QW(0ZleJha%p%9eGc~-0UTFTi@{nVSZ4JN z##ObT!FX23GO!}2!76-%y(7!32E)QyQw>%TG#D1v?C_VpRAS$-62yeVlWa;;es~h% zgHQvFMM%FJi_~_;+^dO^gzr3&Q?Wc-YHL)P(|LF*)^?sE)kvKOr(&DxJUORgP2H{N z6cD4ZVq2a~E{BAZ^{P-5WNjkfwzX>!JO~@CMQr4Wt;!5Vg~R^BgRo23UwG9TgLn#- zZe;CCouw*xoqbUqf8<0MhQCwYY|s~D_G9NY= z-___uEueBb!|(pl;!K78nub3&cHkL?=YjW;P23gqYAqt(ZD-T%c+>s}+}s4L_Iv6Q z%>6VCQ(v~it#7D{4+VFQ8G4ycX34t;rUWnTLG%IKr+>L}JE zsy4WyF}pgvqS038H}z_U(j+!jpPVZiQJ;I1M*QuADrjo39-XbGva2`C^p<{c(Z2Js zbQa~%$;CxW=UyS5mr!-4ZIM^Ll3Q#|xm8`X6}xVT7uMcJ7!!o(osn21Go$bq>ZJlR2YlaN z{dE*7EWK1v*N2TUK27o6AE4NX(jB6DGh8ruI6H9xK@l=FnVenrbPDIEPe(#Gn(N!!8POTCAOi?;r2=lsbfybrH<`Ka>ys>kAvt?f9wm7 z^asX*uuS+!4uhaP=tT4}(;+9TkFik6F|k{aQl82wdqFD1oziuCjcQSKE*Bn%zudL( z6VZGV@E5jo!eA4&>8Ex+7<2^o2XX9m-aDbg911)=kWJuMW!76g(&9GS1#F+RAKtE~ ze#FXW<}joTGCIAE@66FA#8N*obPPjrVH(}qwL}hw50_l&H!PJ~DQYp4=9rP+O{zNt zIWa3nY(1UlP`Q|+1cN~4O|{P;vVDzo1fqz7g1Y%gREM|OOi9?jJvx#RaAg#nAd8)m zMI<-9yo)>sUe6ERDHH)~Yw+?bYtrH_dC6J9A-f?iW9e|U$ZVm{L4fOEk8^B{#TLPVJ;zc8R=7 zBFbD8>T}_f3D;fpQ9e~qmCC+gEySJVLKhu@x}v`C;*V2tj-j3G65k(x%Yb#jgTnzC zUYpPR75UBg+;tja!|)f%I@Vq>_S!+ReiSIi7z8>`1#@u5F$i|AY>qT_OZiib*cf^| zDy@Gs5~RmKG-@~I-XqPm#{t6yY79Aq-Qx!6rQrEc_guRdK=h71A$5%3@KTsvZX!K* z#9%L)$ylxNAQKst4D+btyX|Pf*p!o%hR-S(gCZW+b7i+bCw9U{e)Th(a4md>5XsQY zB7~UhO1+Q0(fwg)Rq4|A9w$ z^FON|Iz%;KD78J^##Vi~bkHhD411nnzIde^gy3!S@ysorrjtq0-!y$GFj~vj) z4L_E?!W{arf>CSfgQbU*h(5eWZi>D_M;~4!i*nF+f~Aj6=0y6#`6!tzF(F?i9ISvu zf-!H(G~hSha0{d?o~B=Io*7Rxo>s%9`4CD0G>_nF+kn-!#i}insx5!2ElJgunrd4} zwQ{Yiq+mqku|B5<^11doYdUnj*Gid=oD{X#hte&`MtoN?f{j>p!Npz=q7P93Ly?XY zbU3igk3`vjL2po$4Lh&I+pYHho>=dG2?9lDd{qqA+?JU zCv%eJnDj-XxEb~n>Vt-pH{u#0quHfDKj@Txph9O@-4`VLpI0`{>sR{R7p<&RQlzrj z%hyC@uZUKbQCwvYQgmP08DV7^Vk>)cq_X4ArRX$SSw?HFvJ5lb3Rc|^*7q>vZ#8a~ zE#}25T0r!7#|+ZWGuxNSGN+Ol-`C5~m!4-|=N1PBVgJ@dx)EEh+-i#Mq9D~tY z1;^dWRca$y5uGxJc*F*7M84a1xd*`VjKN=MyAlQ$?VA3wT@z3u#%bXkvlep5FDBrZ_TUtMHw#-VoWh|EwquWu)m)#hwNaPG#iRz99X}g+E-S z2oSA8C(aZTn3vb0ZC)aS$;#!`O(Et;m2eNrJ!+uPQCywiK}3z z_tRCdCm^9j)JM>+aY<(gg;Kj7Unz%_M{au%TkU!qiN$)`8FVlx&%o8ThZm(HFu!96 z*4yYrWRb~`k(EWPw^0_|qMEW)PT7lUA?|n@(>J0D&DuZ0H8t{afcQ8WWn}a5EFkG) z$;XLVd=!rDcahF52zwcu<)e=f@-c+|Js(Ld_&9|Q_;@B<@$n_cM}~lpbRv9YvgY`x zER|C>A49x(J{IUcD%}2twaK$lM!?7ERvym*l5QX$-vl4yX+59h_!m5n$8#|JSGb-% zV`{g=FeGY*nvpLS4!)dA2Yi_dSA2Qd@r5Da3!MmGn5;RzC`;v(&6g0*<;&6+oqSoo zU>hU&avsXa=F0^@(kGKIZ7v{R^n7Z_7d@X6@+Ex!*L-2&;LC+{z?bvkiZ8D?zAyxQ zp%dW?lQqW|WvQI9`4Zy)i!WIC0biz}jBLJK1SCCyd^uQr(evpcU-W!h$d~Z>U-N~9 zgD)4;0bi!W69J0ADUg83A9m1Bm5?@4=05iZv7AX}m9uXlFs#9AZawvTK6QAfy#J&VXgyJibAj zHZ`dMSnsxDt<06kHlFsushtqSPb%^QItOE7!|;Zo7h>P$lgKNWUSvm~bTG=(OIu zjQZ$AT9D~-M}2N3Re36>?3L6IcP*H`HjYgn<`n#eV{vT%!1EBb=PZ;Mv?pKWVf->1 zNct?)w&4`;GaOV4KZl&+0+I&Rg0Leb(z1fEtt7W)Js!3!2iAhI-ylDP|LI_cl%tbe zLkFGYYPjkoZ#Wh+1f7IVgvCtOTqjYM$|<{(gm}Q>==d-WUKVHZH_vb<&MxBbwI~k! zwR0WrTkQcBUk^~* zbzCA>bRYYdm@RSZMk1N$yBO=jkyYO!&Ui(D_>nA%&Ui!I^)k1oc@StC1BOvYat-%s z4CUcyPcyN*@aOs-4sqTDqV+vRc>vt(0D1c3Y$84G%Y(zmKZMOE*s6UCz|c@ z*&7NO8^01D_w4M~%>`vc_ zchS2u<uSTe}`rs!y9W4pTrng>Zm zPYS}=6g~cIl)bXV(o>L453iIEJ=|qaA}AwG5!1}MC?^rhT%699h!A&nBG_xgyMZyq zH(k&g(f2%@|DFqcK@QH>Im8y@&*=^)Kf6hO7J&NyJMzPvAU_Y#f&APDSMu|2M1B|u z`Joe$AEx{}`MDqAx@5Yk_F{L_t~4t@q5|@hMF!=^l40eCfs~)7==cZnBYMvHXYym| zDafXW@*{dEKOzS5(-blPLw=OGIGrs&A^!hFeiG&*tYcwQKF0A2!Ad_a;bD!pA#!yE z2#=5N4|SVaj0kRf#3S;j3B}WV2)0K&2ygmoGBjs<#B5;xDoZBdD_14#>b6Jl30E~T z2gY_+KIuI?Ut!|P#;n|Hlhpdyl%_@2mTI|VYG*xtta&=Qu zWvY5)Pf0`E>9NSWp&IZPcil#Kp0E4yA)(;;GEmX{-b(I%sjEYS)nWC@)Q#i|?D5z# zlgK=ebWUBpAb*-rJk5tdT|EbH`dacUM_pY9%&RLVpt@2*udeun8x)xXW9wdNd?9;( zN?1IdopZCQij{+^dV>yG{VY6ERUcSYrT5(og{qlud?x?s+Pa5r!)qz^cKcd2TcjDVj#H9456#e$uY}L1VYC}lEkDXKZzIc) zA7$XjN8-m6woIC#d@D@1vDMMeG>RW({8(y9%kma@EvyiH(&{zl7Eja3yh?wyh0=VW zY~lM>eZGfiWy=LCy~TJf2feuxC1=^HBkSI=+<6xv5!w7V28)@(VEva44AwhvWw1Vu7%T?D zV9|*fET&xFV2Kp=pMPMmR5lD&R^c>QDx3z3A?)T&72S-%Ql_d$w!sSVNSj1#)`s9S zj<-g5Uu|kIfY?*KUj;&7vp9d3IcUPg!XI{`#?$X3YI-#}KoiuZdlG6+*!K?0e1Is3 zNhiE#CG#O3ar`e@1_vJoV(>NQFQnv@@nsxlPSbRLTlO!@9G3&Jb zWvLn7O$HqhQneqneUu_T2V0U`q3j@tx0wZZP?5}FMdxFBw?VZ~C;HvO&VNb3L{^}d zSH*0Bex(Oq5r#NeCc+N6N5I|e#m-@M{NezL6eorta;lu#h!e*OtL3=Kjm+no&sTK0 zA>ciDw8`xgNofO1PcxLVLbtIM&Rg0|ZcL2qDw(e~xhVvj$UZ?pJk8&RO=0#LZkFv+ zWohxWebTOK)?)Jtw#(|Mvp=AeGvc;17G}O?uAWA2bo*2^;{7OSWGF2Y-H2rpjXB@R zf~p~HZt*g>mh4kPxDpahFyaXtHhaWVW3M0ko93)(o!SK~@9Kv|%$36;!b zx2Sevz>|@d@ah~fsPf#YqlaD5e;=)WnlDnJ?i7<#cLGA%DC= zPhpsUiwLRMWKDGb9pc`A?sNn@Io6xd+`aIJi*WtgC*}1b{EUSAA>8O#=NMpz!q&Wi zKQ}K2r1vQw0Q)?G^RCNNpy2nC9sUj!!w%CfvVi9Pg3Dukyj(lFA<}lhU$@S67s09H zB`9@VMygwkEbDNl$kgE^j;T8fY8#CD9>u1&Cbx8EFE$--p>=W4g$T{PIEef1?I=|z z__#qUI9Eku#u{M2^%EV8$ydY0fGb{$w^n#9cd^U_1EGcJL=NyVCGxTd_^?L{4Yy&N z>Fw~+rb|tS4#Pd2TOpp#W9kL2Nbd>grrICScT#Kc!&llr!tHKvxe!UknYD=INy-CB zUx}nYq!}5A@gbeYR_C~`ERynSe?nd`+Bg@a5SZ#U%nP@n!pZzVf3<}|PPVS?ix+l| zx4jT2g{ymc_)YO`MAB`S-TIu1hH$aNmRN|Ei10c*U}!%epqgQmVHUS}Ij!Y(M^%l1 z)L~7rJLi0%sp|;&h{%JEMcTvLjd7hdyt7F<{{Wp$CetashRrX6K%I%|N9*DbAr6+# zwRI`Vu1k@x3okRpO|+~F&LB2bmz*<*xc?LaAFYfP?qQ%MN`^ldI9N9}S~7~W$td<@ zyo@{pGH^1mDKc_S20}`F?-Dm_zlPXlends$Y5uwq0Z-0a#2$*@=qR$3F?7^^TT0L_GsJ3ZNSq1u!iJ7523_ZWh=SJugChZ9mHM zs>RtnZA|O{I9&3yFEzQvTc`2{#(7}eQdOS$B}x^Rt82d{RqtiuX@=l?(-Y}N-f4=Y z^5C5&KC9WSDUzuC*{8z8PulpcLZyGQH-3kBsOLFh#lJ1_mxL}JfIs}#-Iv6vUWx63 zKc~<6E(@=S4W=rXyZ(yu_1-zS)r;FCjzDw%4m^Duern4xjYeT@qE)6iv^ot6ZkE7d(nC1NexFIf7E!!cy?fcS$+|)eMXwARwQ)Rtn)7W?7B0; zZpZV0;}ACR*wh$C#=p2Ji0ym*!fwUw@$h?WYhDb-($B=twa_2nk$JZg_wf`N!C+-KTiO`_4dVAHt%Sn0FqszJz%kK2lX-dLtLolEB`In900C>{xVkVijh$fYJ(c z67nO~!gT%=Hz_RT&1-A#z`Y>A+M3naLR5`+DG75y53G+L#Qa(=GRiMuo z30|uAFx@&ju8l((Y=vH?HOe>;JnUum0Z*;(cq}T=moOirG}fc5Y3)mU<9SER8v!jn z%r8NG6Xq)L`M`>p>5Y%L8}k%u+0}di>PcyhsX-{)65R$ou)bYUFZvQ@0rDeNZB3`3 z<_Ysn&BKy%E?*x91ACj=?_o1sCx z**;!d^J~x^3G?lIOW$zw6Bgq7qXmbXA37j^`ECR6t?x8oEuck4n4Mq6yaE&qH{Cz6 zq3ulT6~=t9gzd2hdM)eQ!~BL6w!i(3XJVtw;RyW|tvbqFjebsF!VE@#V`#!mS!~Qg zP?j)bAGW?xW*kza8ku4qQqWgn;s|ArA8nR`f)1;VIoN#smNDO>Z`PPHP;T3|9nxA~ z1KPv-b`N~R%$J>G;$*@c38^EcpPQS$0vqu!VTJ@)4|7@I8)N3Y?eyBV9c+rW<_>Ve z_P4GtSl?Ll2>RtKkm7OXub&~s$hng_5z@*2+sV9uDTM9GOM+a+n(3Rwlw!lUqu_XR z3VJAc+F-_mf*DBF*4zr-TbcX_`ieDbXZ8!U)L2sqjl^<0nIdQ;TgJFPmb+ujAp!Mc z%v0bM_46=u8h$BFBD&)XcXlH&$8Pu^a#9SNIm}dhC zOPCwyyP7Wz+NiC05foY3ICQb|eLvUv65y2$-5LC&ubrt1c$zSWgBHulE&(Uon&IAe zh4)eK+FUXLHr$kgstXqxGt>MDDXByY&NMU7H>~en$cy#0LGKxeK0VV+2QAju7xCT& zZ)Tb!0&KWB2PxS15f7X1m~)M}=uyj|gt-H}vexQ{hg>haEeHiCJ%^^lRclbTouG^{P%$xK8^&iL zg#Y@Q{V*Fi6M7apF`!_>_|ZY=F!KWX8ujTgb3QQZn*|rKypqu z|3zKdzNed6;0t||%v0!Z)IM#^BFGCRF=1W_Qru(`pyP1#h1<*(XkVtd&D;z9XMG!^ zH2MSU_sAIdDZ-cR3fAh!$H{!YfH|xW# zqmaoN==%drKa|FCQ~QFU$d&)vnh6VBx#b0}+{@=XUaf)FXWbTCQ0Q%nXl(_WrprohHqUu|GR+nV3zTUt&xJp(zo%?w@ZN;@{_(+N|F z&?mlQJ^qA@vlY%V*P(8-lEcitf&86iu7x}k!}xS3SMzVd4O{ag0;@68oaWnnjQ6!f zF0>WH%?%w~Pd+T@-80Sg$i?>6CjtvG-2CZ%aag9A2a-POQ(M|K7y;1N$$S`$g3dA{ z@38cpWnKfHN$CaVJk*9GysoAr^0R#2F@`o@&HTReExjDN%I3V-`=)!}jovrKQ!xE; zn?m9P?P>pMJpc!3cj#=N>!H0+8jyY?98zwQLY^JqkZQA$kg7foX=BhlNVV3-*$`_< zM0OeJ;MDmo&`vUIW&TFiQNd~jvy87>*mVmV91!w`D(naVVuqw z0TRKu!)z<00KLp1eTD2AiL<@(xf69~oFik`m>q;9f>ib9S~FP4T$KL6ORUAUW~h)& zkdH;?n2|z;dE^eWzsg$mEc(=gq-UNvJa#5Hwh3lNMDB>q!-^Dn_)QR}-aKw*Dpi~Q zF>~<`O!cCmiRukUJG87D46-`5qd;x7xDw@#hix$d09x0AkJ_gD})RTkP$#$6|yzz#Z>h`UK4VD5NEV`*{l+h3Xp?= zd>~|0fQ&)!`dG+qOQ6YrHD>47E9NsHtMg+4^1dmA)v7XkK*nsG53qB9$Zn7Vi+pIx zg&h8zLq0Msgj8(e^7+JUAfyOZ&8GUoY$Bu&`k+O=Gd+d0#wv$Jel`Pz{MYC6yV*@h z3L^=|sW*R^J%yOBTt1CvZy}ez?2uUO03l<2O%t)PLcVyx#n~u!nUGOWJEUFgDj{oL zbx61yY2G{bn~=s%F>^U2;eInJ)+pr8pD~_XP5xk~0mgw< z<{^*l7drr>!zxp?09UU6$T*{8hX^?UTT&FmNXw$vbUPs1m6!Pv*NG0SyvD<~rN1QW+ z921)_q~&}QAScG|RnCJUhc?c{*z<~WvrjcCwp_>qZ@M^BW3LM7h&tI+Gh$x}+4Ff9 z=d#!uA)S0#m&ev7sMY5}R(FDqu7_S*r#M}pSNDWnsW(@~iV7L0;SYyg6|2Dbu*y7+ zaK@PyyDGMUkV`Sro{T>tn+X|q5ME{Dk4W!AN>oS4&+g#JOR?FpeT2+e?2sFXAm?dc zSfn239``9EpKr#vk*TJe2V&C|=g+rXoCjhT3pskJLmrAL z4i{%dY^hS6I+qi`3)BzMq6VjP|l|K8XD)WIIUaUEo+fbk^@e4o4h|d>c!m#qpj4@@|ne zu?>J=yn!*@?)aM)TN`UH|`&=*zd8PLiWcPp$q<|#TsM%irmP7 zNWJ+hHe7M;dJR?^f74=r#r74l0mADr`rS6~uh@7YOE7kI$f-qaozpQwA+i_Zq!nlC zqj+zG@%lbMGD5z9mLPHvkV!(W4dNUIK^ zLLT15A>HFMh0HE>$ky>$LXIwT$TsoWIrQ|7U#~bn?Bn9>5T7GtAV&H8S8w)<&sD1Z zJ#t|DZpEn_=;9n4zgNiMe1{wnzdxs}BjXEm;v5xUoD=6i@rM;Bti|#1CxtBV6rLD= zTFAXETv^lN%Y>ZQ&LK17&kK3qbM?CTOGSB*gfY-I{D+8kIajIm_yI}_-D#z zsc(z><>vI^^y6uQ_FX5?`k{I~2G$ zU&dp_l$H?rDjpXy6B?NR>dn{jyqq}S#Pf6Fd>bzia!avGwK|^2N%eiaFelZTcu_G7 zm}!JQ?2sq#F8ylzI5b|zomviU5PC_>C?vPFLHW4zr&LO?>HWe~xfJ6G_Z7yV; zZ^1!%-Gy}UEjTo9DZ7t+PFPZz~^%k;he;4P#ygov1%5%t(dHsYer{cuF zdNVe!zmOxU9Wo_vCm{(x&%GjVXCY5)>Ec|Mw~LU$eI0T~-Y_9A@8ppC^6G^=In*JK z=k1xp=jZZ9D$WpJuNU+76|&rO{;j;xIjO$PJ4kU3^nCt0?@+b!xxSTu$U9s}caQv( zcU&?1;6m6Y{;M~?aAB_sG9dNNkjg(04=D*|XqVAy4^y4k-9u$R(S&IAaTbl(bwzWrlzC=GcOth1}$k;|taanT^?>jdM~# zaS3(r(D=PeWk`AjOP6!Md|4pR$S2uTcZaV{)qC1e9HhnE$!5%Sw^F3xoY z8wz>J%i+9&c0$hfy5-@5jzU7s|4hLqLi%~hTvpIkNN6u!Ea)L*6K}g;D%eWM0N-=p zD%e`cXs;nZDd;U^PhX2Q1$~6n`&#^2&`-#gzBd&mb`)}&uSLtmKq0sITC__H7IL$v zd9%b&A>a7kv`u0+Aya&B>Yo@cq{d6#(8OLA@lrP;vA2**ecw4Kv9FMNFLnP(j4sKx zGUF2mDbAX(l@o^w$$0)uP8=@eZqJ_!6Jv$Ew4-amnTex?-0LmKjfrE0Oz`}7=Ig|nLi+l$eoCAz zk{V**~6C=FT6lVXswD1rwhTcWc{l*C50CYsq&@Q6kaN1wlBS1;T1yO_nK|f z!mET#_gZVq!r3`((Yx?E#aZRGR-eL~gcOf-rSDOAtB_K!B@QaQUC4`Z7w720JB1AK zTI$1*dxgB_<>$=8`-N=bwbliNi-dgR<>%7EhlK3q_0J83j|!RU_0R2v zPY8L^(|m8?Q$iMdnim&7BLsI@1YBKO_?(b;Jk84sUlj6*9}T`$_==EYTDw&LEnH!d zE)Myi@O2>vc2pOxg&aS?<@{>VZbGJb>+nv|a3SCA?&5q=w3m=ZUyJXH_O@}n-uSg> zUm-KR-iQ^C781?}i;52ta<0#(xcCqu;XJppcuY<$lEp_T&PHC-wkbYVNY8RdVaMW> zkn6oI=u&*5kbXT~oXv|*5;E0miLHuH6*6d$i?dDf=|Z;l_d;!AUK9#lM2IbZL2IJkJ0kbS&m+@ts!As_DK z%G$s9dLeVY?me>jCLtU9UU_`+twLs%xl|L2Zx`~b=W3>SZVo+Di{~lM%09Exp$H5UGRDRyn~gR1EVx4Tp~0m<&Cw-i6Fe8S$nq6q zvQEhAmaZ1bl13p9c$sfo5-X!dD)N@7b4k9ClYM)2FDVq#-dm!6B_%>$^zBt&QeKwL zpHU@MWz-3My|nCyGk`=ozv$@MucVcbw2!lY$%aC9_}0Zaq@=fyy?mTQOZo~K;9F-* z$si$}eX1i$b`i3B1Q{;mP>+l)8Le8B_|fTqN)8oL-rbenP;$7CZM?LkOU4R0Xn>1z zZpqO?LcMxv$+0=yxUA%O#p&nUeRj#ILhjk!<#T7r=|VR1?fyVXMo6ezmXu5uGNi3b z^<>FeLJs$`v9#oDA&+|5c)jFYAxpe$d{}aUkp6xg^-aliA$NG$_@!iqkQKf!=a*h4 zq~DJa(&$8GrV-J5T4HGzk0K8={zC5{77cM()mJO_9L0YN*4(ExU)+&ru2Rx&-h+& zLg^wQL%cmrmp&w}p){j7LFI|=+ zE%%i^pM%88HYm^TU!BYP2E)=rV*X!M~ zi-c_GYw>B>B|--K-t=|ZkYsQfM=zk7}yUOr#QR|%Ku=<)?ZHuLg4 zuKa$RkLTg|@>FDeJNcrnR{_^tkZ24P4?(n^PMfp2IW_oVCR=%p7Hf7yij^_8v zKTw=={4C(Z@=t{nO>l93EdN4CcaQv8{=zqW ztP`?q16S6@6@Ll|b$Gjqzl0>cjJ2;xb4jx{yaZXvs zRCG|Bv>(ByD!K^S&gYY^s1-87=W|v?Hz8MeK3`DLL&#RX1uv@TS;1C5<_^czt17k; zvJdu(@n5~UzG5e(YVXUswPG(J`M#{XD)tt#y3pnGV8y;d_V95YuGn8lD67jV4$P_P zvlRy`PI`dL=Y@(fLXP&@=ADWog@k(b>x%yfImYXRZz{$Kxzg*Obrr`6>E>mltnvgQ zXZloaD#r`C#i#02d5Vzm{ns{?rwMth#!PprINNNATEDsL3>wYStKSKch-EpPQERNgA&eZMY|uAC!e zWtrpQq{=&lyzIv$XI0)QBwQysw{o74UY^49D(4Gn)zjs3e&qro2YPLMY2^b#`nGX# zE~{K5HnO!6lV1tH)jOnJa5q<%*nEexdSRrE2MW(<_x92$?s)rFygSV&kD0bn*Q8w(>h6qkJ#;u5z`I5B$2sua#?rgnBhzwN}WH zUa#g={UT(Bw>xE3zvtAeb=9AW)63hq4XYCPdRUct{c~5Zu2sdAl<=@#-KttuW^3au zs#+_~4!$q&B{GguLZ>IJat;ka1oT?yIU7vYpqW zk5%m{_n(|~y$cv{q+1M!AAY_*Br(KdK3pv2Y z*(^Ch$a7w^ZIw*t(6dc4qd1{9u1lUJQLwB#HiXM1Eua;}i=ea@FB=Lvbt$C;J9N65f|jz8BX?~_jW%WKG+ zk_#0lv}m^^9~KgFV@~ohAp<73eC|#z5%Q|9#e(G1LWX)|VRD&}4SlMolFtj-+f%qK z`I3;Ie5#enG&O9a;K0_-uA?_yxQ ze>+<4c2iur>rjR*_kK`i%e}{!+ZwstsI=z;v*m`=AB}P?^;6)pxr{|Tn@bq)BIIJ@ zRiEwRH5GadYH4#}yxd$mfwYhxZ+lcwuT*4HL zXK8-MrwBur`!*-dHoq{m1U#^5zk{#&(7#W6r{`7qg|5C$mGJ{4yZJJ<^)gAh%9W<$ zzT4zOAo$7> zl;ShstCH_D)Tmm%utuS*F_&DPhM{Y`M1)ct2c@>Y`}&@@DSWxwf@v+s4@U}H#%`d+ za&1?i%NkH>xptb*g{4`INtt9WF>}#UoFIP~ceR*pFEQq8`SzTRBTMpqc#APV%D2}w z#{44Rq#JM!MZPYVA%{npw)SS66_YQ9&{FtfW&@lJW7?R>pKEgtON*IP&%}Klh}Y5F zJp*U1<=gL4JS%P6g*Zh8U($Srw41|MV^#&ej^?$?aiXS#X>XWmeaH{>*iva-jXD}$ z*k$8wF~|AV-sXHAXF1;s*WgZYr0r;uKHf0z8{u;)nudL}Dr0->BHuy2h0ov&vV6aO zZcK+_))((Ef|}Q%mfi0o)_S=M{qlO;exnpW-h>^v@^u8)4v_E28*y4jzJn2(l5aEk zPLprVb;eAQZyahqUA{#Ky;8n+QMViAI}z=1r+l{|#RKx~h%z3RuLH_>PQDeuUX$-2 zP_;_F*}y)Rk8Sw_d^q`u`mPhU(OP44K+0VDGwz+ij^LO%3@@unA1>N!9DBpC& zuIoK97m1kzZ^!*JiZ}aKWBSRrG59h>zE{B)rj42Nu64eN9@_`fzN_Nxd9?}JjrHYC z3y@fFZIpaxf-g3gnp>>A;G|z5IWcocAc-;a9{K`hEoR8cLzR}C94Fs0w1*A7a=N4M z8_;aA+kJj_`COj#z8QhU#>_0ppOrAS{z=Mt`D~ZVDUeeuYopMkEY07drEQA&DA)S# zLw!$E+V8J&X}`R}g&qOlB!#X6%{IRwDA)3Iq4({Mv{Mvs2CTf zKU>S*z}8~sfK%X}2giX2GnJxOP`8fe5?_xnUdR`wu=NOO$@o^FW|*b?-Us!T2O;&L zZ<*)NslG;Apv`THRo6P-G|+5I8|-QB;C-J$U)dBRd>cLDvCTYoqQ~MM`w=a8ohW_A zmwSgVcRuQ2rSmRu!-<`H)hy^*k7G zv5WVp_r2=Noe8 zp#^Q--b9;Q->IPGWrel|EmkH+0eekYUoQvskUEx@NL+b&>vlCLp;p|sE3vDcAkPiy_AIgycDfvdsNsSANzQr zw9^jS{3ZqUh?%goFl`vG7kcB9!`QdNc!zlUjs;I`ejzRE%S+OfE;r_F)I4dHFM>6Y zZ+)zzS$(B3A0f1(`4l;G%+S%)pp9tlJDP(K$`M6Jb9*4|){1|Q6xNE<7c<-L5HsH> zmmQ$%*2=dSX{`pC0pIV6w=;D1pYk=OOFDY}vK@SuyEj846+A|}b<0_{^%G`j0nX(@ zKPSv-&sc6G%)-?!bcZ(`cHP~MSJc_{kfE5NZnFFv<+bv0-uDvpsSSM>{muHOf*aPC z?|I(?RM~o5jq$h*{SiL$AZ9`h_iJDcqSW{H)I0j3^;jH>NlW2QDo7{wRl>L$S?aA0 zYk;P)<+cVbmd`UmeHC~WGdrTbt>n89@hnx(fWE*=qHflAwy)8R&`36yMc%iO=T%rE z^2Me-5~HfNDx;O>+D1WsNwZPVG9AsrK<;ZyD~v7LBgLr6j|HJPi+_)mmuRoO|80yD z74P`xoNq_(8+wPuqA8Aj8Y4!fIQLBFd(dOcCtECLeuIA52Jt$YkIG}F4}3Ax4bnMC zJ{~b2DqkJitzN!bul26J~zVtZxbWk@fur zz8t0$v*0^IzIC3HU!pYfAZEyC+tQ)L-h!MhM(xO&cQg}`_IRa;d(E{C+G9Mhy(SO- z&Pvl>lV{%VeCMsTzLb3?jSBirbiP%dr|%%1E%*MHjhP_o!_wYED{w^7Q!|H*LRW*kwp{jPJKlI`Hg29! zXvm>r^l8iI*FCSC6xWzne#6(owyot1XO-`URo8K|eQXd0LnkOJl z-@u1C1agjJ{D>PrzIHjkin^5nOPc+Dwi;>c*!iO|TLjkIe6=rH06yHcSBTl7eBZaW zKHPq?*wyXWPf!PhCQMh*!q&pwjPPv>3^$K$XiOjZCUwKTAo4w0=j3Jk_UPxrZto7> z%l9-w_mywS0Amh;FSoQKgdOoYWL&zo^jF=&ZLcUmT+=lVm zC8C9Ac&+T-k9M00%u2-d@YR^oGK=9(%?+GyL;?DnLgyoNo_q(ib-w$$qW1vH<@gK2 z)~7FF{(8kp)9Z5_UsmE=t)>3WjUe|(8#5z8-@EeF_I4wH>i$j+J{fGxrwXmv&6scH zYd6Bx{ESh~!mi!lsJ=K&9COlnT1$s@>*TPpTN<-Qx!l^Ebli(yVaP{`IzNPmt^v|-(1AZGbW@hK!?ihSh#dGfLKFO`qF z?i%=VxpAAYbze9Q_w}2$RTJiD^Z;5|+)p{r$@n7F+){8AYHlqPOS@ZTG^gvV&i$hiiv!^)lvHFRhF(1UGQcYoRd@%hyokeD&yI7VBM#uRb9(w>?$}oARA&g?hAt z?X{G@nA&{X4e{v)#Dm2_fBRTITDmXfduRZ(k9@58FYq;824_^(2K>J(lA6HoDi_Wsn zd%&3e6t8ln^R2zh`l9i+I@7K@j+(pz+~o@7sL4N^VSUkf+dpGh_(o0chm~Wl^^KZ* z23pmw`mM$~^+6~N>k*ip*j8wdk@*->W%>p4kI<@FK95Iejp^DNx>LS)wzqbs#{AS1 z+ELg>35T7DcpPukm|qajreLqVRPoqDua)nj4Vm-c*_gRH5+XZ*y$oD(s%KA8>u%iM>*nbro>fQIha%i-HxqVa-Usr}o6X%JOZu zk4r&Ho7dyvh%BVwb5LMMP|MNtIQGVT9X;<)0|$ww}>RsT*JWq$`!|4?UdivaVKH-RXc3k&d%3wE9c{wtD{nI%w^MZ%+*a8N8uLZD12LCJMJ6h zZrE4*D3l|zLGp3-IYPdd(WCx}{O$ju<+vT?TCK8$@3n7WY-U$0mTluGV4tz{vDaE3 zwTktTL)J$QSzeJtR_BmIHk2H)b)&q5HTowszYE=z+w($64EuRV^WXQBP_jci7|KhS z^S6-k!^GYAc5d`aZdi)rb_D#8)fCWsdB?r2$pezFQa*0HC4vn=Nv~5 zu=U8U(F9)_bz;m=*6xOeYr5zC`*LH@#b>Du){QxbGfiuWryk~E@L`LU3u$o!}_DO0K`W<@pS$BI{$q$z4e8mUHP zg^b9Qv{!zuC@N~`$M?FIayaDD@-w_)A6?v;i^H3U_vbr3KG^ zul{DG1@`4DratFG7~yCHV1&c{{hy?LZ3!>x?p}_uZaq?-#5t_s_I3;@6+yeqy85d&l55 zQ{x5i9fnV#WEl^?;r23>+f1B#-lYTy@+{uteDrFYL2vgt4!|?Z2OseK9 z_PNp3JZ>-LgInE;?Axz?kna$bI9ba*xOES$8>aSjv?;X4F(b|O;5vu`)C<4EO6G6# zYZCMzc@D-z`qg^Q$(}yln8}wN*HCh6G`BUQ=k$z1&p|(RYq--swxg$pNueK5zpaFP zRf!h=GY!a}vE}5?W5IXNGaBG*Kq<6_(~mqB^=n}ARaL)Gc9{k1ILCR%5=eJFtToMc?NSn zqSe7fXpu?5_5s(o@+`Y=i|gGf=GU8GkCCF|1+d=5w*|DvNU4-~ zTOtS6yKXK+TT#SxF~YrBnPFDmTC!H{S&huQE@B(_0j0s_B*WWNbafhG_`FHw2jIJuG=ZzW83Ig_hj?$XY}{!T^Hp~jB8=)D1;Ey?_^`<`8775lZ(%YImXxAGvZvZB<&yAR-UZp@r5VW?A8%g zt)&mdO=^eJ&(-pbjOoB9W*Rg0Nra+&RiattW5)Hu8d$ee?@#LhCz6e=+?c_(1wXS_ z{wy^5`^s8*F|_h^BV$J^#jA{#Fjgrx-2k%-rBH5FMo*|dcQ$>h8JzMq(i*mdv*IT8 zWhhH;YQ-UMs(-US%BaE(sya0A!qADLR*{#xbM_Ff=9SHrDBh8GThj5JBHVS zooRKAcBcKw6=Dr+?-wBVWKqD?>^$r|Sj&_4STnTb%3sryW2&JDJ=PO{mkqun5#c{sVSRAFD+BlyNs-n(eDz>(L%IYJj zP`XToUZ7U)mY9QbL-pzbqty=ZXR==ujASYsDmpHnY|o(GE~#%JMZGXlQYn&ZAgR`p zikDRCKa~0{gh%{g*qnE4%NK65&u@!ho}uTXjTOXkXWdXM9;$grTGeVstA(nC;(^r< z{xTidkF18Hj8e9zgS|btY^IcbM_P0q^c$UWbUsv3eYA%2$vZh~t1vYb_Q=Rq_lXRr zU$-_^(-URTSP0c}lICjO536uG<@kYU{|<}*V&gj5cDR`i=YX))82K-eeVS)sgzki> z2k(F3d4_(iuC0FYuvVsDE3!c?sIPo`XM&fI{SJ#(iPGMYpcQ$n)9QDK8^m0E#+j+U z(R6;I)gTMvM&JLwR!O}`L+EWa6M%3yFI7>ojyC

T53H-q;2EB=u@wY>zftxd=S6snx~pR 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%0DJj~zeN>4C%ScEG*G3@S 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 a&}W}Ei(P@UWU^*T&in1uSB@ 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%0DJCrYf^8V>w=uIe)~pS^yc}i_ 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 z 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 literal 0 HcmV?d00001 diff --git a/src/tests/bin/Debug/netcoreapp1.0/tests.deps.json b/src/tests/bin/Debug/netcoreapp1.0/tests.deps.json new file mode 100644 index 00000000..0f831818 --- /dev/null +++ b/src/tests/bin/Debug/netcoreapp1.0/tests.deps.json @@ -0,0 +1,1101 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v1.0", + "signature": "81ace1a8301fcbe81b83a514b616c6a56d43bad8" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v1.0": { + "tests/1.0.0": { + "dependencies": { + "System.Runtime.Serialization.Primitives": "4.1.1", + "xunit": "2.1.0", + "dotnet-test-xunit": "1.0.0-rc2-build10015", + "NadekoBot": "1.0.0" + }, + "runtime": { + "tests.dll": {} + } + }, + "CoreCLR-NCalc/2.1.0": { + "dependencies": { + "System.Runtime.Serialization.Xml": "4.1.1" + }, + "runtime": { + "lib/netstandard1.3/NCalc.dll": {} + } + }, + "dotnet-test-xunit/1.0.0-rc2-build10015": { + "dependencies": { + "Microsoft.Extensions.Testing.Abstractions": "1.0.0-preview1-002702", + "xunit.runner.reporters": "2.1.0" + }, + "runtime": { + "lib/netcoreapp1.0/dotnet-test-xunit.dll": {} + } + }, + "Google.Apis/1.16.0": { + "dependencies": { + "Google.Apis.Core": "1.16.0" + }, + "runtime": { + "lib/netstandard1.3/Google.Apis.dll": {} + } + }, + "Google.Apis.Auth/1.15.0": { + "dependencies": { + "Google.Apis.Core": "1.16.0", + "Newtonsoft.Json": "9.0.1", + "Portable.BouncyCastle": "1.8.1.1" + }, + "runtime": { + "lib/netstandard1.3/Google.Apis.Auth.PlatformServices.dll": {}, + "lib/netstandard1.3/Google.Apis.Auth.dll": {} + } + }, + "Google.Apis.Core/1.16.0": { + "dependencies": { + "Newtonsoft.Json": "9.0.1" + }, + "runtime": { + "lib/netstandard1.3/Google.Apis.Core.dll": {} + } + }, + "Google.Apis.Customsearch.v1/1.16.0.466": { + "dependencies": { + "Google.Apis": "1.16.0" + }, + "runtime": { + "lib/netstandard1.3/Google.Apis.Customsearch.v1.dll": {} + } + }, + "Google.Apis.Urlshortener.v1/1.15.0.138": { + "dependencies": { + "Google.Apis": "1.16.0", + "Google.Apis.Auth": "1.15.0" + }, + "runtime": { + "lib/netstandard1.3/Google.Apis.Urlshortener.v1.dll": {} + } + }, + "Google.Apis.YouTube.v3/1.15.0.582": { + "dependencies": { + "Google.Apis": "1.16.0", + "Google.Apis.Auth": "1.15.0" + }, + "runtime": { + "lib/netstandard1.3/Google.Apis.YouTube.v3.dll": {} + } + }, + "ImageProcessorCore/1.0.0-alpha1045": { + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "4.0.0" + }, + "runtime": { + "lib/netstandard1.1/ImageProcessorCore.dll": {} + } + }, + "Microsoft.AspNetCore.Hosting.Abstractions/1.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Hosting.Server.Abstractions": "1.0.0", + "Microsoft.AspNetCore.Http.Abstractions": "1.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "1.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "1.0.0", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0" + }, + "runtime": { + "lib/netstandard1.3/Microsoft.AspNetCore.Hosting.Abstractions.dll": {} + } + }, + "Microsoft.AspNetCore.Hosting.Server.Abstractions/1.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Features": "1.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "1.0.0" + }, + "runtime": { + "lib/netstandard1.3/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll": {} + } + }, + "Microsoft.AspNetCore.Http.Abstractions/1.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Features": "1.0.0", + "System.Text.Encodings.Web": "4.0.0" + }, + "runtime": { + "lib/netstandard1.3/Microsoft.AspNetCore.Http.Abstractions.dll": {} + } + }, + "Microsoft.AspNetCore.Http.Features/1.0.0": { + "dependencies": { + "Microsoft.Extensions.Primitives": "1.0.0", + "System.Net.WebSockets": "4.0.0" + }, + "runtime": { + "lib/netstandard1.3/Microsoft.AspNetCore.Http.Features.dll": {} + } + }, + "Microsoft.Data.Sqlite/1.0.0": { + "dependencies": { + "SQLite": "3.12.2", + "System.Data.Common": "4.1.0" + }, + "runtime": { + "lib/netstandard1.3/Microsoft.Data.Sqlite.dll": {} + } + }, + "Microsoft.DiaSymReader/1.0.6": { + "runtime": { + "lib/portable-net45+win8/Microsoft.DiaSymReader.dll": {} + } + }, + "Microsoft.DiaSymReader.Native/1.3.3": { + "runtimeTargets": { + "runtimes/win-x64/native/Microsoft.DiaSymReader.Native.amd64.dll": { + "rid": "win-x64", + "assetType": "native" + }, + "runtimes/win-x86/native/Microsoft.DiaSymReader.Native.x86.dll": { + "rid": "win-x86", + "assetType": "native" + }, + "runtimes/win/native/Microsoft.DiaSymReader.Native.amd64.dll": { + "rid": "win", + "assetType": "native" + }, + "runtimes/win/native/Microsoft.DiaSymReader.Native.arm.dll": { + "rid": "win", + "assetType": "native" + }, + "runtimes/win/native/Microsoft.DiaSymReader.Native.x86.dll": { + "rid": "win", + "assetType": "native" + }, + "runtimes/win8-arm/native/Microsoft.DiaSymReader.Native.arm.dll": { + "rid": "win8-arm", + "assetType": "native" + } + } + }, + "Microsoft.DotNet.InternalAbstractions/1.0.0-rc2-002702": { + "runtime": { + "lib/netstandard1.3/Microsoft.DotNet.InternalAbstractions.dll": {} + } + }, + "Microsoft.DotNet.ProjectModel/1.0.0-rc2-002702": { + "dependencies": { + "Microsoft.Extensions.DependencyModel": "1.0.0-rc2-002702", + "Newtonsoft.Json": "9.0.1", + "NuGet.Packaging": "3.5.0-beta-final", + "NuGet.RuntimeModel": "3.5.0-beta-final", + "System.Runtime.Serialization.Primitives": "4.1.1" + }, + "runtime": { + "lib/netstandard1.5/Microsoft.DotNet.ProjectModel.dll": {} + } + }, + "Microsoft.EntityFrameworkCore/1.0.0": { + "dependencies": { + "Microsoft.Extensions.Caching.Memory": "1.0.0", + "Microsoft.Extensions.DependencyInjection": "1.0.0", + "Microsoft.Extensions.Logging": "1.0.0", + "Remotion.Linq": "2.1.1", + "System.Interactive.Async": "3.0.0" + }, + "runtime": { + "lib/netstandard1.3/Microsoft.EntityFrameworkCore.dll": {} + } + }, + "Microsoft.EntityFrameworkCore.Design/1.0.0-preview2-final": { + "dependencies": { + "Microsoft.EntityFrameworkCore.Design.Core": "1.0.0-preview2-final", + "Microsoft.Extensions.CommandLineUtils": "1.0.0" + }, + "runtime": { + "lib/netcoreapp1.0/Microsoft.EntityFrameworkCore.Design.dll": {} + } + }, + "Microsoft.EntityFrameworkCore.Design.Core/1.0.0-preview2-final": { + "dependencies": { + "Microsoft.AspNetCore.Hosting.Abstractions": "1.0.0", + "Microsoft.EntityFrameworkCore.Relational.Design": "1.0.0", + "System.Collections.NonGeneric": "4.0.1" + }, + "runtime": { + "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Design.Core.dll": {} + } + }, + "Microsoft.EntityFrameworkCore.Relational/1.0.0": { + "dependencies": { + "Microsoft.EntityFrameworkCore": "1.0.0", + "System.Data.Common": "4.1.0" + }, + "runtime": { + "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Relational.dll": {} + } + }, + "Microsoft.EntityFrameworkCore.Relational.Design/1.0.0": { + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "1.0.0" + }, + "runtime": { + "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Relational.Design.dll": {} + } + }, + "Microsoft.EntityFrameworkCore.Sqlite/1.0.0": { + "dependencies": { + "Microsoft.Data.Sqlite": "1.0.0", + "Microsoft.EntityFrameworkCore.Relational": "1.0.0" + }, + "runtime": { + "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Sqlite.dll": {} + } + }, + "Microsoft.Extensions.Caching.Abstractions/1.0.0": { + "dependencies": { + "Microsoft.Extensions.Primitives": "1.0.0" + }, + "runtime": { + "lib/netstandard1.0/Microsoft.Extensions.Caching.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Caching.Memory/1.0.0": { + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "1.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", + "Microsoft.Extensions.Options": "1.0.0" + }, + "runtime": { + "lib/netstandard1.3/Microsoft.Extensions.Caching.Memory.dll": {} + } + }, + "Microsoft.Extensions.CommandLineUtils/1.0.0": { + "runtime": { + "lib/netstandard1.3/Microsoft.Extensions.CommandLineUtils.dll": {} + } + }, + "Microsoft.Extensions.Configuration.Abstractions/1.0.0": { + "dependencies": { + "Microsoft.Extensions.Primitives": "1.0.0" + }, + "runtime": { + "lib/netstandard1.0/Microsoft.Extensions.Configuration.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.DependencyInjection/1.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0" + }, + "runtime": { + "lib/netstandard1.1/Microsoft.Extensions.DependencyInjection.dll": {} + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/1.0.0": { + "runtime": { + "lib/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.DependencyModel/1.0.0-rc2-002702": { + "dependencies": { + "Microsoft.DotNet.InternalAbstractions": "1.0.0-rc2-002702", + "Newtonsoft.Json": "9.0.1" + }, + "runtime": { + "lib/netstandard1.5/Microsoft.Extensions.DependencyModel.dll": {} + } + }, + "Microsoft.Extensions.FileProviders.Abstractions/1.0.0": { + "dependencies": { + "Microsoft.Extensions.Primitives": "1.0.0" + }, + "runtime": { + "lib/netstandard1.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Logging/1.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", + "Microsoft.Extensions.Logging.Abstractions": "1.0.0" + }, + "runtime": { + "lib/netstandard1.1/Microsoft.Extensions.Logging.dll": {} + } + }, + "Microsoft.Extensions.Logging.Abstractions/1.0.0": { + "runtime": { + "lib/netstandard1.1/Microsoft.Extensions.Logging.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Options/1.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", + "Microsoft.Extensions.Primitives": "1.0.0" + }, + "runtime": { + "lib/netstandard1.0/Microsoft.Extensions.Options.dll": {} + } + }, + "Microsoft.Extensions.PlatformAbstractions/1.0.0": { + "runtime": { + "lib/netstandard1.3/Microsoft.Extensions.PlatformAbstractions.dll": {} + } + }, + "Microsoft.Extensions.Primitives/1.0.0": { + "runtime": { + "lib/netstandard1.0/Microsoft.Extensions.Primitives.dll": {} + } + }, + "Microsoft.Extensions.Testing.Abstractions/1.0.0-preview1-002702": { + "dependencies": { + "Microsoft.DiaSymReader": "1.0.6", + "Microsoft.DiaSymReader.Native": "1.3.3", + "Microsoft.DotNet.ProjectModel": "1.0.0-rc2-002702", + "Newtonsoft.Json": "9.0.1" + }, + "runtime": { + "lib/netstandard1.5/Microsoft.Extensions.Testing.Abstractions.dll": {} + } + }, + "Newtonsoft.Json/9.0.1": { + "dependencies": { + "System.Runtime.Serialization.Primitives": "4.1.1" + }, + "runtime": { + "lib/netstandard1.0/Newtonsoft.Json.dll": {} + } + }, + "NLog/4.4.0-betav15": { + "dependencies": { + "Microsoft.Extensions.PlatformAbstractions": "1.0.0", + "System.Collections.NonGeneric": "4.0.1", + "System.ComponentModel.TypeConverter": "4.1.0", + "System.Data.Common": "4.1.0", + "System.Diagnostics.Contracts": "4.0.1", + "System.Diagnostics.TraceSource": "4.0.0", + "System.Runtime.Serialization.Primitives": "4.1.1" + }, + "runtime": { + "lib/netstandard1.5/NLog.dll": {} + } + }, + "NuGet.Common/3.5.0-beta-final": { + "runtime": { + "lib/netstandard1.3/NuGet.Common.dll": {} + } + }, + "NuGet.Frameworks/3.5.0-beta-final": { + "dependencies": { + "NuGet.Versioning": "3.5.0-beta-final" + }, + "runtime": { + "lib/netstandard1.3/NuGet.Frameworks.dll": {} + } + }, + "NuGet.Packaging/3.5.0-beta-final": { + "dependencies": { + "NuGet.Common": "3.5.0-beta-final", + "NuGet.Packaging.Core": "3.5.0-beta-final" + }, + "runtime": { + "lib/netstandard1.3/NuGet.Packaging.dll": {} + } + }, + "NuGet.Packaging.Core/3.5.0-beta-final": { + "dependencies": { + "NuGet.Packaging.Core.Types": "3.5.0-beta-final" + }, + "runtime": { + "lib/netstandard1.3/NuGet.Packaging.Core.dll": {} + } + }, + "NuGet.Packaging.Core.Types/3.5.0-beta-final": { + "dependencies": { + "NuGet.Frameworks": "3.5.0-beta-final" + }, + "runtime": { + "lib/netstandard1.3/NuGet.Packaging.Core.Types.dll": {} + } + }, + "NuGet.RuntimeModel/3.5.0-beta-final": { + "dependencies": { + "Newtonsoft.Json": "9.0.1", + "NuGet.Frameworks": "3.5.0-beta-final", + "NuGet.Versioning": "3.5.0-beta-final" + }, + "runtime": { + "lib/netstandard1.3/NuGet.RuntimeModel.dll": {} + } + }, + "NuGet.Versioning/3.5.0-beta-final": { + "runtime": { + "lib/netstandard1.0/NuGet.Versioning.dll": {} + } + }, + "Portable.BouncyCastle/1.8.1.1": { + "runtime": { + "lib/netstandard1.3/crypto.dll": {} + } + }, + "Remotion.Linq/2.1.1": { + "runtime": { + "lib/netstandard1.0/Remotion.Linq.dll": {} + } + }, + "SQLite/3.12.2": { + "dependencies": { + "SQLite.Native": "3.12.2" + } + }, + "SQLite.Native/3.12.2": { + "runtimeTargets": { + "runtimes/linux-x64/native/libsqlite3.so": { + "rid": "linux-x64", + "assetType": "native" + }, + "runtimes/osx-x64/native/libsqlite3.dylib": { + "rid": "osx-x64", + "assetType": "native" + }, + "runtimes/win7-x64/native/sqlite3.dll": { + "rid": "win7-x64", + "assetType": "native" + }, + "runtimes/win7-x86/native/sqlite3.dll": { + "rid": "win7-x86", + "assetType": "native" + } + } + }, + "System.Collections.NonGeneric/4.0.1": { + "runtime": { + "lib/netstandard1.3/System.Collections.NonGeneric.dll": {} + } + }, + "System.Collections.Specialized/4.0.1": { + "dependencies": { + "System.Collections.NonGeneric": "4.0.1" + }, + "runtime": { + "lib/netstandard1.3/System.Collections.Specialized.dll": {} + } + }, + "System.ComponentModel.Primitives/4.1.0": { + "runtime": { + "lib/netstandard1.0/System.ComponentModel.Primitives.dll": {} + } + }, + "System.ComponentModel.TypeConverter/4.1.0": { + "dependencies": { + "System.Collections.NonGeneric": "4.0.1", + "System.Collections.Specialized": "4.0.1", + "System.ComponentModel.Primitives": "4.1.0" + }, + "runtime": { + "lib/netstandard1.5/System.ComponentModel.TypeConverter.dll": {} + } + }, + "System.Data.Common/4.1.0": { + "runtime": { + "lib/netstandard1.2/System.Data.Common.dll": {} + } + }, + "System.Diagnostics.Contracts/4.0.1": { + "runtime": { + "lib/netstandard1.0/System.Diagnostics.Contracts.dll": {} + } + }, + "System.Diagnostics.TraceSource/4.0.0": { + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/System.Diagnostics.TraceSource.dll": { + "rid": "unix", + "assetType": "runtime" + }, + "runtimes/win/lib/netstandard1.3/System.Diagnostics.TraceSource.dll": { + "rid": "win", + "assetType": "runtime" + } + } + }, + "System.Interactive.Async/3.0.0": { + "runtime": { + "lib/netstandard1.0/System.Interactive.Async.dll": {} + } + }, + "System.Net.WebSockets/4.0.0": { + "runtime": { + "lib/netstandard1.3/System.Net.WebSockets.dll": {} + } + }, + "System.Net.WebSockets.Client/4.0.0": { + "dependencies": { + "System.Net.WebSockets": "4.0.0" + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/System.Net.WebSockets.Client.dll": { + "rid": "unix", + "assetType": "runtime" + }, + "runtimes/win/lib/netstandard1.3/System.Net.WebSockets.Client.dll": { + "rid": "win", + "assetType": "runtime" + } + } + }, + "System.Private.DataContractSerialization/4.1.1": { + "dependencies": { + "System.Runtime.Serialization.Primitives": "4.1.1", + "System.Xml.XmlSerializer": "4.0.11" + }, + "runtime": { + "lib/netstandard1.3/System.Private.DataContractSerialization.dll": {} + } + }, + "System.Resources.ResourceWriter/4.0.0-beta-22816": { + "runtime": { + "lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Resources.ResourceWriter.dll": {} + } + }, + "System.Runtime.CompilerServices.Unsafe/4.0.0": { + "runtime": { + "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll": {} + } + }, + "System.Runtime.Serialization.Primitives/4.1.1": { + "runtime": { + "lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll": {} + } + }, + "System.Runtime.Serialization.Xml/4.1.1": { + "dependencies": { + "System.Private.DataContractSerialization": "4.1.1", + "System.Runtime.Serialization.Primitives": "4.1.1" + }, + "runtime": { + "lib/netstandard1.3/System.Runtime.Serialization.Xml.dll": {} + } + }, + "System.Text.Encodings.Web/4.0.0": { + "runtime": { + "lib/netstandard1.0/System.Text.Encodings.Web.dll": {} + } + }, + "System.Xml.XmlSerializer/4.0.11": { + "runtime": { + "lib/netstandard1.3/System.Xml.XmlSerializer.dll": {} + } + }, + "VideoLibrary/1.3.4": { + "runtime": { + "lib/portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10/libvideo.dll": {} + } + }, + "xunit/2.1.0": { + "dependencies": { + "xunit.assert": "2.1.0", + "xunit.core": "2.1.0" + } + }, + "xunit.abstractions/2.0.0": { + "runtime": { + "lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS/xunit.abstractions.dll": {} + } + }, + "xunit.assert/2.1.0": { + "runtime": { + "lib/dotnet/xunit.assert.dll": {} + } + }, + "xunit.core/2.1.0": { + "dependencies": { + "xunit.abstractions": "2.0.0", + "xunit.extensibility.core": "2.1.0", + "xunit.extensibility.execution": "2.1.0" + } + }, + "xunit.extensibility.core/2.1.0": { + "dependencies": { + "xunit.abstractions": "2.0.0" + }, + "runtime": { + "lib/dotnet/xunit.core.dll": {} + } + }, + "xunit.extensibility.execution/2.1.0": { + "dependencies": { + "xunit.abstractions": "2.0.0", + "xunit.extensibility.core": "2.1.0" + }, + "runtime": { + "lib/dotnet/xunit.execution.dotnet.dll": {} + } + }, + "xunit.runner.reporters/2.1.0": { + "dependencies": { + "Newtonsoft.Json": "9.0.1", + "xunit.abstractions": "2.0.0", + "xunit.runner.utility": "2.1.0" + }, + "runtime": { + "lib/dotnet/xunit.runner.reporters.dotnet.dll": {} + } + }, + "xunit.runner.utility/2.1.0": { + "dependencies": { + "xunit.abstractions": "2.0.0" + }, + "runtime": { + "lib/dotnet/xunit.runner.utility.dotnet.dll": {} + } + }, + "Discord.Net/1.0.0-beta": { + "dependencies": { + "Newtonsoft.Json": "9.0.1", + "System.Net.WebSockets.Client": "4.0.0", + "System.Runtime.Serialization.Primitives": "4.1.1" + }, + "runtime": { + "Discord.Net.dll": {} + } + }, + "Discord.Net.Commands/1.0.0-beta": { + "dependencies": { + "Discord.Net": "1.0.0-beta" + }, + "runtime": { + "Discord.Net.Commands.dll": {} + } + }, + "NadekoBot/1.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", + "Microsoft.Extensions.PlatformAbstractions": "1.0.0", + "Newtonsoft.Json": "9.0.1", + "Microsoft.Extensions.DependencyInjection": "1.0.0", + "Discord.Net.Commands": "1.0.0-beta", + "System.Resources.ResourceWriter": "4.0.0-beta-22816", + "Google.Apis.YouTube.v3": "1.15.0.582", + "Google.Apis.Urlshortener.v1": "1.15.0.138", + "Google.Apis.Customsearch.v1": "1.16.0.466", + "System.Diagnostics.Contracts": "4.0.1", + "NLog": "4.4.0-betav15", + "VideoLibrary": "1.3.4", + "Microsoft.EntityFrameworkCore": "1.0.0", + "Microsoft.EntityFrameworkCore.Design": "1.0.0-preview2-final", + "Microsoft.EntityFrameworkCore.Sqlite": "1.0.0", + "CoreCLR-NCalc": "2.1.0", + "ImageProcessorCore": "1.0.0-alpha1045" + }, + "runtime": { + "NadekoBot.dll": {} + } + } + } + }, + "libraries": { + "tests/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "CoreCLR-NCalc/2.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-GUPPo99NUeAgLR5oIOLrApJx3Mx5BZEaKkK9OlDd/CmAYaACLHo68FnO+kCamsLH2+rvr6Rw3hAwzap4GVFV8Q==" + }, + "dotnet-test-xunit/1.0.0-rc2-build10015": { + "type": "package", + "serviceable": true, + "sha512": "sha512-2traZWYeJiFzau+1j9HcnSZ3rQLDyIrqKyYKCTbPPmu6lsQAtaOG5q+fuKS9Vaxczmh0IcvZ2hdWEuYmtVb9zw==" + }, + "Google.Apis/1.16.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/p657K7J7p9aRl6QxUjQfNK0AobxnLHwDWdSqAr/17lZeQR+XMuEbIy7No80+zDeS39kKrRVWFlu1vHiws7gRQ==" + }, + "Google.Apis.Auth/1.15.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-gBMi03/CjodxVVjByVvvaE4To9905Oe6o59oxzP6AI5uZaab9zNclR+2cu6OcnS5wOIpf5DKAWd+jlSshuZ/cw==" + }, + "Google.Apis.Core/1.16.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-uATqVAsPHlpOf+3VV51xFEIghAMSLJyh1hqoVpnPOlkXBx7fkOcs0qP3tKXtmsaeuyC/7BYM1Tt42lyIyhY2lQ==" + }, + "Google.Apis.Customsearch.v1/1.16.0.466": { + "type": "package", + "serviceable": true, + "sha512": "sha512-uZ5VP/xKgTZCMJXgEfwHYEIR/7FsbtvL+bncm08a07RhWLFZTdRpCAkNL4b5wADHkblpkBe1VWKv43W77I4tJw==" + }, + "Google.Apis.Urlshortener.v1/1.15.0.138": { + "type": "package", + "serviceable": true, + "sha512": "sha512-67USnpqrk8tWO3LAgaK9qDQT6h8A7i7eUIOKm+OISThZoQuHiLCn6dbg46FVb597LUh57AxClSSbhnweYcYC3Q==" + }, + "Google.Apis.YouTube.v3/1.15.0.582": { + "type": "package", + "serviceable": true, + "sha512": "sha512-isR8FdI417PKLgLlNdOVDhduO+8yqPJ+vfID1Zx0MjAa/y3q655Plk2E/KNmsrjvXkqSSWwDCQHPz/Q1fat4tA==" + }, + "ImageProcessorCore/1.0.0-alpha1045": { + "type": "package", + "serviceable": true, + "sha512": "sha512-A5oL7SwFnzcu5eF26u49nf73joQghpEpCGwLb54dm6VI6ZGpjBJpKAyNKtJP30HtXy1VngiGJn/EcvCl8+JGcg==" + }, + "Microsoft.AspNetCore.Hosting.Abstractions/1.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-8r6qOl1jYyC523ZKM1QNl+6ijIoYWELWm0tpEWqtTIOg9DytHJWshB7usgqiuRmfHXM0EUziR6ouFY7iP7Tuzw==" + }, + "Microsoft.AspNetCore.Hosting.Server.Abstractions/1.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-sHZyhQEoW15T9E36rfdm5Ux6a6RZB0KNM79ccf2IplWASqmlRGhX4ydU3dzQRLhkHpLx16fnWOL0KScsO6BevQ==" + }, + "Microsoft.AspNetCore.Http.Abstractions/1.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-OJHlqdJOWKKBfsiVdX4Z4KCNuqvBIu6+1MVKuejRDyHnGyMkNHNoP/dtVzhPqvJXaJg9N4HlD0XNc6GDCFVffg==" + }, + "Microsoft.AspNetCore.Http.Features/1.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-6x7zgfbTo1gL9xMEb7EMO2ES/48bqwnWyfH09z+ubWhnzxdhHls8rtqstPylu5FPD9nid6Vo2pgDm5vufRAy5Q==" + }, + "Microsoft.Data.Sqlite/1.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-dezlCGK9zVrPNfoX1SL50GmWDdRQNcV1SBy3wuCn/a0g7Gc26PyvlA4BKapjnCK5N8LSQ2+1PdW2imiRr+YvxA==" + }, + "Microsoft.DiaSymReader/1.0.6": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ai2eBJrXlHa0hecUKnEyacH0iXxGNOMpc9X0s7VAeqqh5TSTW70QMhTRZ0FNCtf3R/W67K4a+uf3R7MASmAjrg==" + }, + "Microsoft.DiaSymReader.Native/1.3.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-mjATkm+L2UlP35gO/ExNutLDfgX4iiwz1l/8sYVoeGHp5WnkEDu0NfIEsC4Oy/pCYeRw0/6SGB+kArJVNNvENQ==" + }, + "Microsoft.DotNet.InternalAbstractions/1.0.0-rc2-002702": { + "type": "package", + "serviceable": true, + "sha512": "sha512-81Zp6K3oJY5zyoCtf7eguaZ+EnM3zawCtUKszBCLob1KH6Bu44ET2hokkk/6eMhTI2aQhbGrV9SaSjJ2K8DUDg==" + }, + "Microsoft.DotNet.ProjectModel/1.0.0-rc2-002702": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ryslqqMpPRcJma9kJn3V1/GydzUny6i6xfpQ0cqfWmlPdSQ9Hnh6x2l8yVqU+ueCiVffKWn/Or80moLwroXP/A==" + }, + "Microsoft.EntityFrameworkCore/1.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Vqg/v0cXRQZQH0gY3VHHqt0Bt5WZEkDReVpI1sNYKHVbVtnMYFKPp5SiNygosUJYrJk1rSGb8UVkplDNNUkEgg==" + }, + "Microsoft.EntityFrameworkCore.Design/1.0.0-preview2-final": { + "type": "package", + "serviceable": true, + "sha512": "sha512-RhyjntECuOVsrKjgFog9rv+V7oBsxBNxz5NviF7uHvDDQXLyHH3os/CewQxRNsve114AQH5RX/Bww6qAXlSORQ==" + }, + "Microsoft.EntityFrameworkCore.Design.Core/1.0.0-preview2-final": { + "type": "package", + "serviceable": true, + "sha512": "sha512-H3pHksGErQSEwWyvISlDYMslIXftS4XB2m0AvqBS08ECGHagh27mqm/oIyUetzzRad+C2V0zpguJmR14eMiRaA==" + }, + "Microsoft.EntityFrameworkCore.Relational/1.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-LGBab+7o0eq4C3YtvkAxK8W7Ia57eO0Ue0viQgt0STptQ2bUpLzV7q5LfbNl475rt6yTWa/vDQlYVaI64fwqdw==" + }, + "Microsoft.EntityFrameworkCore.Relational.Design/1.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pw4EmGTp5U645is0Lyf0C6yU1uQGHVIZiRyxlDNNrRllL0ZjSFKTShv9qbE+fBpvvvArNp2HhDmP7d6vJAt0Dw==" + }, + "Microsoft.EntityFrameworkCore.Sqlite/1.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-GF5xfn90zVKbnCdNrjeH4j1IaAQ7FsHCWkTrdUKISzrPxG3LIizJaU2iu8YMfNhMYd5N1Y7R7SxF2dBh+5A+Ew==" + }, + "Microsoft.Extensions.Caching.Abstractions/1.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-IxlFDVOchL6tdR05bk7EiJvMtvZrVkZXBhkbXqc3GxOHOrHFGcN+92WoWFPeBpdpy8ot/Px5ZdXzt7k+2n1Bdg==" + }, + "Microsoft.Extensions.Caching.Memory/1.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-6+7zTufCnZ+tfrUo7RbIRR3LB0BxwOwxfXuo0IbLyIvgoToGpWuz5wYEDfCYNOvpig9tY8FA0I1uRHYmITMXMQ==" + }, + "Microsoft.Extensions.CommandLineUtils/1.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kXJ8+YvEjp1j7ezJ7yvQMLYbRL6QlpBUjRoBfqghoe80yqZ5azYB90lL4iNeyRCznWF+cGm41aaIoFU0aOq7TQ==" + }, + "Microsoft.Extensions.Configuration.Abstractions/1.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-nJ+Et/rnDMDmGhxvFAKdN3va7y+YDPICv1nUEP8I4IKgOkWwr/dCZHMqxVhJFrkbW9ux8Kd7erC4mvxfZh0WnA==" + }, + "Microsoft.Extensions.DependencyInjection/1.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-zdtkiZNV6LB8xtpmfyUjP/9N9ZCL/ydQ+0bfjun38fbrk+MDEm9M2yeLzRdq+OIt5xExw/KU04wFaVwJ1bhQPg==" + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/1.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-+XwaNo3o9RhLQhUnnOBCaukeRi1X9yYc0Fzye9RlErSflKZdw0VgHtn6rvKo0FTionsW0x8QVULhKH+nkqVjQA==" + }, + "Microsoft.Extensions.DependencyModel/1.0.0-rc2-002702": { + "type": "package", + "serviceable": true, + "sha512": "sha512-xLEhTaEJw+3o49TNfPJ0I4ZBPe56kIIgHYmrQo6AibTfdaIV36TyvjznIGwRc53x87xKavq88PlV4tpL+jUiJQ==" + }, + "Microsoft.Extensions.FileProviders.Abstractions/1.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-4jsqTxG3py/hYSsOtZMkNJ2/CQqPdpwyK7bDUkrwHgqowCFSmx/C+R4IzQ+2AK2Up1fVcu+ldC0gktwidL828A==" + }, + "Microsoft.Extensions.Logging/1.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-0mDuASVrd/nMeBYIJSK+9lT3TSmWxUXP/ipVB1pF1ApMN5fqGCckPTNwmOfT4Z9wPkXGnhbwFTGrxZvbzTWxOg==" + }, + "Microsoft.Extensions.Logging.Abstractions/1.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-wHT6oY50q36mAXBRKtFaB7u07WxKC5u2M8fi3PqHOOnHyUo9gD0u1TlCNR8UObHQxKMYwqlgI8TLcErpt29n8A==" + }, + "Microsoft.Extensions.Options/1.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-SdP3yPKF++JTkoa91pBDiE70uQkR/gdXWzOnMPbSj+eOqY1vgY+b8RVl+gh7TrJ2wlCK2QqnQtvCQlPPZRK36w==" + }, + "Microsoft.Extensions.PlatformAbstractions/1.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-zyjUzrOmuevOAJpIo3Mt5GmpALVYCVdLZ99keMbmCxxgQH7oxzU58kGHzE6hAgYEiWsdfMJLjVR7r+vSmaJmtg==" + }, + "Microsoft.Extensions.Primitives/1.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3q2vzfKEDjL6JFkRpk5SFA3zarYsO6+ZYgoucNImrUMzDn0mFbEOL5p9oPoWiypwypbJVVjWTf557bXZ0YFLig==" + }, + "Microsoft.Extensions.Testing.Abstractions/1.0.0-preview1-002702": { + "type": "package", + "serviceable": true, + "sha512": "sha512-NE4Efz4kvkztJ80CSifUlP0UaBP4iOOaeTVk6nrj+ZIJzhsRGLbecIe4oX8G82pkCkqFF9i8KTl7YYUwpQY5Wg==" + }, + "Newtonsoft.Json/9.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-U82mHQSKaIk+lpSVCbWYKNavmNH1i5xrExDEquU1i6I5pV6UMOqRnJRSlKO3cMPfcpp0RgDY+8jUXHdQ4IfXvw==" + }, + "NLog/4.4.0-betav15": { + "type": "package", + "serviceable": true, + "sha512": "sha512-LDRcdjv5VG9EWz+mnFqdSolUci+j+DBPIPjm7Xdam3xa1F9Rt7o0UpYoCnNRulqHzpKbU704o7Ad4ck9WxDhnw==" + }, + "NuGet.Common/3.5.0-beta-final": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7eCg4ky9NtTnxY1+2VtDKIYX137QejH8Dsuw6fENU53N6OeoROsrv1MUm0pu4e3TF8VH1eL5G3Vx/G30VdXEDg==" + }, + "NuGet.Frameworks/3.5.0-beta-final": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Si7O1OFxUryBq3xuq2AIwADM8WUMIBQOmUdTJBSaxV+KesShLJfgrr7Dl+Tg/nVETSEArJS8ktscv7gjKqtosg==" + }, + "NuGet.Packaging/3.5.0-beta-final": { + "type": "package", + "serviceable": true, + "sha512": "sha512-wJSrtokTPmpIkNhJLiG5GPxdRFCVl6XB3MmgLCyRhD2O2wZVQqvvL6SELOz/61EU0C8m9ni/UiiNRqTEtH5QZw==" + }, + "NuGet.Packaging.Core/3.5.0-beta-final": { + "type": "package", + "serviceable": true, + "sha512": "sha512-sdc8dUnbjEpNzIK5h5frJgn7ARQjQLdXMC5YrMHoEh0sCJnd2p1Lu4JvHK7mqn/MurVCAvoAjNDyazzFaVCD0w==" + }, + "NuGet.Packaging.Core.Types/3.5.0-beta-final": { + "type": "package", + "serviceable": true, + "sha512": "sha512-35AVdtLFJFp66CI9EDS61iviOe4UsCwfGh7RILK3j2ihZtlbTIIS5ygjmS8GnTkhNpmdwQRIk/rUempv4ABBxQ==" + }, + "NuGet.RuntimeModel/3.5.0-beta-final": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5opNw7zHG5wC0Qx9AzlopdPg48Tf/QVcVVKmPRuwUa3VBA1b9DBjY+1jCkaof8JRzyHZqLnxd6T9BuT98Jk0YQ==" + }, + "NuGet.Versioning/3.5.0-beta-final": { + "type": "package", + "serviceable": true, + "sha512": "sha512-fwFF9Mck1hgZVDvvJLU81gcaidMksfRoCwyjBALEXxnp1fJr4xLyGbTRdbf2OKI5OODGuUpxaMkcz7P4T8HsXw==" + }, + "Portable.BouncyCastle/1.8.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bKqC2Me9ukybNYTBhlYd2sJ6j2kRV7SgB+JfiP2GueYq6QdM4Ym6PYV5eyrqb6KViOyd3zqQfJp0o6UW5ZG+GQ==" + }, + "Remotion.Linq/2.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-IJn0BqkvwEDpP+2qjvci7n4/a9f7DhKESLWb2/uG4xQh3rTkGTBUz69bI4IivCoKkTFAqjXxYDZw2K/npohjsw==" + }, + "SQLite/3.12.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-XYNQJt2eFqGluWP+fDaiNrV1v3kA+VsU2ygUjLx7zqzhIZKlAjSYMZLldmbGNnlNC5rKR+0LTrN0IA9dZkDyFw==" + }, + "SQLite.Native/3.12.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/5BdEFTaCziE6K5OG0bjSUhPo+LRmFcmyriFWEZNSuHaiqSp69sVngTb/Yo8mH6JykMA79BFdCBLMW+2E3pnuA==" + }, + "System.Collections.NonGeneric/4.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-hMxFT2RhhlffyCdKLDXjx8WEC5JfCvNozAZxCablAuFRH74SCV4AgzE8yJCh/73bFnEoZgJ9MJmkjQ0dJmnKqA==" + }, + "System.Collections.Specialized/4.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/HKQyVP0yH1I0YtK7KJL/28snxHNH/bi+0lgk/+MbURF6ULhAE31MDI+NZDerNWu264YbxklXCCygISgm+HMug==" + }, + "System.ComponentModel.Primitives/4.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-sc/7eVCdxPrp3ljpgTKVaQGUXiW05phNWvtv/m2kocXqrUQvTVWKou1Edas2aDjTThLPZOxPYIGNb/HN0QjURg==" + }, + "System.ComponentModel.TypeConverter/4.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-MnDAlaeJZy9pdB5ZdOlwdxfpI+LJQ6e0hmH7d2+y2LkiD8DRJynyDYl4Xxf3fWFm7SbEwBZh4elcfzONQLOoQw==" + }, + "System.Data.Common/4.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-epU8jeTe7aE7RqGHq9rZ8b0Q4Ah7DgubzHQblgZMSqgW1saW868WmooSyC5ywf8upLBkcVLDu93W9GPWUYsU2Q==" + }, + "System.Diagnostics.Contracts/4.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-HvQQjy712vnlpPxaloZYkuE78Gn353L0SJLJVeLcNASeg9c4qla2a1Xq8I7B3jZoDzKPtHTkyVO7AZ5tpeQGuA==" + }, + "System.Diagnostics.TraceSource/4.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-6WVCczFZKXwpWpzd/iJkYnsmWTSFFiU24Xx/YdHXBcu+nFI/ehTgeqdJQFbtRPzbrO3KtRNjvkhtj4t5/WwWsA==" + }, + "System.Interactive.Async/3.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-UEM+WmG1Oq0bNbPx/E1jaIQ83QOrPfVDUyuYBtG6D6DpB77ytv9flPterMujumpHuoRjSc0ilSB8w41fQc05dw==" + }, + "System.Net.WebSockets/4.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-2KJo8hir6Edi9jnMDAMhiJoI691xRBmKcbNpwjrvpIMOCTYOtBpSsSEGBxBDV7PKbasJNaFp1+PZz1D7xS41Hg==" + }, + "System.Net.WebSockets.Client/4.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-GY5h9cn0ZVsG4ORQqMytTldrqxet2RC2CSEsgWGf4XNW5jhL5SxzcUZph03xbZsgn7K3qMr+Rq+gkbJNI+FEXg==" + }, + "System.Private.DataContractSerialization/4.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lcqFBUaCZxPiUkA4dlSOoPZGtZsAuuElH2XHgLwGLxd7ZozWetV5yiz0qGAV2AUYOqw97MtZBjbLMN16Xz4vXA==" + }, + "System.Resources.ResourceWriter/4.0.0-beta-22816": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Q6wpzkZjop1J+WJXl9H0OgXQvxDQxMkqA43AVENNW4SlTzIT8rFW7tum54xYZy3QCMKK8gIfOnVqA6VbgXRq1Q==" + }, + "System.Runtime.CompilerServices.Unsafe/4.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-LDvjxLx2fkThOFo/SC+901fJrh5artALmgzeSqnVxzvFp4q3HO8BkeLyshPdcbs5zpN7Xh9G23M6sDhgIPbG9A==" + }, + "System.Runtime.Serialization.Primitives/4.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==" + }, + "System.Runtime.Serialization.Xml/4.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yqfKHkWUAdI0hdDIdD9KDzluKtZ8IIqLF3O7xIZlt6UTs1bOvFRpCvRTvGQva3Ak/ZM9/nq9IHBJ1tC4Ybcrjg==" + }, + "System.Text.Encodings.Web/4.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-TWZnuiJgPDAEEUfobD7njXvSVR2Toz+jvKWds6yL4oSztmKQfnWzucczjzA+6Dv1bktBdY71sZW1YN0X6m9chQ==" + }, + "System.Xml.XmlSerializer/4.0.11": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FrazwwqfIXTfq23mfv4zH+BjqkSFNaNFBtjzu3I9NRmG8EELYyrv/fJnttCIwRMFRR/YKXF1hmsMmMEnl55HGw==" + }, + "VideoLibrary/1.3.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-HZ2RAE9xx/sjJGnwm8etawoJXYluaYGas4bAFpE14S62NFodNKzUf7Cm9TQ+JFJxAdY+1g1FEKk1b6FPSv9aMg==" + }, + "xunit/2.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-u/7VQSOSXa7kSG4iK6Lcn7RqKZQ3hk7cnyMNVMpXHSP0RI5VQEtc44hvkG3LyWOVsx1dhUDD3rPAHAxyOUDQJw==" + }, + "xunit.abstractions/2.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-NAdxKQRzuLnCZ0g++x6i87/8rMBpQoRiRlRNLAqfODm2zJPbteHRoSER3DXfxnqrHXyBJT8rFaZ8uveBeQyaMA==" + }, + "xunit.assert/2.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Hhhw+YaTe+BGhbr57dxVE+6VJk8BfThqFFii1XIsSZ4qx+SSCixprJC10JkiLRVSTfWyT8W/4nAf6NQgIrmBxA==" + }, + "xunit.core/2.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-jlbYdPbnkPIRwJllcT/tQZCNsSElVDEymdpJfH79uTUrPARkELVYw9o/zhAjKZXmeikGqGK5C2Yny4gTNoEu0Q==" + }, + "xunit.extensibility.core/2.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ANWM3WxeaeHjACLRlmrv+xOc0WAcr3cvIiJE+gqbdzTv1NCH4p1VDyT+8WmmdCc9db0WFiJLaDy4YTYsL1wWXw==" + }, + "xunit.extensibility.execution/2.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-tAoNafoVknKa3sZJPMvtZRnhOSk3gasEGeceSm7w/gyGwsR/OXFxndWJB1xSHeoy33d3Z6jFqn4A3j+pWCF0Ew==" + }, + "xunit.runner.reporters/2.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ja0kJrvwSiho2TRFpfHfa+6tGJI5edcyD8fdekTkjn7Us17PbGqglIihRe8sR9YFAmS4ipEC8+7CXOM/b69ENQ==" + }, + "xunit.runner.utility/2.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-jJJHROwskIhdQuYw7exe7KaW20dOCa+lzV/lY7Zdh1ZZzdUPpScMi9ReJIutqiyjhemGF8V/GaMIPrcjyZ4ioQ==" + }, + "Discord.Net/1.0.0-beta": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Discord.Net.Commands/1.0.0-beta": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "NadekoBot/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/src/tests/bin/Debug/netcoreapp1.0/tests.dll b/src/tests/bin/Debug/netcoreapp1.0/tests.dll new file mode 100644 index 0000000000000000000000000000000000000000..3961e8eacec0c60f12b96c009e6b42a2d9db3ec8 GIT binary patch literal 6144 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 literal 0 HcmV?d00001 diff --git a/src/tests/bin/Debug/netcoreapp1.0/tests.pdb b/src/tests/bin/Debug/netcoreapp1.0/tests.pdb new file mode 100644 index 0000000000000000000000000000000000000000..d2221260776b14b14aaf00d282b1cd20932acef1 GIT binary patch literal 1388 zcmZ8hOK1~O6us|t@@Y-mq_zG{OH)6H#MTe~e`!@}ZLN;ABBCafp$3yoJ8x30hzt}I zK~P*N2%>_BbkUUyL3HIpTnH{)xwjySE8X}xcV?oJf%E2_b3b$6oBLiyKbR3Dh@TiR z+?VN?>`8Zf0)^=^Yd~r^pJVMUFbnt86{5?Mh#gb9V;9O}itRJdG}cCRn#H_>=Lbgm z`|y4Teh)}xidGK%-px06F0FmuH+}Ks+G4}R+=mZyqmXHIzNGpF@~UbB4*_*R97qDq zKp5bvt2VatgY^DlXq_*h8WuRV31|e^_a)T#@D}t5*dqiT2PT0hz#Om!sr*OKJ_)?atS>d|32b?QdjQMIn!Ws(v7lN~QIN%4tHSkElUx0_eqXGX0 z9tN)u_+#)0cr4(nz#G7u0?uomSHl}?c=Lap_cdO_A$fHR>cUKV>!_nnmOZ^X`aAG% z6v1i}e?0{)_2$@R{!9Gy>Rmf_Z8>wMXc^g}>L%MPS(9d-3S?)?d8k=?H&?-RFldUg1bd_c>GvU&5om9d=kpp~x_O_d%t z?NULhf>l17_K@3&y;_ zbf{3C2%V^u3r$s zkYg%GMUU~AHdN~=ciO$`-f(ZbcisE$j63T-oBy?PzSQ<*`qz%!!iOLCp1T?E`nhTp zTP>RE1*K#(Oq~)<&@8d9^|Aq*i@uf@&~$8DA<+;Ci7sm7Asyj7W@R33rulHSIv_;Y~+Vuah zoCY*#1FRup4_^|9*wu+oX`?aPtKn?pd#$vYU645m10`sKqy>ZmTK%M67EZt?9|`no zRfvt!I*v&4iV+*5rM%*#MlHNUEi}j#3= 1.0.0-*", + "System.Runtime.Serialization.Primitives >= 4.1.1", + "dotnet-test-xunit >= 1.0.0-rc2-192208-24", + "xunit >= 2.1.0" + ], + ".NETCoreApp,Version=v1.0": [ + "Microsoft.NETCore.App >= 1.0.0" + ] + }, + "tools": {}, + "projectFileToolGroups": {} +} \ No newline at end of file diff --git a/src/tests/tests.xproj b/src/tests/tests.xproj new file mode 100644 index 00000000..eaf88e51 --- /dev/null +++ b/src/tests/tests.xproj @@ -0,0 +1,21 @@ + + + + 14.0.25420 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + 14cbada0-971c-44e3-b331-c7d01dd74f0b + tests + .\obj + .\bin\ + + + 2.0 + + + + + + \ No newline at end of file From edc565797dd6fd4b9b62557298df4d771e18cbda Mon Sep 17 00:00:00 2001 From: Kwoth Date: Tue, 27 Sep 2016 15:40:43 +0200 Subject: [PATCH 06/74] Updated discord.net --- discord.net | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/discord.net b/discord.net index 72131e69..6a7f7b81 160000 --- a/discord.net +++ b/discord.net @@ -1 +1 @@ -Subproject commit 72131e69f8ab39c4ed3c5002ed602c72ae83b506 +Subproject commit 6a7f7b81322266977ef809e521af6c199ec8de54 From 94b5c411b9936c74d9ad277aa7cacc43ed793d10 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Fri, 30 Sep 2016 02:40:33 +0200 Subject: [PATCH 07/74] Permissions should work completley excep moving --- .../20160922170157_perms.Designer.cs | 587 ------------------ .../20160926144107_second.Designer.cs | 587 ------------------ .../Migrations/20160926144107_second.cs | 19 - .../Migrations/20160927023659_moar perms.cs | 106 ---- ...er.cs => 20160930001917_first.Designer.cs} | 8 +- ...70157_perms.cs => 20160930001917_first.cs} | 151 +++-- .../NadekoSqliteContextModelSnapshot.cs | 4 + .../Permissions/PermissionExtensions.cs | 53 +- .../Modules/Permissions/Permissions.cs | 303 ++++++--- src/NadekoBot/Services/CommandHandler.cs | 98 ++- .../Services/Database/Models/GuildConfig.cs | 12 +- .../Services/Database/Models/Permission.cs | 35 +- .../Services/Database/NadekoContext.cs | 1 + .../Repositories/IGuildConfigRepository.cs | 1 + .../Impl/GuildConfigRepository.cs | 41 +- src/NadekoBot/project.json | 5 +- src/NadekoBot/project.lock.json | 3 +- 17 files changed, 480 insertions(+), 1534 deletions(-) delete mode 100644 src/NadekoBot/Migrations/20160922170157_perms.Designer.cs delete mode 100644 src/NadekoBot/Migrations/20160926144107_second.Designer.cs delete mode 100644 src/NadekoBot/Migrations/20160926144107_second.cs delete mode 100644 src/NadekoBot/Migrations/20160927023659_moar perms.cs rename src/NadekoBot/Migrations/{20160927023659_moar perms.Designer.cs => 20160930001917_first.Designer.cs} (99%) rename src/NadekoBot/Migrations/{20160922170157_perms.cs => 20160930001917_first.cs} (95%) diff --git a/src/NadekoBot/Migrations/20160922170157_perms.Designer.cs b/src/NadekoBot/Migrations/20160922170157_perms.Designer.cs deleted file mode 100644 index 737b3c23..00000000 --- a/src/NadekoBot/Migrations/20160922170157_perms.Designer.cs +++ /dev/null @@ -1,587 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database.Impl; - -namespace NadekoBot.Migrations -{ - [DbContext(typeof(NadekoSqliteContext))] - [Migration("20160922170157_perms")] - partial class perms - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("ItemId"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("BlacklistItem"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BufferSize"); - - b.Property("CurrencyGenerationChance"); - - b.Property("CurrencyGenerationCooldown"); - - b.Property("CurrencyName"); - - b.Property("CurrencyPluralName"); - - b.Property("CurrencySign"); - - b.Property("DontJoinServers"); - - b.Property("ForwardMessages"); - - b.Property("ForwardToAllOwners"); - - b.Property("RemindMessageFormat"); - - b.Property("RotatingStatuses"); - - b.HasKey("Id"); - - 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("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("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.ConvertUnit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("InternalTrigger"); - - b.Property("Modifier"); - - b.Property("UnitType"); - - b.HasKey("Id"); - - b.ToTable("ConversionUnits"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Amount"); - - b.Property("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("Currency"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Amount"); - - b.Property("Name"); - - b.Property("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("Donators"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Text"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("EightBallResponses"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("GuildConfigId"); - - b.Property("GuildId"); - - b.Property("LastStatus"); - - b.Property("Type"); - - b.Property("Username"); - - b.HasKey("Id"); - - b.HasIndex("GuildConfigId"); - - b.ToTable("FollowedStream"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AutoAssignRoleId"); - - b.Property("AutoDeleteByeMessages"); - - b.Property("AutoDeleteGreetMessages"); - - b.Property("AutoDeleteGreetMessagesTimer"); - - b.Property("AutoDeleteSelfAssignedRoleMessages"); - - b.Property("ByeMessageChannelId"); - - b.Property("ChannelByeMessageText"); - - b.Property("ChannelGreetMessageText"); - - b.Property("DefaultMusicVolume"); - - b.Property("DeleteMessageOnCommand"); - - b.Property("DmGreetMessageText"); - - b.Property("ExclusiveSelfAssignedRoles"); - - b.Property("GenerateCurrencyChannelId"); - - b.Property("GreetMessageChannelId"); - - b.Property("GuildId"); - - b.Property("LogSettingId"); - - b.Property("SendChannelByeMessage"); - - b.Property("SendChannelGreetMessage"); - - b.Property("SendDmGreetMessage"); - - b.Property("VoicePlusTextEnabled"); - - b.HasKey("Id"); - - b.HasIndex("GuildId") - .IsUnique(); - - b.HasIndex("LogSettingId"); - - b.ToTable("GuildConfigs"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("LogSettingId"); - - b.HasKey("Id"); - - b.HasIndex("LogSettingId"); - - b.ToTable("IgnoredLogChannels"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("LogSettingId"); - - b.HasKey("Id"); - - b.HasIndex("LogSettingId"); - - b.ToTable("IgnoredVoicePresenceCHannels"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelCreated"); - - b.Property("ChannelDestroyed"); - - b.Property("ChannelId"); - - b.Property("ChannelUpdated"); - - b.Property("IsLogging"); - - b.Property("LogUserPresence"); - - b.Property("LogVoicePresence"); - - b.Property("MessageDeleted"); - - b.Property("MessageReceived"); - - b.Property("MessageUpdated"); - - b.Property("UserBanned"); - - b.Property("UserJoined"); - - b.Property("UserLeft"); - - b.Property("UserPresenceChannelId"); - - b.Property("UserUnbanned"); - - b.Property("UserUpdated"); - - b.Property("VoicePresenceChannelId"); - - b.HasKey("Id"); - - b.ToTable("LogSettings"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("ModuleName"); - - b.Property("Prefix"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("ModulePrefixes"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("GuildConfigId"); - - b.Property("PrimaryTarget"); - - b.Property("PrimaryTargetId"); - - b.Property("SecondaryTarget"); - - b.Property("SecondaryTargetName"); - - b.Property("State"); - - b.HasKey("Id"); - - b.HasIndex("GuildConfigId"); - - b.ToTable("Permission"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Status"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("PlayingStatus"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AuthorId"); - - b.Property("AuthorName") - .IsRequired(); - - b.Property("GuildId"); - - b.Property("Keyword") - .IsRequired(); - - b.Property("Text") - .IsRequired(); - - b.HasKey("Id"); - - b.ToTable("Quotes"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Icon"); - - b.Property("Name"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("RaceAnimals"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("IsPrivate"); - - b.Property("Message"); - - b.Property("ServerId"); - - b.Property("UserId"); - - b.Property("When"); - - b.HasKey("Id"); - - b.ToTable("Reminders"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("GuildId"); - - b.Property("Interval"); - - b.Property("Message"); - - b.HasKey("Id"); - - b.HasIndex("ChannelId") - .IsUnique(); - - b.ToTable("Repeaters"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("GuildId"); - - b.Property("RoleId"); - - b.HasKey("Id"); - - b.HasIndex("GuildId", "RoleId") - .IsUnique(); - - b.ToTable("SelfAssignableRoles"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Author"); - - b.Property("Text"); - - b.HasKey("Id"); - - b.ToTable("TypingArticles"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("Blacklist") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => - { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") - .WithMany("Bases") - .HasForeignKey("ClashWarId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("EightBallResponses") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => - { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") - .WithMany("FollowedStreams") - .HasForeignKey("GuildConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany() - .HasForeignKey("LogSettingId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany("IgnoredChannels") - .HasForeignKey("LogSettingId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany("IgnoredVoicePresenceChannelIds") - .HasForeignKey("LogSettingId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig", "BotConfig") - .WithMany("ModulePrefixes") - .HasForeignKey("BotConfigId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => - { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") - .WithMany("Permissions") - .HasForeignKey("GuildConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("RotatingStatusMessages") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("RaceAnimals") - .HasForeignKey("BotConfigId"); - }); - } - } -} diff --git a/src/NadekoBot/Migrations/20160926144107_second.Designer.cs b/src/NadekoBot/Migrations/20160926144107_second.Designer.cs deleted file mode 100644 index 095ee7cf..00000000 --- a/src/NadekoBot/Migrations/20160926144107_second.Designer.cs +++ /dev/null @@ -1,587 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database.Impl; - -namespace NadekoBot.Migrations -{ - [DbContext(typeof(NadekoSqliteContext))] - [Migration("20160926144107_second")] - partial class second - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("ItemId"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("BlacklistItem"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BufferSize"); - - b.Property("CurrencyGenerationChance"); - - b.Property("CurrencyGenerationCooldown"); - - b.Property("CurrencyName"); - - b.Property("CurrencyPluralName"); - - b.Property("CurrencySign"); - - b.Property("DontJoinServers"); - - b.Property("ForwardMessages"); - - b.Property("ForwardToAllOwners"); - - b.Property("RemindMessageFormat"); - - b.Property("RotatingStatuses"); - - b.HasKey("Id"); - - 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("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("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.ConvertUnit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("InternalTrigger"); - - b.Property("Modifier"); - - b.Property("UnitType"); - - b.HasKey("Id"); - - b.ToTable("ConversionUnits"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Amount"); - - b.Property("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("Currency"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Amount"); - - b.Property("Name"); - - b.Property("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("Donators"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Text"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("EightBallResponses"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("GuildConfigId"); - - b.Property("GuildId"); - - b.Property("LastStatus"); - - b.Property("Type"); - - b.Property("Username"); - - b.HasKey("Id"); - - b.HasIndex("GuildConfigId"); - - b.ToTable("FollowedStream"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AutoAssignRoleId"); - - b.Property("AutoDeleteByeMessages"); - - b.Property("AutoDeleteGreetMessages"); - - b.Property("AutoDeleteGreetMessagesTimer"); - - b.Property("AutoDeleteSelfAssignedRoleMessages"); - - b.Property("ByeMessageChannelId"); - - b.Property("ChannelByeMessageText"); - - b.Property("ChannelGreetMessageText"); - - b.Property("DefaultMusicVolume"); - - b.Property("DeleteMessageOnCommand"); - - b.Property("DmGreetMessageText"); - - b.Property("ExclusiveSelfAssignedRoles"); - - b.Property("GenerateCurrencyChannelId"); - - b.Property("GreetMessageChannelId"); - - b.Property("GuildId"); - - b.Property("LogSettingId"); - - b.Property("SendChannelByeMessage"); - - b.Property("SendChannelGreetMessage"); - - b.Property("SendDmGreetMessage"); - - b.Property("VoicePlusTextEnabled"); - - b.HasKey("Id"); - - b.HasIndex("GuildId") - .IsUnique(); - - b.HasIndex("LogSettingId"); - - b.ToTable("GuildConfigs"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("LogSettingId"); - - b.HasKey("Id"); - - b.HasIndex("LogSettingId"); - - b.ToTable("IgnoredLogChannels"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("LogSettingId"); - - b.HasKey("Id"); - - b.HasIndex("LogSettingId"); - - b.ToTable("IgnoredVoicePresenceCHannels"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelCreated"); - - b.Property("ChannelDestroyed"); - - b.Property("ChannelId"); - - b.Property("ChannelUpdated"); - - b.Property("IsLogging"); - - b.Property("LogUserPresence"); - - b.Property("LogVoicePresence"); - - b.Property("MessageDeleted"); - - b.Property("MessageReceived"); - - b.Property("MessageUpdated"); - - b.Property("UserBanned"); - - b.Property("UserJoined"); - - b.Property("UserLeft"); - - b.Property("UserPresenceChannelId"); - - b.Property("UserUnbanned"); - - b.Property("UserUpdated"); - - b.Property("VoicePresenceChannelId"); - - b.HasKey("Id"); - - b.ToTable("LogSettings"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("ModuleName"); - - b.Property("Prefix"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("ModulePrefixes"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("GuildConfigId"); - - b.Property("PrimaryTarget"); - - b.Property("PrimaryTargetId"); - - b.Property("SecondaryTarget"); - - b.Property("SecondaryTargetName"); - - b.Property("State"); - - b.HasKey("Id"); - - b.HasIndex("GuildConfigId"); - - b.ToTable("Permission"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Status"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("PlayingStatus"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AuthorId"); - - b.Property("AuthorName") - .IsRequired(); - - b.Property("GuildId"); - - b.Property("Keyword") - .IsRequired(); - - b.Property("Text") - .IsRequired(); - - b.HasKey("Id"); - - b.ToTable("Quotes"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Icon"); - - b.Property("Name"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("RaceAnimals"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("IsPrivate"); - - b.Property("Message"); - - b.Property("ServerId"); - - b.Property("UserId"); - - b.Property("When"); - - b.HasKey("Id"); - - b.ToTable("Reminders"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("GuildId"); - - b.Property("Interval"); - - b.Property("Message"); - - b.HasKey("Id"); - - b.HasIndex("ChannelId") - .IsUnique(); - - b.ToTable("Repeaters"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("GuildId"); - - b.Property("RoleId"); - - b.HasKey("Id"); - - b.HasIndex("GuildId", "RoleId") - .IsUnique(); - - b.ToTable("SelfAssignableRoles"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Author"); - - b.Property("Text"); - - b.HasKey("Id"); - - b.ToTable("TypingArticles"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("Blacklist") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => - { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") - .WithMany("Bases") - .HasForeignKey("ClashWarId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("EightBallResponses") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => - { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") - .WithMany("FollowedStreams") - .HasForeignKey("GuildConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany() - .HasForeignKey("LogSettingId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany("IgnoredChannels") - .HasForeignKey("LogSettingId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany("IgnoredVoicePresenceChannelIds") - .HasForeignKey("LogSettingId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig", "BotConfig") - .WithMany("ModulePrefixes") - .HasForeignKey("BotConfigId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => - { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") - .WithMany("Permissions") - .HasForeignKey("GuildConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("RotatingStatusMessages") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("RaceAnimals") - .HasForeignKey("BotConfigId"); - }); - } - } -} diff --git a/src/NadekoBot/Migrations/20160926144107_second.cs b/src/NadekoBot/Migrations/20160926144107_second.cs deleted file mode 100644 index e79f9421..00000000 --- a/src/NadekoBot/Migrations/20160926144107_second.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace NadekoBot.Migrations -{ - public partial class second : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - - } - } -} diff --git a/src/NadekoBot/Migrations/20160927023659_moar perms.cs b/src/NadekoBot/Migrations/20160927023659_moar perms.cs deleted file mode 100644 index b360ca7f..00000000 --- a/src/NadekoBot/Migrations/20160927023659_moar perms.cs +++ /dev/null @@ -1,106 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace NadekoBot.Migrations -{ - public partial class moarperms : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_Permission_GuildConfigs_GuildConfigId", - table: "Permission"); - - migrationBuilder.DropIndex( - name: "IX_Permission_GuildConfigId", - table: "Permission"); - - migrationBuilder.DropColumn( - name: "GuildConfigId", - table: "Permission"); - - migrationBuilder.AddColumn( - name: "NextId", - table: "Permission", - nullable: true); - - migrationBuilder.AddColumn( - name: "RootPermissionId", - table: "GuildConfigs", - nullable: true); - - migrationBuilder.CreateIndex( - name: "IX_Permission_NextId", - table: "Permission", - column: "NextId", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_GuildConfigs_RootPermissionId", - table: "GuildConfigs", - column: "RootPermissionId"); - - migrationBuilder.AddForeignKey( - name: "FK_GuildConfigs_Permission_RootPermissionId", - table: "GuildConfigs", - column: "RootPermissionId", - principalTable: "Permission", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - - migrationBuilder.AddForeignKey( - name: "FK_Permission_Permission_NextId", - table: "Permission", - column: "NextId", - principalTable: "Permission", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_GuildConfigs_Permission_RootPermissionId", - table: "GuildConfigs"); - - migrationBuilder.DropForeignKey( - name: "FK_Permission_Permission_NextId", - table: "Permission"); - - migrationBuilder.DropIndex( - name: "IX_Permission_NextId", - table: "Permission"); - - migrationBuilder.DropIndex( - name: "IX_GuildConfigs_RootPermissionId", - table: "GuildConfigs"); - - migrationBuilder.DropColumn( - name: "NextId", - table: "Permission"); - - migrationBuilder.DropColumn( - name: "RootPermissionId", - table: "GuildConfigs"); - - migrationBuilder.AddColumn( - name: "GuildConfigId", - table: "Permission", - nullable: true); - - migrationBuilder.CreateIndex( - name: "IX_Permission_GuildConfigId", - table: "Permission", - column: "GuildConfigId"); - - migrationBuilder.AddForeignKey( - name: "FK_Permission_GuildConfigs_GuildConfigId", - table: "Permission", - column: "GuildConfigId", - principalTable: "GuildConfigs", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - } - } -} diff --git a/src/NadekoBot/Migrations/20160927023659_moar perms.Designer.cs b/src/NadekoBot/Migrations/20160930001917_first.Designer.cs similarity index 99% rename from src/NadekoBot/Migrations/20160927023659_moar perms.Designer.cs rename to src/NadekoBot/Migrations/20160930001917_first.Designer.cs index d05622cc..dd4fabf1 100644 --- a/src/NadekoBot/Migrations/20160927023659_moar perms.Designer.cs +++ b/src/NadekoBot/Migrations/20160930001917_first.Designer.cs @@ -8,8 +8,8 @@ using NadekoBot.Services.Database.Impl; namespace NadekoBot.Migrations { [DbContext(typeof(NadekoSqliteContext))] - [Migration("20160927023659_moar perms")] - partial class moarperms + [Migration("20160930001917_first")] + partial class first { protected override void BuildTargetModel(ModelBuilder modelBuilder) { @@ -237,6 +237,8 @@ namespace NadekoBot.Migrations b.Property("LogSettingId"); + b.Property("PermissionRole"); + b.Property("RootPermissionId"); b.Property("SendChannelByeMessage"); @@ -245,6 +247,8 @@ namespace NadekoBot.Migrations b.Property("SendDmGreetMessage"); + b.Property("VerbosePermissions"); + b.Property("VoicePlusTextEnabled"); b.HasKey("Id"); diff --git a/src/NadekoBot/Migrations/20160922170157_perms.cs b/src/NadekoBot/Migrations/20160930001917_first.cs similarity index 95% rename from src/NadekoBot/Migrations/20160922170157_perms.cs rename to src/NadekoBot/Migrations/20160930001917_first.cs index e892e494..400ac665 100644 --- a/src/NadekoBot/Migrations/20160922170157_perms.cs +++ b/src/NadekoBot/Migrations/20160930001917_first.cs @@ -4,7 +4,7 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace NadekoBot.Migrations { - public partial class perms : Migration + public partial class first : Migration { protected override void Up(MigrationBuilder migrationBuilder) { @@ -122,6 +122,30 @@ namespace NadekoBot.Migrations table.PrimaryKey("PK_LogSettings", x => x.Id); }); + migrationBuilder.CreateTable( + name: "Permission", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + NextId = table.Column(nullable: true), + PrimaryTarget = table.Column(nullable: false), + PrimaryTargetId = table.Column(nullable: false), + SecondaryTarget = table.Column(nullable: false), + SecondaryTargetName = table.Column(nullable: true), + State = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Permission", x => x.Id); + table.ForeignKey( + name: "FK_Permission_Permission_NextId", + column: x => x.NextId, + principalTable: "Permission", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + migrationBuilder.CreateTable( name: "Quotes", columns: table => new @@ -326,44 +350,6 @@ namespace NadekoBot.Migrations onDelete: ReferentialAction.Cascade); }); - migrationBuilder.CreateTable( - name: "GuildConfigs", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - AutoAssignRoleId = table.Column(nullable: false), - AutoDeleteByeMessages = table.Column(nullable: false), - AutoDeleteGreetMessages = table.Column(nullable: false), - AutoDeleteGreetMessagesTimer = table.Column(nullable: false), - AutoDeleteSelfAssignedRoleMessages = table.Column(nullable: false), - ByeMessageChannelId = table.Column(nullable: false), - ChannelByeMessageText = table.Column(nullable: true), - ChannelGreetMessageText = table.Column(nullable: true), - DefaultMusicVolume = table.Column(nullable: false), - DeleteMessageOnCommand = table.Column(nullable: false), - DmGreetMessageText = table.Column(nullable: true), - ExclusiveSelfAssignedRoles = table.Column(nullable: false), - GenerateCurrencyChannelId = table.Column(nullable: true), - GreetMessageChannelId = table.Column(nullable: false), - GuildId = table.Column(nullable: false), - LogSettingId = table.Column(nullable: true), - SendChannelByeMessage = table.Column(nullable: false), - SendChannelGreetMessage = table.Column(nullable: false), - SendDmGreetMessage = table.Column(nullable: false), - VoicePlusTextEnabled = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_GuildConfigs", x => x.Id); - table.ForeignKey( - name: "FK_GuildConfigs_LogSettings_LogSettingId", - column: x => x.LogSettingId, - principalTable: "LogSettings", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - migrationBuilder.CreateTable( name: "IgnoredLogChannels", columns: table => new @@ -404,6 +390,53 @@ namespace NadekoBot.Migrations onDelete: ReferentialAction.Restrict); }); + migrationBuilder.CreateTable( + name: "GuildConfigs", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + AutoAssignRoleId = table.Column(nullable: false), + AutoDeleteByeMessages = table.Column(nullable: false), + AutoDeleteGreetMessages = table.Column(nullable: false), + AutoDeleteGreetMessagesTimer = table.Column(nullable: false), + AutoDeleteSelfAssignedRoleMessages = table.Column(nullable: false), + ByeMessageChannelId = table.Column(nullable: false), + ChannelByeMessageText = table.Column(nullable: true), + ChannelGreetMessageText = table.Column(nullable: true), + DefaultMusicVolume = table.Column(nullable: false), + DeleteMessageOnCommand = table.Column(nullable: false), + DmGreetMessageText = table.Column(nullable: true), + ExclusiveSelfAssignedRoles = table.Column(nullable: false), + GenerateCurrencyChannelId = table.Column(nullable: true), + GreetMessageChannelId = table.Column(nullable: false), + GuildId = table.Column(nullable: false), + LogSettingId = table.Column(nullable: true), + PermissionRole = table.Column(nullable: true), + RootPermissionId = table.Column(nullable: true), + SendChannelByeMessage = table.Column(nullable: false), + SendChannelGreetMessage = table.Column(nullable: false), + SendDmGreetMessage = table.Column(nullable: false), + VerbosePermissions = table.Column(nullable: false), + VoicePlusTextEnabled = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_GuildConfigs", x => x.Id); + table.ForeignKey( + name: "FK_GuildConfigs_LogSettings_LogSettingId", + column: x => x.LogSettingId, + principalTable: "LogSettings", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_GuildConfigs_Permission_RootPermissionId", + column: x => x.RootPermissionId, + principalTable: "Permission", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + migrationBuilder.CreateTable( name: "FollowedStream", columns: table => new @@ -428,30 +461,6 @@ namespace NadekoBot.Migrations onDelete: ReferentialAction.Restrict); }); - migrationBuilder.CreateTable( - name: "Permission", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - GuildConfigId = table.Column(nullable: true), - PrimaryTarget = table.Column(nullable: false), - PrimaryTargetId = table.Column(nullable: false), - SecondaryTarget = table.Column(nullable: false), - SecondaryTargetName = table.Column(nullable: true), - State = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Permission", x => x.Id); - table.ForeignKey( - name: "FK_Permission_GuildConfigs_GuildConfigId", - column: x => x.GuildConfigId, - principalTable: "GuildConfigs", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - migrationBuilder.CreateIndex( name: "IX_BlacklistItem_BotConfigId", table: "BlacklistItem", @@ -495,6 +504,11 @@ namespace NadekoBot.Migrations table: "GuildConfigs", column: "LogSettingId"); + migrationBuilder.CreateIndex( + name: "IX_GuildConfigs_RootPermissionId", + table: "GuildConfigs", + column: "RootPermissionId"); + migrationBuilder.CreateIndex( name: "IX_IgnoredLogChannels_LogSettingId", table: "IgnoredLogChannels", @@ -511,9 +525,10 @@ namespace NadekoBot.Migrations column: "BotConfigId"); migrationBuilder.CreateIndex( - name: "IX_Permission_GuildConfigId", + name: "IX_Permission_NextId", table: "Permission", - column: "GuildConfigId"); + column: "NextId", + unique: true); migrationBuilder.CreateIndex( name: "IX_PlayingStatus_BotConfigId", @@ -570,9 +585,6 @@ namespace NadekoBot.Migrations migrationBuilder.DropTable( name: "ModulePrefixes"); - migrationBuilder.DropTable( - name: "Permission"); - migrationBuilder.DropTable( name: "PlayingStatus"); @@ -605,6 +617,9 @@ namespace NadekoBot.Migrations migrationBuilder.DropTable( name: "LogSettings"); + + migrationBuilder.DropTable( + name: "Permission"); } } } diff --git a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs index 039c2090..210b97e9 100644 --- a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs +++ b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs @@ -236,6 +236,8 @@ namespace NadekoBot.Migrations b.Property("LogSettingId"); + b.Property("PermissionRole"); + b.Property("RootPermissionId"); b.Property("SendChannelByeMessage"); @@ -244,6 +246,8 @@ namespace NadekoBot.Migrations b.Property("SendDmGreetMessage"); + b.Property("VerbosePermissions"); + b.Property("VoicePlusTextEnabled"); b.HasKey("Id"); diff --git a/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs b/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs index 7fded44f..70905eaf 100644 --- a/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs +++ b/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs @@ -1,5 +1,6 @@ using Discord; using Discord.Commands; +using NadekoBot.Services; using NadekoBot.Services.Database; using NadekoBot.Services.Database.Models; using System; @@ -21,7 +22,6 @@ namespace NadekoBot.Modules.Permissions public static bool CheckPermissions(this IEnumerable permsEnumerable, IUserMessage message, Command command, out int permIndex) { - permsEnumerable = permsEnumerable.Reverse(); var perms = permsEnumerable as List ?? permsEnumerable.ToList(); for (int i = 0; i < perms.Count; i++) @@ -50,13 +50,14 @@ namespace NadekoBot.Modules.Permissions public static bool? CheckPermission(this Permission perm, IUserMessage message, Command command) { if (!((perm.SecondaryTarget == SecondaryPermissionType.Command && - perm.SecondaryTargetName == command.Text.ToLowerInvariant()) || - ((perm.SecondaryTarget == SecondaryPermissionType.Module || perm.SecondaryTarget == SecondaryPermissionType.AllCommands) && - perm.SecondaryTargetName == command.Module.Name.ToLowerInvariant()) || - perm.SecondaryTarget == SecondaryPermissionType.AllModules || - (perm.SecondaryTarget == SecondaryPermissionType.AllCommands && perm.SecondaryTargetName == command.Module.Name.ToLowerInvariant()))) + perm.SecondaryTargetName.ToLowerInvariant() == command.Text.ToLowerInvariant()) || + (perm.SecondaryTarget == SecondaryPermissionType.Module && + perm.SecondaryTargetName.ToLowerInvariant() == command.Module.Name.ToLowerInvariant()) || + perm.SecondaryTarget == SecondaryPermissionType.AllModules)) return null; + var guildUser = message.Author as IGuildUser; + switch (perm.PrimaryTarget) { case PrimaryPermissionType.User: @@ -67,13 +68,16 @@ namespace NadekoBot.Modules.Permissions if (perm.PrimaryTargetId == message.Channel.Id) return perm.State; break; - case PrimaryPermissionType.Role: - var guildUser = message.Author as IGuildUser; + case PrimaryPermissionType.Role: if (guildUser == null) break; if (guildUser.Roles.Any(r => r.Id == perm.PrimaryTargetId)) return perm.State; break; + case PrimaryPermissionType.Server: + if (guildUser == null) + break; + return perm.State; } return null; } @@ -92,6 +96,9 @@ namespace NadekoBot.Modules.Permissions case PrimaryPermissionType.Role: com += "r"; break; + case PrimaryPermissionType.Server: + com += "s"; + break; } switch (perm.SecondaryTarget) @@ -102,9 +109,6 @@ namespace NadekoBot.Modules.Permissions case SecondaryPermissionType.Command: com += "c"; break; - case SecondaryPermissionType.AllCommands: - com = "a" + com + "c"; - break; case SecondaryPermissionType.AllModules: com = "a" + com + "m"; break; @@ -122,22 +126,19 @@ namespace NadekoBot.Modules.Permissions case PrimaryPermissionType.Role: com += $"<@&{perm.PrimaryTargetId}>"; break; + case PrimaryPermissionType.Server: + break; } return NadekoBot.ModulePrefixes[typeof(Permissions).Name] + com; } - public static void Add(this Permission perm, Permission toAdd) + public static void Prepend(this Permission perm, Permission toAdd) { - var last = perm; - while (last.Next != null) - { - last = last.Next; - } + perm = perm.GetRoot(); - toAdd.Previous = last; - last.Next = toAdd; - toAdd.Next = null; + perm.Previous = toAdd; + toAdd.Next = perm; } public static void Insert(this Permission perm, int index, Permission toAdd) @@ -174,16 +175,9 @@ namespace NadekoBot.Modules.Permissions public static Permission RemoveAt(this Permission perm, int index) { - if (index < 0) + if (index <= 0) //can't really remove at 0, that means deleting the element right now. Just use perm.Next if its 0 throw new IndexOutOfRangeException(); - if (index == 0) - { - perm.Next.Previous = null; - perm.Next = null; - return perm; - } - var toRemove = perm; var i = 0; while (i != index) @@ -195,7 +189,8 @@ namespace NadekoBot.Modules.Permissions } toRemove.Previous.Next = toRemove.Next; - toRemove.Next.Previous = toRemove.Previous; + if (toRemove.Next != null) + toRemove.Next.Previous = toRemove.Previous; return toRemove; } diff --git a/src/NadekoBot/Modules/Permissions/Permissions.cs b/src/NadekoBot/Modules/Permissions/Permissions.cs index 3c4e7c2e..b7648c80 100644 --- a/src/NadekoBot/Modules/Permissions/Permissions.cs +++ b/src/NadekoBot/Modules/Permissions/Permissions.cs @@ -21,6 +21,22 @@ namespace NadekoBot.Modules.Permissions { } + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task Verbose(IUserMessage msg, PermissionAction action) + { + var channel = (ITextChannel)msg.Channel; + + using (var uow = DbHandler.UnitOfWork()) + { + var config = uow.GuildConfigs.For(channel.Guild.Id); + config.VerbosePermissions = action.Value; + await uow.CompleteAsync().ConfigureAwait(false); + } + + await channel.SendMessageAsync("I will " + (action.Value ? "now" : "no longer") + " show permission warnings.").ConfigureAwait(false); + } + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task ListPerms(IUserMessage msg) @@ -30,10 +46,10 @@ namespace NadekoBot.Modules.Permissions string toSend = ""; using (var uow = DbHandler.UnitOfWork()) { - var perms = uow.GuildConfigs.For(channel.Guild.Id).RootPermission.AsEnumerable().Reverse(); + var perms = uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission; var i = 1; - toSend = String.Join("\n", perms.Select(p => $"`{(i++)}.` {p.GetCommand()}")); + toSend = String.Join("\n", perms.AsEnumerable().Select(p => $"`{(i++)}.` {p.GetCommand()}")); } if (string.IsNullOrWhiteSpace(toSend)) @@ -47,16 +63,36 @@ namespace NadekoBot.Modules.Permissions public async Task RemovePerm(IUserMessage imsg, int index) { var channel = (ITextChannel)imsg.Channel; + index -= 1; try { Permission p; using (var uow = DbHandler.UnitOfWork()) { - var perms = uow.GuildConfigs.For(channel.Guild.Id).RootPermission; - p = perms.RemoveAt(perms.Count() - index); + var perms = uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission; + if (index == perms.Count() - 1) + { + return; + } + else if (index == 0) + { + p = perms; + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = perms.Next; + } + else + { + p = perms.RemoveAt(index); + } await uow.CompleteAsync().ConfigureAwait(false); } - await channel.SendMessageAsync($"`Removed permission \"{p.GetCommand()}\" from position #{index}.`").ConfigureAwait(false); + + using (var uow2 = DbHandler.UnitOfWork()) + { + uow2._context.Remove(p); + uow2._context.SaveChanges(); + } + + await channel.SendMessageAsync($"{imsg.Author.Mention} removed permission **{p.GetCommand()}** from position #{index + 1}.").ConfigureAwait(false); } catch (ArgumentOutOfRangeException) { @@ -68,24 +104,31 @@ namespace NadekoBot.Modules.Permissions [RequireContext(ContextType.Guild)] public async Task MovePerm(IUserMessage imsg, int from, int to) { + from -= 1; + to -= 1; var channel = (ITextChannel)imsg.Channel; - if (!(from == to || from < 1 || to < 1)) + if (!(from == to || from < 0 || to < 0)) { try { Permission toInsert; using (var uow = DbHandler.UnitOfWork()) { - var perms = uow.GuildConfigs.For(channel.Guild.Id).RootPermission; - var count = perms.Count(); - toInsert = perms.RemoveAt(count - from); + var perms = uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission; + if (from == 0) + toInsert = perms; + else + toInsert = perms.RemoveAt(from); if (from < to) to -= 1; - perms.Insert(count - to, toInsert); - uow.GuildConfigs.For(channel.Guild.Id).RootPermission = perms; + var last = perms.Count() - 1; + if (from == last || to == last) + throw new IndexOutOfRangeException(); + perms.Insert(to, toInsert); + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = perms.GetRoot(); await uow.CompleteAsync().ConfigureAwait(false); } - await channel.SendMessageAsync($"`Moved permission \"{toInsert.GetCommand()}\" from #{from} to #{to}.`").ConfigureAwait(false); + await channel.SendMessageAsync($"`Moved permission:` \"{toInsert.GetCommand()}\" `from #{from} to #{to}.`").ConfigureAwait(false); return; } catch (Exception e) when (e is ArgumentOutOfRangeException || e is IndexOutOfRangeException) @@ -95,6 +138,52 @@ namespace NadekoBot.Modules.Permissions await channel.SendMessageAsync("`Invalid index(es) specified.`").ConfigureAwait(false); } + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task SrvrCmd(IUserMessage imsg, Command command, PermissionAction action) + { + var channel = (ITextChannel)imsg.Channel; + + using (var uow = DbHandler.UnitOfWork()) + { + var newPerm = new Permission + { + PrimaryTarget = PrimaryPermissionType.Server, + PrimaryTargetId = 0, + SecondaryTarget = SecondaryPermissionType.Command, + SecondaryTargetName = command.Text.ToLowerInvariant(), + State = action.Value, + }; + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; + await uow.CompleteAsync().ConfigureAwait(false); + } + await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{command.Text}` command on this server.").ConfigureAwait(false); + } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task SrvrMdl(IUserMessage imsg, Module module, PermissionAction action) + { + var channel = (ITextChannel)imsg.Channel; + + using (var uow = DbHandler.UnitOfWork()) + { + var newPerm = new Permission + { + PrimaryTarget = PrimaryPermissionType.Server, + PrimaryTargetId = 0, + SecondaryTarget = SecondaryPermissionType.Module, + SecondaryTargetName = module.Name.ToLowerInvariant(), + State = action.Value, + }; + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; + await uow.CompleteAsync().ConfigureAwait(false); + } + await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{module.Name}` module on this server.").ConfigureAwait(false); + } + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task UsrCmd(IUserMessage imsg, Command command, PermissionAction action, IGuildUser user) @@ -103,14 +192,16 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { - uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission + var newPerm = new Permission { PrimaryTarget = PrimaryPermissionType.User, PrimaryTargetId = user.Id, SecondaryTarget = SecondaryPermissionType.Command, SecondaryTargetName = command.Text.ToLowerInvariant(), State = action.Value, - }); + }; + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{command.Text}` command for `{user}` user.").ConfigureAwait(false); @@ -124,14 +215,16 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { - uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission + var newPerm = new Permission { PrimaryTarget = PrimaryPermissionType.User, PrimaryTargetId = user.Id, SecondaryTarget = SecondaryPermissionType.Module, SecondaryTargetName = module.Name.ToLowerInvariant(), State = action.Value, - }); + }; + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{module.Name}` module for `{user}` user.").ConfigureAwait(false); @@ -145,14 +238,16 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { - uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission + var newPerm = new Permission { PrimaryTarget = PrimaryPermissionType.Role, PrimaryTargetId = role.Id, SecondaryTarget = SecondaryPermissionType.Command, SecondaryTargetName = command.Text.ToLowerInvariant(), State = action.Value, - }); + }; + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{command.Text}` command for `{role}` role.").ConfigureAwait(false); @@ -166,14 +261,16 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { - uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission + var newPerm = new Permission { PrimaryTarget = PrimaryPermissionType.Role, PrimaryTargetId = role.Id, SecondaryTarget = SecondaryPermissionType.Module, SecondaryTargetName = module.Name.ToLowerInvariant(), State = action.Value, - }); + }; + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{module.Name}` module for `{role}` role.").ConfigureAwait(false); @@ -184,18 +281,25 @@ namespace NadekoBot.Modules.Permissions public async Task ChnlCmd(IUserMessage imsg, Command command, PermissionAction action, ITextChannel chnl) { var channel = (ITextChannel)imsg.Channel; - - using (var uow = DbHandler.UnitOfWork()) + try { - uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission + using (var uow = DbHandler.UnitOfWork()) { - PrimaryTarget = PrimaryPermissionType.Channel, - PrimaryTargetId = chnl.Id, - SecondaryTarget = SecondaryPermissionType.Command, - SecondaryTargetName = command.Text.ToLowerInvariant(), - State = action.Value, - }); - await uow.CompleteAsync().ConfigureAwait(false); + var newPerm = new Permission + { + PrimaryTarget = PrimaryPermissionType.Channel, + PrimaryTargetId = chnl.Id, + SecondaryTarget = SecondaryPermissionType.Command, + SecondaryTargetName = command.Text.ToLowerInvariant(), + State = action.Value, + }; + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; + await uow.CompleteAsync().ConfigureAwait(false); + } + } + catch (Exception ex) { + Console.WriteLine(ex); } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{command.Text}` command for `{chnl}` channel.").ConfigureAwait(false); } @@ -208,14 +312,16 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { - uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission + var newPerm = new Permission { PrimaryTarget = PrimaryPermissionType.Channel, PrimaryTargetId = chnl.Id, SecondaryTarget = SecondaryPermissionType.Module, SecondaryTargetName = module.Name.ToLowerInvariant(), State = action.Value, - }); + }; + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{module.Name}` module for `{chnl}` channel.").ConfigureAwait(false); @@ -229,14 +335,16 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { - uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission + var newPerm = new Permission { PrimaryTarget = PrimaryPermissionType.Channel, PrimaryTargetId = chnl.Id, SecondaryTarget = SecondaryPermissionType.AllModules, SecondaryTargetName = "*", State = action.Value, - }); + }; + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL MODULES` for `{chnl}` channel.").ConfigureAwait(false); @@ -250,14 +358,16 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { - uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission + var newPerm = new Permission { PrimaryTarget = PrimaryPermissionType.Role, PrimaryTargetId = role.Id, SecondaryTarget = SecondaryPermissionType.AllModules, SecondaryTargetName = "*", State = action.Value, - }); + }; + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL MODULES` for `{role}` role.").ConfigureAwait(false); @@ -271,14 +381,16 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { - uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission + var newPerm = new Permission { PrimaryTarget = PrimaryPermissionType.User, PrimaryTargetId = user.Id, SecondaryTarget = SecondaryPermissionType.AllModules, SecondaryTargetName = "*", State = action.Value, - }); + }; + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL MODULES` for `{user}` user.").ConfigureAwait(false); @@ -286,66 +398,89 @@ namespace NadekoBot.Modules.Permissions [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] - public async Task AllChnlCmds(IUserMessage imsg, Module module, PermissionAction action, ITextChannel chnl) + public async Task AllSrvrMdls(IUserMessage imsg, PermissionAction action, IUser user) { var channel = (ITextChannel)imsg.Channel; using (var uow = DbHandler.UnitOfWork()) { - uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission + var newPerm = new Permission { - PrimaryTarget = PrimaryPermissionType.Channel, - PrimaryTargetId = chnl.Id, - SecondaryTarget = SecondaryPermissionType.AllCommands, - SecondaryTargetName = module.Name.ToLowerInvariant(), + PrimaryTarget = PrimaryPermissionType.Server, + PrimaryTargetId = 0, + SecondaryTarget = SecondaryPermissionType.AllModules, + SecondaryTargetName = "*", State = action.Value, - }); + }; + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); + uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; await uow.CompleteAsync().ConfigureAwait(false); } - await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL COMMANDS` from `{module.Name}` module for `{chnl}` channel.").ConfigureAwait(false); + await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL MODULES` on this server.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] - [RequireContext(ContextType.Guild)] - public async Task AllRoleCmds(IUserMessage imsg, Module module, PermissionAction action, IRole role) - { - var channel = (ITextChannel)imsg.Channel; + //[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + //[RequireContext(ContextType.Guild)] + //public async Task AllChnlCmds(IUserMessage imsg, Module module, PermissionAction action, ITextChannel chnl) + //{ + // var channel = (ITextChannel)imsg.Channel; - using (var uow = DbHandler.UnitOfWork()) - { - uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission - { - PrimaryTarget = PrimaryPermissionType.Role, - PrimaryTargetId = role.Id, - SecondaryTarget = SecondaryPermissionType.AllCommands, - SecondaryTargetName = module.Name.ToLowerInvariant(), - State = action.Value, - }); - await uow.CompleteAsync().ConfigureAwait(false); - } - await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL COMMANDS` from `{module.Name}` module for `{role}` role.").ConfigureAwait(false); - } + // using (var uow = DbHandler.UnitOfWork()) + // { + // uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Add(new Permission + // { + // PrimaryTarget = PrimaryPermissionType.Channel, + // PrimaryTargetId = chnl.Id, + // SecondaryTarget = SecondaryPermissionType.AllCommands, + // SecondaryTargetName = module.Name.ToLowerInvariant(), + // State = action.Value, + // }); + // await uow.CompleteAsync().ConfigureAwait(false); + // } + // await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL COMMANDS` from `{module.Name}` module for `{chnl}` channel.").ConfigureAwait(false); + //} - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] - [RequireContext(ContextType.Guild)] - public async Task AllUsrCmds(IUserMessage imsg, Module module, PermissionAction action, IUser user) - { - var channel = (ITextChannel)imsg.Channel; + //[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + //[RequireContext(ContextType.Guild)] + //public async Task AllRoleCmds(IUserMessage imsg, Module module, PermissionAction action, IRole role) + //{ + // var channel = (ITextChannel)imsg.Channel; - using (var uow = DbHandler.UnitOfWork()) - { - uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission - { - PrimaryTarget = PrimaryPermissionType.User, - PrimaryTargetId = user.Id, - SecondaryTarget = SecondaryPermissionType.AllCommands, - SecondaryTargetName = module.Name.ToLowerInvariant(), - State = action.Value, - }); - await uow.CompleteAsync().ConfigureAwait(false); - } - await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL COMMANDS` from `{module.Name}` module for `{user}` user.").ConfigureAwait(false); - } + // using (var uow = DbHandler.UnitOfWork()) + // { + // uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Add(new Permission + // { + // PrimaryTarget = PrimaryPermissionType.Role, + // PrimaryTargetId = role.Id, + // SecondaryTarget = SecondaryPermissionType.AllCommands, + // SecondaryTargetName = module.Name.ToLowerInvariant(), + // State = action.Value, + // }); + // await uow.CompleteAsync().ConfigureAwait(false); + // } + // await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL COMMANDS` from `{module.Name}` module for `{role}` role.").ConfigureAwait(false); + //} + + //[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + //[RequireContext(ContextType.Guild)] + //public async Task AllUsrCmds(IUserMessage imsg, Module module, PermissionAction action, IUser user) + //{ + // var channel = (ITextChannel)imsg.Channel; + + // using (var uow = DbHandler.UnitOfWork()) + // { + // uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Add(new Permission + // { + // PrimaryTarget = PrimaryPermissionType.User, + // PrimaryTargetId = user.Id, + // SecondaryTarget = SecondaryPermissionType.AllCommands, + // SecondaryTargetName = module.Name.ToLowerInvariant(), + // State = action.Value, + // }); + // await uow.CompleteAsync().ConfigureAwait(false); + // } + // await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL COMMANDS` from `{module.Name}` module for `{user}` user.").ConfigureAwait(false); + //} } } diff --git a/src/NadekoBot/Services/CommandHandler.cs b/src/NadekoBot/Services/CommandHandler.cs index c884c476..fc7b586c 100644 --- a/src/NadekoBot/Services/CommandHandler.cs +++ b/src/NadekoBot/Services/CommandHandler.cs @@ -11,6 +11,8 @@ using Discord.Commands; using NadekoBot.Services.Database; using NadekoBot.Services.Database.Models; using NadekoBot.Modules.Permissions; +using Microsoft.Data.Sqlite; +using Discord.Net; namespace NadekoBot.Services { @@ -44,41 +46,66 @@ namespace NadekoBot.Services var sw = new Stopwatch(); sw.Start(); - var t = await ExecuteCommand(usrMsg, usrMsg.Content, guild, usrMsg.Author, MultiMatchHandling.Best); - var command = t.Item1; - var result = t.Item2; - sw.Stop(); - var channel = (usrMsg.Channel as ITextChannel); - if (result.IsSuccess) + try { - CommandExecuted(this, new CommandExecutedEventArgs(usrMsg, command)); - _log.Info("Command Executed after {4}s\n\t" + - "User: {0}\n\t" + - "Server: {1}\n\t" + - "Channel: {2}\n\t" + - "Message: {3}", - usrMsg.Author + " [" + usrMsg.Author.Id + "]", // {0} - (channel == null ? "PRIVATE" : channel.Guild.Name + " [" + channel.Guild.Id + "]"), // {1} - (channel == null ? "PRIVATE" : channel.Name + " [" + channel.Id + "]"), // {2} - usrMsg.Content, // {3} - sw.Elapsed.TotalSeconds // {4} - ); + var t = await ExecuteCommand(usrMsg, usrMsg.Content, guild, usrMsg.Author, MultiMatchHandling.Best); + var command = t.Item1; + var result = t.Item2; + sw.Stop(); + var channel = (usrMsg.Channel as ITextChannel); + if (result.IsSuccess) + { + CommandExecuted(this, new CommandExecutedEventArgs(usrMsg, command)); + _log.Info("Command Executed after {4}s\n\t" + + "User: {0}\n\t" + + "Server: {1}\n\t" + + "Channel: {2}\n\t" + + "Message: {3}", + usrMsg.Author + " [" + usrMsg.Author.Id + "]", // {0} + (channel == null ? "PRIVATE" : channel.Guild.Name + " [" + channel.Guild.Id + "]"), // {1} + (channel == null ? "PRIVATE" : channel.Name + " [" + channel.Id + "]"), // {2} + usrMsg.Content, // {3} + sw.Elapsed.TotalSeconds // {4} + ); + } + else if (!result.IsSuccess && result.Error != CommandError.UnknownCommand) + { + _log.Warn("Command Errored after {5}s\n\t" + + "User: {0}\n\t" + + "Server: {1}\n\t" + + "Channel: {2}\n\t" + + "Message: {3}\n\t" + + "Error: {4}", + usrMsg.Author + " [" + usrMsg.Author.Id + "]", // {0} + (channel == null ? "PRIVATE" : channel.Guild.Name + " [" + channel.Guild.Id + "]"), // {1} + (channel == null ? "PRIVATE" : channel.Name + " [" + channel.Id + "]"), // {2} + usrMsg.Content,// {3} + result.ErrorReason, // {4} + sw.Elapsed.TotalSeconds // {5} + ); + if (guild != null && command != null && result.Error == CommandError.Exception) + { + bool verbose; + using (var uow = DbHandler.UnitOfWork()) + { + verbose = uow.GuildConfigs.For(guild.Id).VerbosePermissions; + } + if (verbose) + await msg.Channel.SendMessageAsync(":warning: " + result.ErrorReason).ConfigureAwait(false); + } + } } - else if (!result.IsSuccess && result.Error != CommandError.UnknownCommand) + catch (InvalidOperationException ex) { - _log.Warn("Command Errored after {5}s\n\t" + - "User: {0}\n\t" + - "Server: {1}\n\t" + - "Channel: {2}\n\t" + - "Message: {3}\n\t" + - "Error: {4}", - usrMsg.Author + " [" + usrMsg.Author.Id + "]", // {0} - (channel == null ? "PRIVATE" : channel.Guild.Name + " [" + channel.Guild.Id + "]"), // {1} - (channel == null ? "PRIVATE" : channel.Name + " [" + channel.Id + "]"), // {2} - usrMsg.Content,// {3} - result.ErrorReason, // {4} - sw.Elapsed.TotalSeconds // {5} - ); + Console.WriteLine(ex); + } + catch (SqliteException ex) + { + Console.WriteLine(ex.InnerException); + } + catch (HttpException ex) + { + Console.WriteLine(ex); } }); @@ -133,11 +160,14 @@ namespace NadekoBot.Services { using (var uow = DbHandler.UnitOfWork()) { - rootPerm = uow.GuildConfigs.For(guild.Id).RootPermission; + rootPerm = uow.GuildConfigs.PermissionsFor(guild.Id).RootPermission; } int index; if (!rootPerm.AsEnumerable().CheckPermissions(message, cmd, out index)) - return new Tuple(null, SearchResult.FromError(CommandError.Exception, $"Permission error. Permission number {index} (`{(index != -1 ? rootPerm.GetAt(rootPerm.Count() - index).GetCommand() : "default")}`)")); + { + var returnMsg = $"Permission number #{index} **{rootPerm.GetAt(index).GetCommand()}** is preventing this action."; + return new Tuple(cmd, SearchResult.FromError(CommandError.Exception, returnMsg)); + } } return new Tuple(commands[i], await commands[i].Execute(message, parseResult)); diff --git a/src/NadekoBot/Services/Database/Models/GuildConfig.cs b/src/NadekoBot/Services/Database/Models/GuildConfig.cs index 7ae9b0d0..8f96a284 100644 --- a/src/NadekoBot/Services/Database/Models/GuildConfig.cs +++ b/src/NadekoBot/Services/Database/Models/GuildConfig.cs @@ -43,14 +43,8 @@ namespace NadekoBot.Services.Database.Models public ulong? GenerateCurrencyChannelId { get; set; } //permissions - public Permission RootPermission { get; set; } = new Permission() - { - Next = null, - Previous = null, - PrimaryTarget = PrimaryPermissionType.Role, - PrimaryTargetId = 0, - SecondaryTarget = SecondaryPermissionType.AllModules, - SecondaryTargetName = "*", - }; + public Permission RootPermission { get; set; } + public bool VerbosePermissions { get; set; } + public string PermissionRole { get; set; } = "Nadeko"; } } diff --git a/src/NadekoBot/Services/Database/Models/Permission.cs b/src/NadekoBot/Services/Database/Models/Permission.cs index ea20f61b..aed70fa5 100644 --- a/src/NadekoBot/Services/Database/Models/Permission.cs +++ b/src/NadekoBot/Services/Database/Models/Permission.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -18,20 +19,50 @@ namespace NadekoBot.Services.Database.Models public string SecondaryTargetName { get; set; } public bool State { get; set; } + + [NotMapped] + private static Permission AllowAllPerm => new Permission() + { + PrimaryTarget = PrimaryPermissionType.Server, + PrimaryTargetId = 0, + SecondaryTarget = SecondaryPermissionType.AllModules, + SecondaryTargetName = "*", + State = true, + }; + [NotMapped] + private static Permission BlockNsfwPerm => new Permission() + { + PrimaryTarget = PrimaryPermissionType.Server, + PrimaryTargetId = 0, + SecondaryTarget = SecondaryPermissionType.Module, + SecondaryTargetName = "nsfw", + State = false, + }; + + public static Permission GetDefaultRoot() + { + var root = AllowAllPerm; + var blockNsfw = BlockNsfwPerm; + + root.Previous = blockNsfw; + blockNsfw.Next = root; + + return blockNsfw; + } } public enum PrimaryPermissionType { User, Channel, - Role + Role, + Server } public enum SecondaryPermissionType { Module, Command, - AllCommands, AllModules } } diff --git a/src/NadekoBot/Services/Database/NadekoContext.cs b/src/NadekoBot/Services/Database/NadekoContext.cs index b5ead5f0..6d71f8cc 100644 --- a/src/NadekoBot/Services/Database/NadekoContext.cs +++ b/src/NadekoBot/Services/Database/NadekoContext.cs @@ -186,6 +186,7 @@ namespace NadekoBot.Services.Database permissionEntity .HasOne(p => p.Next) .WithOne(p => p.Previous); + #endregion #region LogSettings diff --git a/src/NadekoBot/Services/Database/Repositories/IGuildConfigRepository.cs b/src/NadekoBot/Services/Database/Repositories/IGuildConfigRepository.cs index 82767a80..7303eda2 100644 --- a/src/NadekoBot/Services/Database/Repositories/IGuildConfigRepository.cs +++ b/src/NadekoBot/Services/Database/Repositories/IGuildConfigRepository.cs @@ -11,6 +11,7 @@ namespace NadekoBot.Services.Database.Repositories public interface IGuildConfigRepository : IRepository { GuildConfig For(ulong guildId); + GuildConfig PermissionsFor(ulong guildId); IEnumerable GetAllFollowedStreams(); } } diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs b/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs index 17133bf4..1066397b 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs +++ b/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs @@ -19,6 +19,10 @@ namespace NadekoBot.Services.Database.Repositories.Impl .ThenInclude(ls => ls.IgnoredChannels) .Include(gc => gc.LogSetting) .ThenInclude(ls => ls.IgnoredVoicePresenceChannelIds) + .Include(gc => gc.RootPermission) + .ThenInclude(gc => gc.Previous) + .Include(gc => gc.RootPermission) + .ThenInclude(gc => gc.Next) .ToList(); ///

@@ -29,16 +33,45 @@ namespace NadekoBot.Services.Database.Repositories.Impl public GuildConfig For(ulong guildId) { var config = _set.Include(gc => gc.FollowedStreams) - .Include(gc => gc.RootPermission) .Include(gc => gc.LogSetting) - .ThenInclude(ls=>ls.IgnoredChannels) - .FirstOrDefault(c => c.GuildId == guildId); + .ThenInclude(ls => ls.IgnoredChannels) + .Include(gc => gc.LogSetting) + .ThenInclude(ls => ls.IgnoredVoicePresenceChannelIds) + .FirstOrDefault(c => c.GuildId == guildId); if (config == null) { _set.Add((config = new GuildConfig { - GuildId = guildId + GuildId = guildId, + RootPermission = Permission.GetDefaultRoot(), + })); + _context.SaveChanges(); + } + return config; + } + + public GuildConfig PermissionsFor(ulong guildId) + { + var query = _set.Include(gc => gc.RootPermission); + + //todo this is possibly a disaster for performance + //What i could do instead is count the number of permissions in the permission table for this guild + // and make a for loop with those. + // or just select permissions for this guild and manually chain them + for (int i = 0; i < 60; i++) + { + query = query.ThenInclude(gc => gc.Next); + } + + var config = query.FirstOrDefault(c => c.GuildId == guildId); + + if (config == null) + { + _set.Add((config = new GuildConfig + { + GuildId = guildId, + RootPermission = Permission.GetDefaultRoot(), })); _context.SaveChanges(); } diff --git a/src/NadekoBot/project.json b/src/NadekoBot/project.json index a795d571..9ae6cbdd 100644 --- a/src/NadekoBot/project.json +++ b/src/NadekoBot/project.json @@ -23,7 +23,6 @@ "Microsoft.Extensions.PlatformAbstractions": "1.0.0", "Newtonsoft.Json": "9.0.1", "Microsoft.Extensions.DependencyInjection": "1.0.0", - "Discord.Net.Commands": "1.0.0-dev", "System.Resources.ResourceWriter": "4.0.0-beta-22816", "Google.Apis.YouTube.v3": "1.15.0.582", "Google.Apis.Urlshortener.v1": "1.15.0.138", @@ -35,7 +34,9 @@ "Microsoft.EntityFrameworkCore.Design": "1.0.0-preview2-final", "Microsoft.EntityFrameworkCore.Sqlite": "1.0.0", "CoreCLR-NCalc": "2.1.0", - "ImageProcessorCore": "1.0.0-alpha1045" + "ImageProcessorCore": "1.0.0-alpha1045", + "Discord.Net.Commands": "1.0.0-beta-*", + "Discord.Net": "1.0.0-beta-*" }, "tools": { "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final" diff --git a/src/NadekoBot/project.lock.json b/src/NadekoBot/project.lock.json index 9c9ca106..76da98a3 100644 --- a/src/NadekoBot/project.lock.json +++ b/src/NadekoBot/project.lock.json @@ -9096,7 +9096,8 @@ "projectFileDependencyGroups": { "": [ "CoreCLR-NCalc >= 2.1.0", - "Discord.Net.Commands >= 1.0.0-dev", + "Discord.Net >= 1.0.0-beta-*", + "Discord.Net.Commands >= 1.0.0-beta-*", "Google.Apis.Customsearch.v1 >= 1.16.0.466", "Google.Apis.Urlshortener.v1 >= 1.15.0.138", "Google.Apis.YouTube.v3 >= 1.15.0.582", From 81753255b98769825ef489a5a87691147ee4dd45 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Fri, 30 Sep 2016 04:20:09 +0200 Subject: [PATCH 08/74] Woops, didn't push correctly. Also added owner only commands now. --- .../Attributes/OwnerOnlyAttribute.cs | 21 +- .../Modules/Administration/Administration.cs | 304 +++-- .../Commands/CrossServerTextChannel.cs | 31 +- .../Administration/Commands/LogCommand.cs | 3 + .../Commands/PlayingRotateCommands.cs | 4 + src/NadekoBot/Modules/Gambling/Gambling.cs | 44 +- .../Games/Commands/SpeedTypingCommands.cs | 33 +- src/NadekoBot/Modules/Help/Help.cs | 1 + src/NadekoBot/Modules/Music/Music.cs | 2 + .../Modules/Permissions/Permissions.cs | 42 +- .../Modules/Utility/Commands/Remind.cs | 28 +- src/NadekoBot/NadekoBot.cs | 1 + src/NadekoBot/Services/CommandHandler.cs | 34 +- src/NadekoBot/Services/CurrencyHandler.cs | 15 +- src/NadekoBot/TypeReaders/GuildTypeReader.cs | 26 + src/tests/Tests.cs | 2 +- .../netcoreapp1.0/Discord.Net.Commands.dll | Bin 65024 -> 0 bytes .../netcoreapp1.0/Discord.Net.Commands.pdb | Bin 148992 -> 0 bytes .../netcoreapp1.0/Discord.Net.Commands.xml | 26 - .../bin/Debug/netcoreapp1.0/Discord.Net.dll | Bin 719360 -> 0 bytes .../bin/Debug/netcoreapp1.0/Discord.Net.pdb | Bin 1555968 -> 0 bytes .../bin/Debug/netcoreapp1.0/Discord.Net.xml | 1129 ----------------- .../bin/Debug/netcoreapp1.0/NadekoBot.dll | Bin 998400 -> 0 bytes .../bin/Debug/netcoreapp1.0/NadekoBot.pdb | Bin 1447424 -> 0 bytes .../bin/Debug/netcoreapp1.0/tests.deps.json | 1101 ---------------- src/tests/bin/Debug/netcoreapp1.0/tests.dll | Bin 6144 -> 0 bytes src/tests/bin/Debug/netcoreapp1.0/tests.pdb | Bin 1388 -> 0 bytes .../tests.runtimeconfig.dev.json | 7 - .../netcoreapp1.0/tests.runtimeconfig.json | 8 - src/tests/project.lock.json | 3 +- 30 files changed, 359 insertions(+), 2506 deletions(-) create mode 100644 src/NadekoBot/TypeReaders/GuildTypeReader.cs delete mode 100644 src/tests/bin/Debug/netcoreapp1.0/Discord.Net.Commands.dll delete mode 100644 src/tests/bin/Debug/netcoreapp1.0/Discord.Net.Commands.pdb delete mode 100644 src/tests/bin/Debug/netcoreapp1.0/Discord.Net.Commands.xml delete mode 100644 src/tests/bin/Debug/netcoreapp1.0/Discord.Net.dll delete mode 100644 src/tests/bin/Debug/netcoreapp1.0/Discord.Net.pdb delete mode 100644 src/tests/bin/Debug/netcoreapp1.0/Discord.Net.xml delete mode 100644 src/tests/bin/Debug/netcoreapp1.0/NadekoBot.dll delete mode 100644 src/tests/bin/Debug/netcoreapp1.0/NadekoBot.pdb delete mode 100644 src/tests/bin/Debug/netcoreapp1.0/tests.deps.json delete mode 100644 src/tests/bin/Debug/netcoreapp1.0/tests.dll delete mode 100644 src/tests/bin/Debug/netcoreapp1.0/tests.pdb delete mode 100644 src/tests/bin/Debug/netcoreapp1.0/tests.runtimeconfig.dev.json delete mode 100644 src/tests/bin/Debug/netcoreapp1.0/tests.runtimeconfig.json diff --git a/src/NadekoBot/Attributes/OwnerOnlyAttribute.cs b/src/NadekoBot/Attributes/OwnerOnlyAttribute.cs index 8236f1d1..f04b6ef2 100644 --- a/src/NadekoBot/Attributes/OwnerOnlyAttribute.cs +++ b/src/NadekoBot/Attributes/OwnerOnlyAttribute.cs @@ -1,11 +1,12 @@ -//using System.Threading.Tasks; -//using Discord.Commands; -//using Discord; +using System.Threading.Tasks; +using Discord.Commands; +using Discord; -//namespace NadekoBot.Attributes { -// public class OwnerOnlyAttribute : PreconditionAttribute -// { -// public override Task CheckPermissions(IUserMessage context, Command executingCommand, object moduleInstance) => -// Task.FromResult((NadekoBot.Credentials.IsOwner(context.Author) ? PreconditionResult.FromSuccess() : PreconditionResult.FromError("Not owner"))); -// } -//} \ No newline at end of file +namespace NadekoBot.Attributes +{ + public class OwnerOnlyAttribute : PreconditionAttribute + { + public override Task CheckPermissions(IUserMessage context, Command executingCommand, object moduleInstance) => + Task.FromResult((NadekoBot.Credentials.IsOwner(context.Author) ? PreconditionResult.FromSuccess() : PreconditionResult.FromError("Not owner"))); + } +} \ No newline at end of file diff --git a/src/NadekoBot/Modules/Administration/Administration.cs b/src/NadekoBot/Modules/Administration/Administration.cs index 623ec387..8541f8f2 100644 --- a/src/NadekoBot/Modules/Administration/Administration.cs +++ b/src/NadekoBot/Modules/Administration/Administration.cs @@ -13,6 +13,9 @@ using System.Text.RegularExpressions; using Discord.WebSocket; using NadekoBot.Services.Database; using NadekoBot.Services.Database.Models; +using System.Net.Http; +using ImageProcessorCore; +using System.IO; namespace NadekoBot.Modules.Administration { @@ -46,19 +49,21 @@ namespace NadekoBot.Modules.Administration _log.Warn(ex, "Delmsgoncmd errored..."); } } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + [OwnerOnly] + public async Task Restart(IUserMessage umsg) + { + var channel = (ITextChannel)umsg.Channel; - ////todo owner only - //[LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] - //[RequireContext(ContextType.Guild)] - //public async Task Restart(IUserMessage umsg) - //{ - // var channel = (ITextChannel)umsg.Channel; - - // await channel.SendMessageAsync("`Restarting in 2 seconds...`"); - // await Task.Delay(2000); - // System.Diagnostics.Process.Start(System.Reflection.Assembly.GetEntryAssembly().Location); - // Environment.Exit(0); - //} + await channel.SendMessageAsync("`Restarting in 2 seconds...`"); + await Task.Delay(2000); + System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo { + Arguments = "dotnet " + System.Reflection.Assembly.GetEntryAssembly().Location + }); + Environment.Exit(0); + } [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] @@ -205,7 +210,7 @@ namespace NadekoBot.Modules.Administration var green = Convert.ToByte(rgb ? int.Parse(args[2]) : Convert.ToInt32(arg1.Substring(2, 2), 16)); var blue = Convert.ToByte(rgb ? int.Parse(args[3]) : Convert.ToInt32(arg1.Substring(4, 2), 16)); - await role.ModifyAsync(r => r.Color = new Color(red, green, blue).RawValue).ConfigureAwait(false); + await role.ModifyAsync(r => r.Color = new Discord.Color(red, green, blue).RawValue).ConfigureAwait(false); await channel.SendMessageAsync($"Role {role.Name}'s color has been changed.").ConfigureAwait(false); } catch (Exception) @@ -455,7 +460,7 @@ namespace NadekoBot.Modules.Administration { var channel = (ITextChannel)umsg.Channel; - var user = await channel.Guild.GetCurrentUserAsync(); + var user = channel.Guild.GetCurrentUser(); var enumerable = (await umsg.Channel.GetMessagesAsync()).Where(x => x.Author.Id == user.Id); await umsg.Channel.DeleteMessagesAsync(enumerable); @@ -483,6 +488,7 @@ namespace NadekoBot.Modules.Administration //prune @user [x] [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] + [RequirePermission(ChannelPermission.ManageMessages)] public async Task Prune(IUserMessage msg, IGuildUser user, int count = 100) { var channel = (ITextChannel)msg.Channel; @@ -490,149 +496,163 @@ namespace NadekoBot.Modules.Administration var enumerable = (await msg.Channel.GetMessagesAsync(limit: limit)).Where(m => m.Author == user); await msg.Channel.DeleteMessagesAsync(enumerable); } - ////todo owner only - //[LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] - //[RequireContext(ContextType.Guild)] - //public async Task Die(IUserMessage umsg) - //{ - // var channel = (ITextChannel)umsg.Channel; - // await channel.SendMessageAsync("`Shutting down.`").ConfigureAwait(false); - // await Task.Delay(2000).ConfigureAwait(false); - // Environment.Exit(0); - //} + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + [OwnerOnly] + public async Task Die(IUserMessage umsg) + { + var channel = (ITextChannel)umsg.Channel; - ////todo owner only - //[LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] - //[RequireContext(ContextType.Guild)] - //public async Task Setname(IUserMessage umsg, [Remainder] string newName = null) - //{ - // var channel = (ITextChannel)umsg.Channel; + await channel.SendMessageAsync("`Shutting down.`").ConfigureAwait(false); + await Task.Delay(2000).ConfigureAwait(false); + Environment.Exit(0); + } - //} + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + [OwnerOnly] + public async Task Setname(IUserMessage umsg, [Remainder] string newName) + { + var channel = (ITextChannel)umsg.Channel; + if (string.IsNullOrWhiteSpace(newName)) + return; - ////todo owner only - //[LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] - //[RequireContext(ContextType.Guild)] - //public async Task NewAvatar(IUserMessage umsg, [Remainder] string img = null) - //{ - // var channel = (ITextChannel)umsg.Channel; + await NadekoBot.Client.GetCurrentUser().ModifyAsync(u => u.Username = newName).ConfigureAwait(false); - // if (string.IsNullOrWhiteSpace(img)) - // return; - // // Gather user provided URL. - // var avatarAddress = img; - // var imageStream = await SearchHelper.GetResponseStreamAsync(avatarAddress).ConfigureAwait(false); - // var image = System.Drawing.Image.FromStream(imageStream); - // await client.CurrentUser.Edit("", avatar: image.ToStream()).ConfigureAwait(false); + await channel.SendMessageAsync($"Successfully changed name to {newName}").ConfigureAwait(false); + } - // // Send confirm. - // await channel.SendMessageAsync("New avatar set.").ConfigureAwait(false); - //} + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + [OwnerOnly] + public async Task NewAvatar(IUserMessage umsg, [Remainder] string img = null) + { + var channel = (ITextChannel)umsg.Channel; - ////todo owner only - //[LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] - //[RequireContext(ContextType.Guild)] - //public async Task SetGame(IUserMessage umsg, [Remainder] string game = null) - //{ - // var channel = (ITextChannel)umsg.Channel; + if (string.IsNullOrWhiteSpace(img)) + return; - // game = game ?? ""; + using (var http = new HttpClient()) + { + using (var sr = await http.GetStreamAsync(img)) + { + var imgStream = new MemoryStream(); + await sr.CopyToAsync(imgStream); + imgStream.Position = 0; - // client.SetGame(set_game); - //} + await NadekoBot.Client.GetCurrentUser().ModifyAsync(u => u.Avatar = imgStream).ConfigureAwait(false); + } + } - ////todo owner only - //[LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] - //[RequireContext(ContextType.Guild)] - //public async Task Send(IUserMessage umsg, string where, [Remainder] string msg = null) - //{ - // var channel = (ITextChannel)umsg.Channel; + await channel.SendMessageAsync("New avatar set.").ConfigureAwait(false); + } - // if (string.IsNullOrWhiteSpace(msg)) - // return; + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + [OwnerOnly] + public async Task SetGame(IUserMessage umsg, [Remainder] string game = null) + { + var channel = (ITextChannel)umsg.Channel; - // var ids = where.Split('|'); - // if (ids.Length != 2) - // return; - // var sid = ulong.Parse(ids[0]); - // var server = NadekoBot.Client.Servers.Where(s => s.Id == sid).FirstOrDefault(); + game = game ?? ""; - // if (server == null) - // return; + await NadekoBot.Client.GetCurrentUser().ModifyStatusAsync(u => u.Game = new Game(game)).ConfigureAwait(false); - // if (ids[1].ToUpperInvariant().StartsWith("C:")) - // { - // var cid = ulong.Parse(ids[1].Substring(2)); - // var channel = server.TextChannels.Where(c => c.Id == cid).FirstOrDefault(); - // if (channel == null) - // { - // return; - // } - // await channel.SendMessageAsync(msg); - // } - // else if (ids[1].ToUpperInvariant().StartsWith("U:")) - // { - // var uid = ulong.Parse(ids[1].Substring(2)); - // var user = server.Users.Where(u => u.Id == uid).FirstOrDefault(); - // if (user == null) - // { - // return; - // } - // await user.SendMessageAsync(msg); - // } - // else - // { - // await channel.SendMessageAsync("`Invalid format.`"); - // } - //} + await channel.SendMessageAsync("New game set.").ConfigureAwait(false); + } - ////todo owner only - //[LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] - //[RequireContext(ContextType.Guild)] - //public async Task Announce(IUserMessage umsg, [Remainder] string message) - //{ - // var channel = (ITextChannel)umsg.Channel; + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + [OwnerOnly] + public async Task Send(IUserMessage umsg, string where, [Remainder] string msg = null) + { + var channel = (ITextChannel)umsg.Channel; - // foreach (var ch in (await _client.GetGuildsAsync().ConfigureAwait(false)).Select(async g => await g.GetDefaultChannelAsync().ConfigureAwait(false))) - // { - // await channel.SendMessageAsync(message).ConfigureAwait(false); - // } + if (string.IsNullOrWhiteSpace(msg)) + return; - // await channel.SendMessageAsync(":ok:").ConfigureAwait(false); - //} + var ids = where.Split('|'); + if (ids.Length != 2) + return; + var sid = ulong.Parse(ids[0]); + var server = NadekoBot.Client.GetGuilds().Where(s => s.Id == sid).FirstOrDefault(); - ////todo owner only - //[LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] - //[RequireContext(ContextType.Guild)] - //public async Task SaveChat(IUserMessage umsg, int cnt) - //{ - // var channel = (ITextChannel)umsg.Channel; + if (server == null) + return; - // ulong? lastmsgId = null; - // var sb = new StringBuilder(); - // var msgs = new List(cnt); - // while (cnt > 0) - // { - // var dlcnt = cnt < 100 ? cnt : 100; - // IReadOnlyCollection dledMsgs; - // if (lastmsgId == null) - // dledMsgs = await umsg.Channel.GetMessagesAsync(cnt).ConfigureAwait(false); - // else - // dledMsgs = await umsg.Channel.GetMessagesAsync(lastmsgId.Value, Direction.Before, dlcnt); + if (ids[1].ToUpperInvariant().StartsWith("C:")) + { + var cid = ulong.Parse(ids[1].Substring(2)); + var ch = server.GetTextChannels().Where(c => c.Id == cid).FirstOrDefault(); + if (ch == null) + { + return; + } + await ch.SendMessageAsync(msg); + } + else if (ids[1].ToUpperInvariant().StartsWith("U:")) + { + var uid = ulong.Parse(ids[1].Substring(2)); + var user = server.GetUsers().Where(u => u.Id == uid).FirstOrDefault(); + if (user == null) + { + return; + } + await user.SendMessageAsync(msg); + } + else + { + await channel.SendMessageAsync("`Invalid format.`"); + } + } - // if (!dledMsgs.Any()) - // break; + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + [OwnerOnly] + public async Task Announce(IUserMessage umsg, [Remainder] string message) + { + var channel = (ITextChannel)umsg.Channel; - // msgs.AddRange(dledMsgs); - // lastmsgId = msgs[msgs.Count - 1].Id; - // cnt -= 100; - // } - // var title = $"Chatlog-{channel.Guild.Name}/#{channel.Name}-{DateTime.Now}.txt"; - // await (umsg.Author as IGuildUser).SendFileAsync( - // await JsonConvert.SerializeObject(new { Messages = msgs.Select(s => s.ToString()) }, Formatting.Indented).ToStream().ConfigureAwait(false), - // title, title).ConfigureAwait(false); - //} + foreach (var ch in (await _client.GetGuildsAsync().ConfigureAwait(false)).Select(async g => await g.GetDefaultChannelAsync().ConfigureAwait(false))) + { + await channel.SendMessageAsync(message).ConfigureAwait(false); + } + + await channel.SendMessageAsync(":ok:").ConfigureAwait(false); + } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + [OwnerOnly] + public async Task SaveChat(IUserMessage umsg, int cnt) + { + var channel = (ITextChannel)umsg.Channel; + + ulong? lastmsgId = null; + var sb = new StringBuilder(); + var msgs = new List(cnt); + while (cnt > 0) + { + var dlcnt = cnt < 100 ? cnt : 100; + IReadOnlyCollection dledMsgs; + if (lastmsgId == null) + dledMsgs = await umsg.Channel.GetMessagesAsync(cnt).ConfigureAwait(false); + else + dledMsgs = await umsg.Channel.GetMessagesAsync(lastmsgId.Value, Direction.Before, dlcnt); + + if (!dledMsgs.Any()) + break; + + msgs.AddRange(dledMsgs); + lastmsgId = msgs[msgs.Count - 1].Id; + cnt -= 100; + } + var title = $"Chatlog-{channel.Guild.Name}/#{channel.Name}-{DateTime.Now}.txt"; + await (umsg.Author as IGuildUser).SendFileAsync( + await JsonConvert.SerializeObject(new { Messages = msgs.Select(s => s.ToString()) }, Formatting.Indented).ToStream().ConfigureAwait(false), + title, title).ConfigureAwait(false); + } [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] @@ -691,5 +711,17 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync($"Successfuly added a new donator. Total donated amount from this user: {don.Amount} 👑").ConfigureAwait(false); } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + [OwnerOnly] + public async Task Leave(IUserMessage imsg, [Remainder] IGuild guild) + { + var channel = (ITextChannel)imsg.Channel; + + await guild.LeaveAsync(); + + await channel.SendMessageAsync($"Left guild **{guild.Name}**\nId: `{guild.Id}`."); + } } } diff --git a/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs b/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs index 5012a644..693fbe39 100644 --- a/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs +++ b/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs @@ -3,6 +3,7 @@ using Discord.Commands; using Discord.WebSocket; using NadekoBot.Attributes; using NadekoBot.Extensions; +using NadekoBot.Services; using System; using System.Collections.Concurrent; using System.Collections.Generic; @@ -52,23 +53,23 @@ namespace NadekoBot.Modules.Administration private string GetText(IGuild server, ITextChannel channel, IGuildUser user, IUserMessage message) => $"**{server.Name} | {channel.Name}** `{user.Username}`: " + message.Content; - + public static readonly ConcurrentDictionary> Subscribers = new ConcurrentDictionary>(); - ////todo owner only - //[LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] - //[RequireContext(ContextType.Guild)] - //public async Task Scsc(IUserMessage msg) - //{ - // var channel = (ITextChannel)msg.Channel; - // var token = new NadekoRandom().Next(); - // var set = new HashSet(); - // if (Subscribers.TryAdd(token, set)) - // { - // set.Add(channel); - // await ((IGuildUser)msg.Author).SendMessageAsync("This is your CSC token:" + token.ToString()).ConfigureAwait(false); - // } - //} + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + [OwnerOnly] + public async Task Scsc(IUserMessage msg) + { + var channel = (ITextChannel)msg.Channel; + var token = new NadekoRandom().Next(); + var set = new HashSet(); + if (Subscribers.TryAdd(token, set)) + { + set.Add(channel); + await ((IGuildUser)msg.Author).SendMessageAsync("This is your CSC token:" + token.ToString()).ConfigureAwait(false); + } + } [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] diff --git a/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs b/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs index d9fd3d58..d985da63 100644 --- a/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs +++ b/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs @@ -484,6 +484,7 @@ namespace NadekoBot.Modules.Administration [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] + [OwnerOnly] public async Task LogServer(IUserMessage msg) { var channel = (ITextChannel)msg.Channel; @@ -506,6 +507,7 @@ namespace NadekoBot.Modules.Administration [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] + [OwnerOnly] public async Task LogIgnore(IUserMessage imsg) { var channel = (ITextChannel)imsg.Channel; @@ -529,6 +531,7 @@ namespace NadekoBot.Modules.Administration [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] + [OwnerOnly] public async Task LogAdd(IUserMessage msg, [Remainder] string eventName) { var channel = (ITextChannel)msg.Channel; diff --git a/src/NadekoBot/Modules/Administration/Commands/PlayingRotateCommands.cs b/src/NadekoBot/Modules/Administration/Commands/PlayingRotateCommands.cs index 3476b258..7bc44758 100644 --- a/src/NadekoBot/Modules/Administration/Commands/PlayingRotateCommands.cs +++ b/src/NadekoBot/Modules/Administration/Commands/PlayingRotateCommands.cs @@ -88,6 +88,7 @@ namespace NadekoBot.Modules.Administration [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] + [OwnerOnly] public async Task RotatePlaying(IUserMessage umsg) { var channel = (ITextChannel)umsg.Channel; @@ -108,6 +109,7 @@ namespace NadekoBot.Modules.Administration [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] + [OwnerOnly] public async Task AddPlaying(IUserMessage umsg, [Remainder] string status) { var channel = (ITextChannel)umsg.Channel; @@ -124,6 +126,7 @@ namespace NadekoBot.Modules.Administration [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] + [OwnerOnly] public async Task ListPlaying(IUserMessage umsg) { var channel = (ITextChannel)umsg.Channel; @@ -146,6 +149,7 @@ namespace NadekoBot.Modules.Administration [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] + [OwnerOnly] public async Task RemovePlaying(IUserMessage umsg, int index) { var channel = (ITextChannel)umsg.Channel; diff --git a/src/NadekoBot/Modules/Gambling/Gambling.cs b/src/NadekoBot/Modules/Gambling/Gambling.cs index df318cfd..216b5df0 100644 --- a/src/NadekoBot/Modules/Gambling/Gambling.cs +++ b/src/NadekoBot/Modules/Gambling/Gambling.cs @@ -82,14 +82,15 @@ namespace NadekoBot.Modules.Gambling await channel.SendMessageAsync($"{umsg.Author.Mention} successfully sent {amount} {Gambling.CurrencyPluralName}s to {receiver.Mention}!").ConfigureAwait(false); } - //todo owner only [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] + [OwnerOnly] public Task Award(IUserMessage umsg, long amount, [Remainder] IGuildUser usr) => Award(umsg, amount, usr.Id); [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] + [OwnerOnly] public async Task Award(IUserMessage umsg, long amount, [Remainder] ulong usrId) { var channel = (ITextChannel)umsg.Channel; @@ -101,26 +102,35 @@ namespace NadekoBot.Modules.Gambling await channel.SendMessageAsync($"{umsg.Author.Mention} successfully awarded {amount} {Gambling.CurrencyName}s to <@{usrId}>!").ConfigureAwait(false); } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + [OwnerOnly] + public async Task Take(IUserMessage umsg, long amount, [Remainder] IGuildUser user) + { + var channel = (ITextChannel)umsg.Channel; + if (amount <= 0) + return; - ////todo owner only - //[LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] - //[RequireContext(ContextType.Guild)] - //public Task Take(IUserMessage umsg, long amount, [Remainder] IGuildUser user) => - // Take(umsg, amount, user.Id); + await CurrencyHandler.RemoveCurrencyAsync(user, $"Taken by bot owner.({umsg.Author.Username}/{umsg.Author.Id})", amount, true).ConfigureAwait(false); - //todo owner only - //[LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] - //[RequireContext(ContextType.Guild)] - //public async Task Take(IUserMessage umsg, long amount, [Remainder] ulong usrId) - //{ - // var channel = (ITextChannel)umsg.Channel; - // if (amount <= 0) - // return; + await channel.SendMessageAsync($"{umsg.Author.Mention} successfully took {amount} {Gambling.CurrencyName}s from {user}!").ConfigureAwait(false); + } - // await CurrencyHandler.RemoveFlowers(usrId, $"Taken by bot owner.({umsg.Author.Username}/{umsg.Author.Id})", (int)amount).ConfigureAwait(false); - // await channel.SendMessageAsync($"{umsg.Author.Mention} successfully took {amount} {Gambling.CurrencyName}s from <@{usrId}>!").ConfigureAwait(false); - //} + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + [OwnerOnly] + public async Task Take(IUserMessage umsg, long amount, [Remainder] ulong usrId) + { + var channel = (ITextChannel)umsg.Channel; + if (amount <= 0) + return; + + await CurrencyHandler.RemoveCurrencyAsync(usrId, $"Taken by bot owner.({umsg.Author.Username}/{umsg.Author.Id})", amount).ConfigureAwait(false); + + await channel.SendMessageAsync($"{umsg.Author.Mention} successfully took {amount} {Gambling.CurrencyName}s from <@{usrId}>!").ConfigureAwait(false); + } [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] diff --git a/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs b/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs index b2b05d19..6e564b3c 100644 --- a/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs @@ -174,24 +174,25 @@ namespace NadekoBot.Modules.Games await channel.SendMessageAsync("No contest to stop on this channel.").ConfigureAwait(false); } - ////todo owner only - //[LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] - //[RequireContext(ContextType.Guild)] - //public async Task Typeadd(IUserMessage imsg, [Remainder] string text) - //{ - // var channel = (ITextChannel)imsg.Channel; + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + [OwnerOnly] + public async Task Typeadd(IUserMessage imsg, [Remainder] string text) + { + var channel = (ITextChannel)imsg.Channel; - // using (var uow = DbHandler.UnitOfWork()) - // { - // uow.TypingArticles.Add(new Services.Database.Models.TypingArticle - // { - // Author = imsg.Author.Username, - // Text = text - // }); - // } + using (var uow = DbHandler.UnitOfWork()) + { + uow.TypingArticles.Add(new Services.Database.Models.TypingArticle + { + Author = imsg.Author.Username, + Text = text + }); + } - // await channel.SendMessageAsync("Added new article for typing game.").ConfigureAwait(false); - //} + await channel.SendMessageAsync("Added new article for typing game.").ConfigureAwait(false); + } } } } \ No newline at end of file diff --git a/src/NadekoBot/Modules/Help/Help.cs b/src/NadekoBot/Modules/Help/Help.cs index 40775a4e..4a36bd43 100644 --- a/src/NadekoBot/Modules/Help/Help.cs +++ b/src/NadekoBot/Modules/Help/Help.cs @@ -98,6 +98,7 @@ namespace NadekoBot.Modules.Help [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] + [OwnerOnly] public async Task Hgit(IUserMessage umsg) { var helpstr = new StringBuilder(); diff --git a/src/NadekoBot/Modules/Music/Music.cs b/src/NadekoBot/Modules/Music/Music.cs index db9b285f..b9ad5fd6 100644 --- a/src/NadekoBot/Modules/Music/Music.cs +++ b/src/NadekoBot/Modules/Music/Music.cs @@ -334,6 +334,7 @@ namespace NadekoBot.Modules.Music [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] + [OwnerOnly] public async Task LocalPl(IUserMessage umsg, [Remainder] string directory) { var channel = (ITextChannel)umsg.Channel; @@ -381,6 +382,7 @@ namespace NadekoBot.Modules.Music [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] + [OwnerOnly] public async Task Local(IUserMessage umsg, [Remainder] string path) { var channel = (ITextChannel)umsg.Channel; diff --git a/src/NadekoBot/Modules/Permissions/Permissions.cs b/src/NadekoBot/Modules/Permissions/Permissions.cs index b7648c80..17227d3a 100644 --- a/src/NadekoBot/Modules/Permissions/Permissions.cs +++ b/src/NadekoBot/Modules/Permissions/Permissions.cs @@ -37,6 +37,28 @@ namespace NadekoBot.Modules.Permissions await channel.SendMessageAsync("I will " + (action.Value ? "now" : "no longer") + " show permission warnings.").ConfigureAwait(false); } + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task PermRole(IUserMessage msg, [Remainder] IRole role = null) + { + var channel = (ITextChannel)msg.Channel; + using (var uow = DbHandler.UnitOfWork()) + { + var config = uow.GuildConfigs.For(channel.Guild.Id); + if (role == null) + { + await channel.SendMessageAsync($"Current permission role is **{config.PermissionRole}**.").ConfigureAwait(false); + return; + } + else { + config.PermissionRole = role.Name.Trim(); + await uow.CompleteAsync().ConfigureAwait(false); + } + } + + await channel.SendMessageAsync($"Users now require **{role.Name}** role in order to edit permissions.").ConfigureAwait(false); + } + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task ListPerms(IUserMessage msg) @@ -186,7 +208,7 @@ namespace NadekoBot.Modules.Permissions [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] - public async Task UsrCmd(IUserMessage imsg, Command command, PermissionAction action, IGuildUser user) + public async Task UsrCmd(IUserMessage imsg, Command command, PermissionAction action, [Remainder] IGuildUser user) { var channel = (ITextChannel)imsg.Channel; @@ -209,7 +231,7 @@ namespace NadekoBot.Modules.Permissions [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] - public async Task UsrMdl(IUserMessage imsg, Module module, PermissionAction action, IGuildUser user) + public async Task UsrMdl(IUserMessage imsg, Module module, PermissionAction action, [Remainder] IGuildUser user) { var channel = (ITextChannel)imsg.Channel; @@ -232,7 +254,7 @@ namespace NadekoBot.Modules.Permissions [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] - public async Task RoleCmd(IUserMessage imsg, Command command, PermissionAction action, IRole role) + public async Task RoleCmd(IUserMessage imsg, Command command, PermissionAction action, [Remainder] IRole role) { var channel = (ITextChannel)imsg.Channel; @@ -255,7 +277,7 @@ namespace NadekoBot.Modules.Permissions [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] - public async Task RoleMdl(IUserMessage imsg, Module module, PermissionAction action, IRole role) + public async Task RoleMdl(IUserMessage imsg, Module module, PermissionAction action, [Remainder] IRole role) { var channel = (ITextChannel)imsg.Channel; @@ -278,7 +300,7 @@ namespace NadekoBot.Modules.Permissions [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] - public async Task ChnlCmd(IUserMessage imsg, Command command, PermissionAction action, ITextChannel chnl) + public async Task ChnlCmd(IUserMessage imsg, Command command, PermissionAction action, [Remainder] ITextChannel chnl) { var channel = (ITextChannel)imsg.Channel; try @@ -306,7 +328,7 @@ namespace NadekoBot.Modules.Permissions [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] - public async Task ChnlMdl(IUserMessage imsg, Module module, PermissionAction action, ITextChannel chnl) + public async Task ChnlMdl(IUserMessage imsg, Module module, PermissionAction action, [Remainder] ITextChannel chnl) { var channel = (ITextChannel)imsg.Channel; @@ -329,7 +351,7 @@ namespace NadekoBot.Modules.Permissions [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] - public async Task AllChnlMdls(IUserMessage imsg, PermissionAction action, ITextChannel chnl) + public async Task AllChnlMdls(IUserMessage imsg, PermissionAction action, [Remainder] ITextChannel chnl) { var channel = (ITextChannel)imsg.Channel; @@ -352,7 +374,7 @@ namespace NadekoBot.Modules.Permissions [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] - public async Task AllRoleMdls(IUserMessage imsg, PermissionAction action, IRole role) + public async Task AllRoleMdls(IUserMessage imsg, PermissionAction action, [Remainder] IRole role) { var channel = (ITextChannel)imsg.Channel; @@ -375,7 +397,7 @@ namespace NadekoBot.Modules.Permissions [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] - public async Task AllUsrMdls(IUserMessage imsg, PermissionAction action, IUser user) + public async Task AllUsrMdls(IUserMessage imsg, PermissionAction action, [Remainder] IUser user) { var channel = (ITextChannel)imsg.Channel; @@ -398,7 +420,7 @@ namespace NadekoBot.Modules.Permissions [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] - public async Task AllSrvrMdls(IUserMessage imsg, PermissionAction action, IUser user) + public async Task AllSrvrMdls(IUserMessage imsg, PermissionAction action, [Remainder] IUser user) { var channel = (ITextChannel)imsg.Channel; diff --git a/src/NadekoBot/Modules/Utility/Commands/Remind.cs b/src/NadekoBot/Modules/Utility/Commands/Remind.cs index 2ecc2140..57759952 100644 --- a/src/NadekoBot/Modules/Utility/Commands/Remind.cs +++ b/src/NadekoBot/Modules/Utility/Commands/Remind.cs @@ -184,21 +184,23 @@ namespace NadekoBot.Modules.Utility await StartReminder(rem); } - ////todo owner only - //[LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] - //[RequireContext(ContextType.Guild)] - //public async Task RemindTemplate(IUserMessage umsg, [Remainder] string arg) - //{ - // var channel = (ITextChannel)umsg.Channel; + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + [OwnerOnly] + public async Task RemindTemplate(IUserMessage umsg, [Remainder] string arg) + { + var channel = (ITextChannel)umsg.Channel; + if (string.IsNullOrWhiteSpace(arg)) + return; - // arg = arg?.Trim(); - // if (string.IsNullOrWhiteSpace(arg)) - // return; - - // NadekoBot.Config.RemindMessageFormat = arg; - // await channel.SendMessageAsync("`New remind message set.`"); - //} + using (var uow = DbHandler.UnitOfWork()) + { + uow.BotConfig.GetOrCreate().RemindMessageFormat = arg.Trim(); + await uow.CompleteAsync().ConfigureAwait(false); + } + await channel.SendMessageAsync("`New remind message set.`"); + } } } } \ No newline at end of file diff --git a/src/NadekoBot/NadekoBot.cs b/src/NadekoBot/NadekoBot.cs index d4e4d904..63413e9b 100644 --- a/src/NadekoBot/NadekoBot.cs +++ b/src/NadekoBot/NadekoBot.cs @@ -70,6 +70,7 @@ namespace NadekoBot CommandService.AddTypeReader(new PermissionActionTypeReader()); CommandService.AddTypeReader(new CommandTypeReader()); CommandService.AddTypeReader(new ModuleTypeReader()); + CommandService.AddTypeReader(new GuildTypeReader()); //connect await Client.LoginAsync(TokenType.Bot, Credentials.Token).ConfigureAwait(false); diff --git a/src/NadekoBot/Services/CommandHandler.cs b/src/NadekoBot/Services/CommandHandler.cs index fc7b586c..01c18b59 100644 --- a/src/NadekoBot/Services/CommandHandler.cs +++ b/src/NadekoBot/Services/CommandHandler.cs @@ -48,7 +48,18 @@ namespace NadekoBot.Services try { - var t = await ExecuteCommand(usrMsg, usrMsg.Content, guild, usrMsg.Author, MultiMatchHandling.Best); + bool verbose; + Permission rootPerm; + string permRole; + using (var uow = DbHandler.UnitOfWork()) + { + var config = uow.GuildConfigs.PermissionsFor(guild.Id); + verbose = config.VerbosePermissions; + rootPerm = config.RootPermission; + permRole = config.PermissionRole.Trim().ToLowerInvariant(); + } + + var t = await ExecuteCommand(usrMsg, usrMsg.Content, guild, usrMsg.Author, rootPerm, permRole, MultiMatchHandling.Best); var command = t.Item1; var result = t.Item2; sw.Stop(); @@ -85,11 +96,6 @@ namespace NadekoBot.Services ); if (guild != null && command != null && result.Error == CommandError.Exception) { - bool verbose; - using (var uow = DbHandler.UnitOfWork()) - { - verbose = uow.GuildConfigs.For(guild.Id).VerbosePermissions; - } if (verbose) await msg.Channel.SendMessageAsync(":warning: " + result.ErrorReason).ConfigureAwait(false); } @@ -112,7 +118,7 @@ namespace NadekoBot.Services return Task.CompletedTask; } - public async Task> ExecuteCommand(IUserMessage message, string input, IGuild guild, IUser user, MultiMatchHandling multiMatchHandling = MultiMatchHandling.Best) { + public async Task> ExecuteCommand(IUserMessage message, string input, IGuild guild, IUser user, Permission rootPerm, string permRole, MultiMatchHandling multiMatchHandling = MultiMatchHandling.Best) { var searchResult = _commandService.Search(message, input); if (!searchResult.IsSuccess) return new Tuple(null, searchResult); @@ -154,20 +160,24 @@ namespace NadekoBot.Services } } var cmd = commands[i]; - Permission rootPerm; //check permissions if (guild != null) { - using (var uow = DbHandler.UnitOfWork()) - { - rootPerm = uow.GuildConfigs.PermissionsFor(guild.Id).RootPermission; - } int index; if (!rootPerm.AsEnumerable().CheckPermissions(message, cmd, out index)) { var returnMsg = $"Permission number #{index} **{rootPerm.GetAt(index).GetCommand()}** is preventing this action."; return new Tuple(cmd, SearchResult.FromError(CommandError.Exception, returnMsg)); } + + + if (cmd.Module.Source.Name == typeof(Permissions).Name) //permissions, you must have special role + { + if (!((IGuildUser)user).Roles.Any(r => r.Name.Trim().ToLowerInvariant() == permRole)) + { + return new Tuple(cmd, SearchResult.FromError(CommandError.Exception, $"You need a **{permRole}** role in order to use permission commands.")); + } + } } return new Tuple(commands[i], await commands[i].Execute(message, parseResult)); diff --git a/src/NadekoBot/Services/CurrencyHandler.cs b/src/NadekoBot/Services/CurrencyHandler.cs index f2834589..e847c7cb 100644 --- a/src/NadekoBot/Services/CurrencyHandler.cs +++ b/src/NadekoBot/Services/CurrencyHandler.cs @@ -13,6 +13,16 @@ namespace NadekoBot.Services public static class CurrencyHandler { public static async Task RemoveCurrencyAsync(IGuildUser author, string reason, long amount, bool sendMessage) + { + var success = await RemoveCurrencyAsync(author.Id, reason, amount); + + if (success && sendMessage) + try { await author.SendMessageAsync($"`You lost:` {amount} {Gambling.CurrencySign}\n`Reason:` {reason}").ConfigureAwait(false); } catch { } + + return success; + } + + public static async Task RemoveCurrencyAsync(ulong authorId, string reason, long amount) { if (amount < 0) throw new ArgumentNullException(nameof(amount)); @@ -20,15 +30,12 @@ namespace NadekoBot.Services using (var uow = DbHandler.UnitOfWork()) { - var success = uow.Currency.TryUpdateState(author.Id, -amount); + var success = uow.Currency.TryUpdateState(authorId, -amount); if (!success) return false; await uow.CompleteAsync(); } - if (sendMessage) - try { await author.SendMessageAsync($"`You lost:` {amount} {Gambling.CurrencySign}\n`Reason:` {reason}").ConfigureAwait(false); } catch { } - return true; } diff --git a/src/NadekoBot/TypeReaders/GuildTypeReader.cs b/src/NadekoBot/TypeReaders/GuildTypeReader.cs new file mode 100644 index 00000000..2f7bc19c --- /dev/null +++ b/src/NadekoBot/TypeReaders/GuildTypeReader.cs @@ -0,0 +1,26 @@ +using Discord.Commands; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Discord; +using Discord.WebSocket; + +namespace NadekoBot.TypeReaders +{ + public class GuildTypeReader : TypeReader + { + public override Task Read(IUserMessage context, string input) + { + input = input.Trim().ToLowerInvariant(); + var guild = NadekoBot.Client.GetGuilds().FirstOrDefault(g => g.Id.ToString().Trim().ToLowerInvariant() == input) ?? //by id + NadekoBot.Client.GetGuilds().FirstOrDefault(g => g.Name.Trim().ToLowerInvariant() == input);//by name + + if (guild != null) + return Task.FromResult(TypeReaderResult.FromSuccess(guild)); + + return Task.FromResult(TypeReaderResult.FromError(CommandError.ParseFailed, "No guild by that name or Id found")); + } + } +} diff --git a/src/tests/Tests.cs b/src/tests/Tests.cs index 1448b1a9..fdfa5e85 100644 --- a/src/tests/Tests.cs +++ b/src/tests/Tests.cs @@ -38,7 +38,7 @@ namespace Tests { var root = GetRoot(); - root.Add(new Permission() { SecondaryTargetName = "Added" }); + root.Prepend(new Permission() { SecondaryTargetName = "Added" }); Assert.Equal(11, root.Count()); diff --git a/src/tests/bin/Debug/netcoreapp1.0/Discord.Net.Commands.dll b/src/tests/bin/Debug/netcoreapp1.0/Discord.Net.Commands.dll deleted file mode 100644 index 45e99c5e3396e7d778f81669ffe9827373d65c4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65024 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%0A1B8!u2> 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 SPy+sx{$znaS>Qj81^x|QO*{4g diff --git a/src/tests/bin/Debug/netcoreapp1.0/Discord.Net.Commands.xml b/src/tests/bin/Debug/netcoreapp1.0/Discord.Net.Commands.xml deleted file mode 100644 index 4783bb54..00000000 --- a/src/tests/bin/Debug/netcoreapp1.0/Discord.Net.Commands.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - Discord.Net.Commands - - - - Provides aliases for a command. - - - The aliases which have been defined for the command. - - - Creates a new with the given aliases. - - - Sets priority of commands - - - The priority which has been set for the command - - - Creates a new with the given priority. - - - diff --git a/src/tests/bin/Debug/netcoreapp1.0/Discord.Net.dll b/src/tests/bin/Debug/netcoreapp1.0/Discord.Net.dll deleted file mode 100644 index fdc9e0e89a078d56f7cb8187f56f836277ecdd59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 719360 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%0D2I*=SWbHn*D@A&7+d&(KD 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

@Yzsca^;x8)PSS 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 diff --git a/src/tests/bin/Debug/netcoreapp1.0/Discord.Net.pdb b/src/tests/bin/Debug/netcoreapp1.0/Discord.Net.pdb deleted file mode 100644 index 095b548c3ee9ce667678921b39b34f65c85e2808..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1555968 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 rPWg)rS#snlP^3he3RP; - - - Discord.Net - - - -

Gets or sets the minimum log level severity that will be sent to the LogMessage event. - - - Returns a markdown-formatted string with bold formatting. - - - Returns a markdown-formatted string with italics formatting. - - - Returns a markdown-formatted string with underline formatting. - - - Returns a markdown-formatted string with strikethrough formatting. - - - Returns a markdown-formatted string with strikeout formatting. - - - Sanitizes the string, safely escaping any Markdown sequences. - - - The max time, in milliseconds, to wait for this request to complete. If null, a request will not time out. If a rate limit has been triggered for this request's bucket and will not be unpaused in time, this request will fail immediately. - - - C←S - Used to send most events. - - - C↔S - Used to keep the connection alive and measure latency. - - - C→S - Used to associate a connection with a token and specify configuration. - - - C→S - Used to update client's status and current game id. - - - C→S - Used to join a particular voice channel. - - - C→S - Used to ensure the guild's voice server is alive. - - - C→S - Used to resume a connection after a redirect occurs. - - - C←S - Used to notify a client that they must reconnect to another gateway. - - - C→S - Used to request members that were withheld by large_threshold - - - C←S - Used to notify the client that their session has expired and cannot be resumed. - - - C←S - Used to provide information to the client immediately on connection. - - - C←S - Used to reply to a client's heartbeat. - - - C→S - Used to request presence updates from particular guilds. - - - C→S - Used to associate a connection with a token. - - - C→S - Used to specify configuration. - - - C←S - Used to notify that the voice connection was successful and informs the client of available protocols. - - - C→S - Used to keep the connection alive and measure latency. - - - C←S - Used to reply to a client's heartbeat. - - - C←S - Used to provide an encryption key to the client. - - - C↔S - Used to inform that a certain user is speaking. - - - Creates a new REST/WebSocket discord client. - - - - - - - - - - - - Gets the current connection state of this client. - - - Gets the estimated round-trip latency, in milliseconds, to the gateway server. - - - Gets the bit rate of this converter. - - - Gets the bytes per sample. - - - Gets the maximum amount of channels this encoder supports. - - - Gets the input sampling rate of this converter. - - - Gets the number of samples per second for this stream. - - - Produces PCM samples from Opus-encoded audio. - PCM samples to decode. - Offset of the frame in input. - Buffer to store the decoded frame. - - - Gets the coding mode of the encoder. - - - Produces Opus encoded audio from PCM samples. - PCM samples to encode. - Buffer to store the encoded frame. - Length of the frame contained in outputBuffer. - - - Gets or sets whether Forward Error Correction is enabled. - - - Gets or sets whether Forward Error Correction is enabled. - - - Deletes this object and all its children. - - - Gets the unique identifier for this object. - - - Returns true if this object is getting live updates from the DiscordClient. - - - Returns a special string used to mention this object. - - - Gets when this object was created. - - - Updates this object's properties with its current state. - - - Gets a collection of all users in this channel. - - - Gets a user in this channel with the provided id. - - - Gets the recipient of all messages in this channel. - - - Closes this private channel, removing it from your channel list. - - - Adds a user to this group. - - - Leaves this group. - - - Gets the name of this channel. - - - Gets the position of this channel in the guild's channel list, relative to others of the same type. - - - Gets the guild this channel is a member of. - - - Creates a new invite to this channel. - The time (in seconds) until the invite expires. Set to null to never expire. - The max amount of times this invite may be used. Set to null to have unlimited uses. - If true, a user accepting this invite will be kicked from the guild after closing their client. - - - Returns a collection of all invites to this channel. - - - Gets a collection of permission overwrites for this channel. - - - Modifies this guild channel. - - - Gets the permission overwrite for a specific role, or null if one does not exist. - - - Gets the permission overwrite for a specific user, or null if one does not exist. - - - Removes the permission overwrite for the given role, if one exists. - - - Removes the permission overwrite for the given user, if one exists. - - - Adds or updates the permission overwrite for the given role. - - - Adds or updates the permission overwrite for the given user. - - - Gets a collection of all users in this channel. - - - Gets a user in this channel with the provided id. - - - Gets all messages in this channel's cache. - - - Sends a message to this message channel. - - - Sends a file to this text channel, with an optional caption. - - - Sends a file to this text channel, with an optional caption. - - - Gets a message from this message channel with the given id, or null if not found. - - - Gets the message from this channel's cache with the given id, or null if not found. - - - Gets the last N messages from this message channel. - - - Gets a collection of messages in this channel. - - - Gets a collection of pinned messages in this channel. - - - Bulk deletes multiple messages. - - - Broadcasts the "user is typing" message to all users in this channel, lasting 10 seconds. - - - Gets the current topic for this text channel. - - - Modifies this text channel. - - - Gets the bitrate, in bits per second, clients in this voice channel are requested to use. - - - Gets the max amount of users allowed to be connected to this channel at one time. A value of 0 represents no limit. - - - Modifies this voice channel. - - - Connects to this voice channel. - - - By default, only mentions will trigger notifications. - - - By default, all messages will trigger notifications. - - - Gets the name of this guild. - - - Gets the amount of time (in seconds) a user must be inactive in a voice channel for until they are automatically moved to the AFK voice channel, if one is set. - - - Returns true if this guild is embeddable (e.g. widget) - - - Gets the default message notifications for users who haven't explicitly set their notification settings. - - - Gets the level of mfa requirements a user must fulfill before being allowed to perform administrative actions in this guild. - - - Gets the level of requirements a user must fulfill before being allowed to post messages in this guild. - - - Returns the url to this guild's icon, or null if one is not set. - - - Returns the url to this guild's splash image, or null if one is not set. - - - Returns true if this guild is currently connected and ready to be used. Only applies to the WebSocket client. - - - Gets the id of the AFK voice channel for this guild if set, or null if not. - - - Gets the id of the the default channel for this guild. - - - Gets the id of the embed channel for this guild if set, or null if not. - - - Gets the id of the user that created this guild. - - - Gets the id of the region hosting this guild's voice channels. - - - Gets the IAudioClient currently associated with this guild. - - - Gets the built-in role containing all users in this guild. - - - Gets a collection of all custom emojis for this guild. - - - Gets a collection of all extra features added to this guild. - - - Gets a collection of all roles in this guild. - - - Modifies this guild. - - - Modifies this guild's embed. - - - Bulk modifies the channels of this guild. - - - Bulk modifies the roles of this guild. - - - Leaves this guild. If you are the owner, use Delete instead. - - - Gets a collection of all users banned on this guild. - - - Bans the provided user from this guild and optionally prunes their recent messages. - - - Bans the provided user id from this guild and optionally prunes their recent messages. - - - Unbans the provided user if it is currently banned. - - - Unbans the provided user id if it is currently banned. - - - Gets a collection of all channels in this guild. - - - Gets the channel in this guild with the provided id, or null if not found. - - - Creates a new text channel. - - - Creates a new voice channel. - - - Gets a collection of all invites to this guild. - - - Gets the role in this guild with the provided id, or null if not found. - - - Creates a new role. - - - Gets a collection of all users in this guild. - - - Gets the user in this guild with the provided id, or null if not found. - - - Gets the current user for this guild. - - - Downloads all users for this guild if the current list is incomplete. Only applies to the WebSocket client. - - - Removes all users from this guild if they have not logged on in a provided number of days or, if simulate is true, returns the number of users that would be removed. - - - Gets the name of this guild. - - - Returns the url to this guild's icon, or null if one is not set. - - - Returns true if the current user owns this guild. - - - Returns the current user's permissions for this guild. - - - Gets the unique identifier for this voice region. - - - Gets the name of this voice region. - - - Returns true if this voice region is exclusive to VIP accounts. - - - Returns true if this voice region is the closest to your machine. - - - Gets an example hostname for this voice region. - - - Gets an example port for this voice region. - - - Users have no additional MFA restriction on this guild. - - - Users must have MFA enabled on their account to perform administrative actions. - - - Users have no additional restrictions on sending messages to this guild. - - - Users must have a verified email on their account. - - - Users must fulfill the requirements of Low, and be registered on Discord for at least 5 minutes. - - - Users must fulfill the requirements of Medium, and be a member of this guild for at least 10 minutes. - - - Gets the unique identifier for this invite. - - - Gets the url used to accept this invite, using Code. - - - Gets the id of the the channel this invite is linked to. - - - Gets the id of the guild this invite is linked to. - - - Accepts this invite and joins the target guild. This will fail on bot accounts. - - - Gets the user that created this invite. - - - Returns true if this invite was revoked. - - - Returns true if users accepting this invite will be removed from the guild when they log off. - - - Gets the time (in seconds) until the invite expires, or null if it never expires. - - - Gets the max amount of times this invite may be used, or null if there is no limit. - - - Gets the amount of times this invite has been used. - - - Gets when this invite was created. - - - Returns true if this message was sent as a text-to-speech message. - - - Returns true if this message was added to its channel's pinned messages. - - - Returns the content for this message. - - - Gets the time this message was sent. - - - Gets the time of this message's last edit, if any. - - - Gets the channel this message was sent to. - - - Gets the author of this message. - - - Returns a collection of all attachments included in this message. - - - Returns a collection of all embeds included in this message. - - - Returns a collection of channel ids mentioned in this message. - - - Returns a collection of roles mentioned in this message. - - - Returns a collection of users mentioned in this message. - - - Gets the type of this system message. - - - Modifies this message. - - - Adds this message to its channel's pinned messages. - - - Removes this message from its channel's pinned messages. - - - Transforms this message's text into a human readable form, resolving mentions to that object's name. - - - Transforms this message's text into a human readable form, resolving mentions to that object's name. - - - Gets a blank ChannelPermissions that grants no permissions. - - - Gets a ChannelPermissions that grants all permissions for a given channelType. - - - Gets a packed value representing all the permissions in this ChannelPermissions. - - - If True, a user may create invites. - - - If True, a user may create, delete and modify this channel. - - - If True, a user may join channels. - - - If True, a user may send messages. - - - If True, a user may send text-to-speech messages. - - - If True, a user may delete messages. - - - If True, Discord will auto-embed links sent by this user. - - - If True, a user may send files. - - - If True, a user may read previous messages. - - - If True, a user may mention @everyone. - - - If True, a user may use custom emoji from other guilds. - - - If True, a user may connect to a voice channel. - - - If True, a user may speak in a voice channel. - - - If True, a user may mute users. - - - If True, a user may deafen users. - - - If True, a user may move other users between voice channels. - - - If True, a user may use voice-activity-detection rather than push-to-talk. - - - If True, a user may adjust permissions. This also implictly grants all other permissions. - - - Creates a new ChannelPermissions with the provided packed value. - - - Creates a new ChannelPermissions with the provided permissions. - - - Creates a new ChannelPermissions from this one, changing the provided non-null permissions. - - - Gets a blank GuildPermissions that grants no permissions. - - - Gets a GuildPermissions that grants all permissions. - - - Gets a packed value representing all the permissions in this GuildPermissions. - - - If True, a user may create invites. - - - If True, a user may ban users from the guild. - - - If True, a user may kick users from the guild. - - - If True, a user is granted all permissions, and cannot have them revoked via channel permissions. - - - If True, a user may create, delete and modify channels. - - - If True, a user may adjust guild properties. - - - If True, a user may join channels. - - - If True, a user may send messages. - - - If True, a user may send text-to-speech messages. - - - If True, a user may delete messages. - - - If True, Discord will auto-embed links sent by this user. - - - If True, a user may send files. - - - If True, a user may read previous messages. - - - If True, a user may mention @everyone. - - - If True, a user may use custom emoji from other guilds. - - - If True, a user may connect to a voice channel. - - - If True, a user may speak in a voice channel. - - - If True, a user may mute users. - - - If True, a user may deafen users. - - - If True, a user may move other users between voice channels. - - - If True, a user may use voice-activity-detection rather than push-to-talk. - - - If True, a user may change their own nickname. - - - If True, a user may change the nickname of other users. - - - If True, a user may adjust roles. - - - Creates a new GuildPermissions with the provided packed value. - - - Creates a new GuildPermissions with the provided permissions. - - - Creates a new GuildPermissions from this one, changing the provided non-null permissions. - - - Gets the unique identifier for the object this overwrite is targeting. - - - Gets the type of object this overwrite is targeting. - - - Gets the permissions associated with this overwrite entry. - - - Creates a new Overwrite with provided target information and modified permissions. - - - Gets a blank OverwritePermissions that inherits all permissions. - - - Gets a OverwritePermissions that grants all permissions for a given channelType. - - - Gets a OverwritePermissions that denies all permissions for a given channelType. - - - Gets a packed value representing all the allowed permissions in this OverwritePermissions. - - - Gets a packed value representing all the denied permissions in this OverwritePermissions. - - - If Allowed, a user may create invites. - - - If Allowed, a user may create, delete and modify this channel. - - - If Allowed, a user may join channels. - - - If Allowed, a user may send messages. - - - If Allowed, a user may send text-to-speech messages. - - - If Allowed, a user may delete messages. - - - If Allowed, Discord will auto-embed links sent by this user. - - - If Allowed, a user may send files. - - - If Allowed, a user may read previous messages. - - - If Allowed, a user may mention @everyone. - - - If Allowed, a user may use custom emoji from other guilds. - - - If Allowed, a user may connect to a voice channel. - - - If Allowed, a user may speak in a voice channel. - - - If Allowed, a user may mute users. - - - If Allowed, a user may deafen users. - - - If Allowed, a user may move other users between voice channels. - - - If Allowed, a user may use voice-activity-detection rather than push-to-talk. - - - If Allowed, a user may adjust permissions. This also implictly grants all other permissions. - - - Creates a new OverwritePermissions with the provided allow and deny packed values. - - - Creates a new ChannelPermissions with the provided permissions. - - - Creates a new OverwritePermissions from this one, changing the provided non-null permissions. - - - Gets the default user color value. - - - Gets the encoded value for this color. - - - Gets the red component for this color. - - - Gets the green component for this color. - - - Gets the blue component for this color. - - - Gets the color given to users of this role. - - - Returns true if users of this role are separated in the user list. - - - Returns true if this role is automatically managed by Discord. - - - Gets the name of this role. - - - Gets the permissions granted to members of this role. - - - Gets this role's position relative to other roles in the same guild. - - - Gets the id of the guild owning this role. - - - Modifies this role. - - - Kicks this user from this group. - - - Returns a private message channel to this user, creating one if it does not already exist. - - - A Guild-User pairing. - - - Gets when this user joined this guild. - - - Gets the nickname for this user. - - - Gets the guild-level permissions granted to this user by their roles. - - - Gets the guild for this guild-user pair. - - - Returns a collection of the roles this user is a member of in this guild, including the guild's @everyone role. - - - Gets the level permissions granted to this user to a given channel. - - - Kicks this user from this guild. - - - Modifies this user's properties in this guild. - - - Returns a private message channel to this user, creating one if it does not already exist. - - - Gets the game this user is currently playing, if any. - - - Gets the current status of this user. - - - Gets the email associated with this user. - - - Returns true if this user's email has been verified. - - - Returns true if this user has enabled MFA on their account. - - - Gets the url to this user's avatar. - - - Gets the per-username unique id for this user. - - - Gets the per-username unique id for this user. - - - Returns true if this user is a bot account. - - - Gets the username for this user. - - - Returns true if the guild has deafened this user. - - - Returns true if the guild has muted this user. - - - Returns true if this user has marked themselves as deafened. - - - Returns true if this user has marked themselves as muted. - - - Returns true if the guild is temporarily blocking audio to/from this user. - - - Gets the voice channel this user is currently in, if any. - - - Gets the unique identifier for this user's voice session. - - - Gets the unique identifier for this bucket. - - - Gets the name of this bucket. - - - Gets the amount of requests that may be sent per window. - - - Gets the length of this bucket's window, in seconds. - - - Gets the type of account this bucket affects. - - - Gets this bucket's parent. - - - Creates a new REST-only discord client. - - - Creates a new REST-only discord client. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Gets or sets the provider used to generate new REST connections. - - - Creates a new RPC discord client. - - - Creates a new RPC discord client. - - - - - - - - - Gets or sets the Discord client/application id used for this RPC connection. - - - Gets or sets the origin used for this RPC connection. - - - Gets or sets the time, in milliseconds, to wait for a connection to complete before aborting. - - - Gets or sets the provider used to generate new websocket connections. - - - Parses a provided user mention string. - - - Tries to parse a provided user mention string. - - - Parses a provided channel mention string. - - - Tries to parse a provided channel mention string. - - - Parses a provided role mention string. - - - Tries to parse a provided role mention string. - - - Gets the value for this paramter. - - - Returns true if this value has been specified. - - - Creates a new Parameter with the provided value. - - - Gets the shard id of this client. - - - Gets the current connection state of this client. - - - Gets the estimated round-trip latency, in milliseconds, to the gateway server. - - - Creates a new REST/WebSocket discord client. - - - Creates a new REST/WebSocket discord client. - - - - - - - - - - - - - - - - - - - - - - - - - - - Downloads the users list for all large guilds. - - - Downloads the users list for the provided guilds, if they don't have a complete list. - - - Gets or sets the time, in milliseconds, to wait for a connection to complete before aborting. - - - Gets or sets the id for this shard. Must be less than TotalShards. - - - Gets or sets the total number of shards for this application. - - - Gets or sets the number of messages per channel that should be kept in cache. Setting this to zero disables the message cache entirely. - - - - Gets or sets the max number of users a guild may have for offline users to be included in the READY packet. Max is 250. - - - - Gets or sets the type of audio this DiscordClient supports. - - - Gets or sets the provider used to generate new websocket connections. - - - diff --git a/src/tests/bin/Debug/netcoreapp1.0/NadekoBot.dll b/src/tests/bin/Debug/netcoreapp1.0/NadekoBot.dll deleted file mode 100644 index 246ffe93a837c66cbe2f8a55c580408b7eee8052..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 998400 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

1WQIC{r~+wmAuLFV_D@^N=2r>vzGIe`ilt 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

T53H-q;2EB=u@wY>zftxd=S6snx~pR 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%0DJj~zeN>4C%ScEG*G3@S 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 a&}W}Ei(P@UWU^*T&in1uSB@ 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%0DJCrYf^8V>w=uIe)~pS^yc}i_ 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 z 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 diff --git a/src/tests/bin/Debug/netcoreapp1.0/tests.deps.json b/src/tests/bin/Debug/netcoreapp1.0/tests.deps.json deleted file mode 100644 index 0f831818..00000000 --- a/src/tests/bin/Debug/netcoreapp1.0/tests.deps.json +++ /dev/null @@ -1,1101 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v1.0", - "signature": "81ace1a8301fcbe81b83a514b616c6a56d43bad8" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v1.0": { - "tests/1.0.0": { - "dependencies": { - "System.Runtime.Serialization.Primitives": "4.1.1", - "xunit": "2.1.0", - "dotnet-test-xunit": "1.0.0-rc2-build10015", - "NadekoBot": "1.0.0" - }, - "runtime": { - "tests.dll": {} - } - }, - "CoreCLR-NCalc/2.1.0": { - "dependencies": { - "System.Runtime.Serialization.Xml": "4.1.1" - }, - "runtime": { - "lib/netstandard1.3/NCalc.dll": {} - } - }, - "dotnet-test-xunit/1.0.0-rc2-build10015": { - "dependencies": { - "Microsoft.Extensions.Testing.Abstractions": "1.0.0-preview1-002702", - "xunit.runner.reporters": "2.1.0" - }, - "runtime": { - "lib/netcoreapp1.0/dotnet-test-xunit.dll": {} - } - }, - "Google.Apis/1.16.0": { - "dependencies": { - "Google.Apis.Core": "1.16.0" - }, - "runtime": { - "lib/netstandard1.3/Google.Apis.dll": {} - } - }, - "Google.Apis.Auth/1.15.0": { - "dependencies": { - "Google.Apis.Core": "1.16.0", - "Newtonsoft.Json": "9.0.1", - "Portable.BouncyCastle": "1.8.1.1" - }, - "runtime": { - "lib/netstandard1.3/Google.Apis.Auth.PlatformServices.dll": {}, - "lib/netstandard1.3/Google.Apis.Auth.dll": {} - } - }, - "Google.Apis.Core/1.16.0": { - "dependencies": { - "Newtonsoft.Json": "9.0.1" - }, - "runtime": { - "lib/netstandard1.3/Google.Apis.Core.dll": {} - } - }, - "Google.Apis.Customsearch.v1/1.16.0.466": { - "dependencies": { - "Google.Apis": "1.16.0" - }, - "runtime": { - "lib/netstandard1.3/Google.Apis.Customsearch.v1.dll": {} - } - }, - "Google.Apis.Urlshortener.v1/1.15.0.138": { - "dependencies": { - "Google.Apis": "1.16.0", - "Google.Apis.Auth": "1.15.0" - }, - "runtime": { - "lib/netstandard1.3/Google.Apis.Urlshortener.v1.dll": {} - } - }, - "Google.Apis.YouTube.v3/1.15.0.582": { - "dependencies": { - "Google.Apis": "1.16.0", - "Google.Apis.Auth": "1.15.0" - }, - "runtime": { - "lib/netstandard1.3/Google.Apis.YouTube.v3.dll": {} - } - }, - "ImageProcessorCore/1.0.0-alpha1045": { - "dependencies": { - "System.Runtime.CompilerServices.Unsafe": "4.0.0" - }, - "runtime": { - "lib/netstandard1.1/ImageProcessorCore.dll": {} - } - }, - "Microsoft.AspNetCore.Hosting.Abstractions/1.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Hosting.Server.Abstractions": "1.0.0", - "Microsoft.AspNetCore.Http.Abstractions": "1.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "1.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", - "Microsoft.Extensions.FileProviders.Abstractions": "1.0.0", - "Microsoft.Extensions.Logging.Abstractions": "1.0.0" - }, - "runtime": { - "lib/netstandard1.3/Microsoft.AspNetCore.Hosting.Abstractions.dll": {} - } - }, - "Microsoft.AspNetCore.Hosting.Server.Abstractions/1.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "1.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "1.0.0" - }, - "runtime": { - "lib/netstandard1.3/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll": {} - } - }, - "Microsoft.AspNetCore.Http.Abstractions/1.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "1.0.0", - "System.Text.Encodings.Web": "4.0.0" - }, - "runtime": { - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Abstractions.dll": {} - } - }, - "Microsoft.AspNetCore.Http.Features/1.0.0": { - "dependencies": { - "Microsoft.Extensions.Primitives": "1.0.0", - "System.Net.WebSockets": "4.0.0" - }, - "runtime": { - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Features.dll": {} - } - }, - "Microsoft.Data.Sqlite/1.0.0": { - "dependencies": { - "SQLite": "3.12.2", - "System.Data.Common": "4.1.0" - }, - "runtime": { - "lib/netstandard1.3/Microsoft.Data.Sqlite.dll": {} - } - }, - "Microsoft.DiaSymReader/1.0.6": { - "runtime": { - "lib/portable-net45+win8/Microsoft.DiaSymReader.dll": {} - } - }, - "Microsoft.DiaSymReader.Native/1.3.3": { - "runtimeTargets": { - "runtimes/win-x64/native/Microsoft.DiaSymReader.Native.amd64.dll": { - "rid": "win-x64", - "assetType": "native" - }, - "runtimes/win-x86/native/Microsoft.DiaSymReader.Native.x86.dll": { - "rid": "win-x86", - "assetType": "native" - }, - "runtimes/win/native/Microsoft.DiaSymReader.Native.amd64.dll": { - "rid": "win", - "assetType": "native" - }, - "runtimes/win/native/Microsoft.DiaSymReader.Native.arm.dll": { - "rid": "win", - "assetType": "native" - }, - "runtimes/win/native/Microsoft.DiaSymReader.Native.x86.dll": { - "rid": "win", - "assetType": "native" - }, - "runtimes/win8-arm/native/Microsoft.DiaSymReader.Native.arm.dll": { - "rid": "win8-arm", - "assetType": "native" - } - } - }, - "Microsoft.DotNet.InternalAbstractions/1.0.0-rc2-002702": { - "runtime": { - "lib/netstandard1.3/Microsoft.DotNet.InternalAbstractions.dll": {} - } - }, - "Microsoft.DotNet.ProjectModel/1.0.0-rc2-002702": { - "dependencies": { - "Microsoft.Extensions.DependencyModel": "1.0.0-rc2-002702", - "Newtonsoft.Json": "9.0.1", - "NuGet.Packaging": "3.5.0-beta-final", - "NuGet.RuntimeModel": "3.5.0-beta-final", - "System.Runtime.Serialization.Primitives": "4.1.1" - }, - "runtime": { - "lib/netstandard1.5/Microsoft.DotNet.ProjectModel.dll": {} - } - }, - "Microsoft.EntityFrameworkCore/1.0.0": { - "dependencies": { - "Microsoft.Extensions.Caching.Memory": "1.0.0", - "Microsoft.Extensions.DependencyInjection": "1.0.0", - "Microsoft.Extensions.Logging": "1.0.0", - "Remotion.Linq": "2.1.1", - "System.Interactive.Async": "3.0.0" - }, - "runtime": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.dll": {} - } - }, - "Microsoft.EntityFrameworkCore.Design/1.0.0-preview2-final": { - "dependencies": { - "Microsoft.EntityFrameworkCore.Design.Core": "1.0.0-preview2-final", - "Microsoft.Extensions.CommandLineUtils": "1.0.0" - }, - "runtime": { - "lib/netcoreapp1.0/Microsoft.EntityFrameworkCore.Design.dll": {} - } - }, - "Microsoft.EntityFrameworkCore.Design.Core/1.0.0-preview2-final": { - "dependencies": { - "Microsoft.AspNetCore.Hosting.Abstractions": "1.0.0", - "Microsoft.EntityFrameworkCore.Relational.Design": "1.0.0", - "System.Collections.NonGeneric": "4.0.1" - }, - "runtime": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Design.Core.dll": {} - } - }, - "Microsoft.EntityFrameworkCore.Relational/1.0.0": { - "dependencies": { - "Microsoft.EntityFrameworkCore": "1.0.0", - "System.Data.Common": "4.1.0" - }, - "runtime": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Relational.dll": {} - } - }, - "Microsoft.EntityFrameworkCore.Relational.Design/1.0.0": { - "dependencies": { - "Microsoft.EntityFrameworkCore.Relational": "1.0.0" - }, - "runtime": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Relational.Design.dll": {} - } - }, - "Microsoft.EntityFrameworkCore.Sqlite/1.0.0": { - "dependencies": { - "Microsoft.Data.Sqlite": "1.0.0", - "Microsoft.EntityFrameworkCore.Relational": "1.0.0" - }, - "runtime": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Sqlite.dll": {} - } - }, - "Microsoft.Extensions.Caching.Abstractions/1.0.0": { - "dependencies": { - "Microsoft.Extensions.Primitives": "1.0.0" - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.Caching.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.Caching.Memory/1.0.0": { - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "1.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", - "Microsoft.Extensions.Options": "1.0.0" - }, - "runtime": { - "lib/netstandard1.3/Microsoft.Extensions.Caching.Memory.dll": {} - } - }, - "Microsoft.Extensions.CommandLineUtils/1.0.0": { - "runtime": { - "lib/netstandard1.3/Microsoft.Extensions.CommandLineUtils.dll": {} - } - }, - "Microsoft.Extensions.Configuration.Abstractions/1.0.0": { - "dependencies": { - "Microsoft.Extensions.Primitives": "1.0.0" - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.Configuration.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.DependencyInjection/1.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0" - }, - "runtime": { - "lib/netstandard1.1/Microsoft.Extensions.DependencyInjection.dll": {} - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/1.0.0": { - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.DependencyModel/1.0.0-rc2-002702": { - "dependencies": { - "Microsoft.DotNet.InternalAbstractions": "1.0.0-rc2-002702", - "Newtonsoft.Json": "9.0.1" - }, - "runtime": { - "lib/netstandard1.5/Microsoft.Extensions.DependencyModel.dll": {} - } - }, - "Microsoft.Extensions.FileProviders.Abstractions/1.0.0": { - "dependencies": { - "Microsoft.Extensions.Primitives": "1.0.0" - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.Logging/1.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", - "Microsoft.Extensions.Logging.Abstractions": "1.0.0" - }, - "runtime": { - "lib/netstandard1.1/Microsoft.Extensions.Logging.dll": {} - } - }, - "Microsoft.Extensions.Logging.Abstractions/1.0.0": { - "runtime": { - "lib/netstandard1.1/Microsoft.Extensions.Logging.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.Options/1.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", - "Microsoft.Extensions.Primitives": "1.0.0" - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.Options.dll": {} - } - }, - "Microsoft.Extensions.PlatformAbstractions/1.0.0": { - "runtime": { - "lib/netstandard1.3/Microsoft.Extensions.PlatformAbstractions.dll": {} - } - }, - "Microsoft.Extensions.Primitives/1.0.0": { - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.Primitives.dll": {} - } - }, - "Microsoft.Extensions.Testing.Abstractions/1.0.0-preview1-002702": { - "dependencies": { - "Microsoft.DiaSymReader": "1.0.6", - "Microsoft.DiaSymReader.Native": "1.3.3", - "Microsoft.DotNet.ProjectModel": "1.0.0-rc2-002702", - "Newtonsoft.Json": "9.0.1" - }, - "runtime": { - "lib/netstandard1.5/Microsoft.Extensions.Testing.Abstractions.dll": {} - } - }, - "Newtonsoft.Json/9.0.1": { - "dependencies": { - "System.Runtime.Serialization.Primitives": "4.1.1" - }, - "runtime": { - "lib/netstandard1.0/Newtonsoft.Json.dll": {} - } - }, - "NLog/4.4.0-betav15": { - "dependencies": { - "Microsoft.Extensions.PlatformAbstractions": "1.0.0", - "System.Collections.NonGeneric": "4.0.1", - "System.ComponentModel.TypeConverter": "4.1.0", - "System.Data.Common": "4.1.0", - "System.Diagnostics.Contracts": "4.0.1", - "System.Diagnostics.TraceSource": "4.0.0", - "System.Runtime.Serialization.Primitives": "4.1.1" - }, - "runtime": { - "lib/netstandard1.5/NLog.dll": {} - } - }, - "NuGet.Common/3.5.0-beta-final": { - "runtime": { - "lib/netstandard1.3/NuGet.Common.dll": {} - } - }, - "NuGet.Frameworks/3.5.0-beta-final": { - "dependencies": { - "NuGet.Versioning": "3.5.0-beta-final" - }, - "runtime": { - "lib/netstandard1.3/NuGet.Frameworks.dll": {} - } - }, - "NuGet.Packaging/3.5.0-beta-final": { - "dependencies": { - "NuGet.Common": "3.5.0-beta-final", - "NuGet.Packaging.Core": "3.5.0-beta-final" - }, - "runtime": { - "lib/netstandard1.3/NuGet.Packaging.dll": {} - } - }, - "NuGet.Packaging.Core/3.5.0-beta-final": { - "dependencies": { - "NuGet.Packaging.Core.Types": "3.5.0-beta-final" - }, - "runtime": { - "lib/netstandard1.3/NuGet.Packaging.Core.dll": {} - } - }, - "NuGet.Packaging.Core.Types/3.5.0-beta-final": { - "dependencies": { - "NuGet.Frameworks": "3.5.0-beta-final" - }, - "runtime": { - "lib/netstandard1.3/NuGet.Packaging.Core.Types.dll": {} - } - }, - "NuGet.RuntimeModel/3.5.0-beta-final": { - "dependencies": { - "Newtonsoft.Json": "9.0.1", - "NuGet.Frameworks": "3.5.0-beta-final", - "NuGet.Versioning": "3.5.0-beta-final" - }, - "runtime": { - "lib/netstandard1.3/NuGet.RuntimeModel.dll": {} - } - }, - "NuGet.Versioning/3.5.0-beta-final": { - "runtime": { - "lib/netstandard1.0/NuGet.Versioning.dll": {} - } - }, - "Portable.BouncyCastle/1.8.1.1": { - "runtime": { - "lib/netstandard1.3/crypto.dll": {} - } - }, - "Remotion.Linq/2.1.1": { - "runtime": { - "lib/netstandard1.0/Remotion.Linq.dll": {} - } - }, - "SQLite/3.12.2": { - "dependencies": { - "SQLite.Native": "3.12.2" - } - }, - "SQLite.Native/3.12.2": { - "runtimeTargets": { - "runtimes/linux-x64/native/libsqlite3.so": { - "rid": "linux-x64", - "assetType": "native" - }, - "runtimes/osx-x64/native/libsqlite3.dylib": { - "rid": "osx-x64", - "assetType": "native" - }, - "runtimes/win7-x64/native/sqlite3.dll": { - "rid": "win7-x64", - "assetType": "native" - }, - "runtimes/win7-x86/native/sqlite3.dll": { - "rid": "win7-x86", - "assetType": "native" - } - } - }, - "System.Collections.NonGeneric/4.0.1": { - "runtime": { - "lib/netstandard1.3/System.Collections.NonGeneric.dll": {} - } - }, - "System.Collections.Specialized/4.0.1": { - "dependencies": { - "System.Collections.NonGeneric": "4.0.1" - }, - "runtime": { - "lib/netstandard1.3/System.Collections.Specialized.dll": {} - } - }, - "System.ComponentModel.Primitives/4.1.0": { - "runtime": { - "lib/netstandard1.0/System.ComponentModel.Primitives.dll": {} - } - }, - "System.ComponentModel.TypeConverter/4.1.0": { - "dependencies": { - "System.Collections.NonGeneric": "4.0.1", - "System.Collections.Specialized": "4.0.1", - "System.ComponentModel.Primitives": "4.1.0" - }, - "runtime": { - "lib/netstandard1.5/System.ComponentModel.TypeConverter.dll": {} - } - }, - "System.Data.Common/4.1.0": { - "runtime": { - "lib/netstandard1.2/System.Data.Common.dll": {} - } - }, - "System.Diagnostics.Contracts/4.0.1": { - "runtime": { - "lib/netstandard1.0/System.Diagnostics.Contracts.dll": {} - } - }, - "System.Diagnostics.TraceSource/4.0.0": { - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Diagnostics.TraceSource.dll": { - "rid": "unix", - "assetType": "runtime" - }, - "runtimes/win/lib/netstandard1.3/System.Diagnostics.TraceSource.dll": { - "rid": "win", - "assetType": "runtime" - } - } - }, - "System.Interactive.Async/3.0.0": { - "runtime": { - "lib/netstandard1.0/System.Interactive.Async.dll": {} - } - }, - "System.Net.WebSockets/4.0.0": { - "runtime": { - "lib/netstandard1.3/System.Net.WebSockets.dll": {} - } - }, - "System.Net.WebSockets.Client/4.0.0": { - "dependencies": { - "System.Net.WebSockets": "4.0.0" - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Net.WebSockets.Client.dll": { - "rid": "unix", - "assetType": "runtime" - }, - "runtimes/win/lib/netstandard1.3/System.Net.WebSockets.Client.dll": { - "rid": "win", - "assetType": "runtime" - } - } - }, - "System.Private.DataContractSerialization/4.1.1": { - "dependencies": { - "System.Runtime.Serialization.Primitives": "4.1.1", - "System.Xml.XmlSerializer": "4.0.11" - }, - "runtime": { - "lib/netstandard1.3/System.Private.DataContractSerialization.dll": {} - } - }, - "System.Resources.ResourceWriter/4.0.0-beta-22816": { - "runtime": { - "lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Resources.ResourceWriter.dll": {} - } - }, - "System.Runtime.CompilerServices.Unsafe/4.0.0": { - "runtime": { - "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll": {} - } - }, - "System.Runtime.Serialization.Primitives/4.1.1": { - "runtime": { - "lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll": {} - } - }, - "System.Runtime.Serialization.Xml/4.1.1": { - "dependencies": { - "System.Private.DataContractSerialization": "4.1.1", - "System.Runtime.Serialization.Primitives": "4.1.1" - }, - "runtime": { - "lib/netstandard1.3/System.Runtime.Serialization.Xml.dll": {} - } - }, - "System.Text.Encodings.Web/4.0.0": { - "runtime": { - "lib/netstandard1.0/System.Text.Encodings.Web.dll": {} - } - }, - "System.Xml.XmlSerializer/4.0.11": { - "runtime": { - "lib/netstandard1.3/System.Xml.XmlSerializer.dll": {} - } - }, - "VideoLibrary/1.3.4": { - "runtime": { - "lib/portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10/libvideo.dll": {} - } - }, - "xunit/2.1.0": { - "dependencies": { - "xunit.assert": "2.1.0", - "xunit.core": "2.1.0" - } - }, - "xunit.abstractions/2.0.0": { - "runtime": { - "lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS/xunit.abstractions.dll": {} - } - }, - "xunit.assert/2.1.0": { - "runtime": { - "lib/dotnet/xunit.assert.dll": {} - } - }, - "xunit.core/2.1.0": { - "dependencies": { - "xunit.abstractions": "2.0.0", - "xunit.extensibility.core": "2.1.0", - "xunit.extensibility.execution": "2.1.0" - } - }, - "xunit.extensibility.core/2.1.0": { - "dependencies": { - "xunit.abstractions": "2.0.0" - }, - "runtime": { - "lib/dotnet/xunit.core.dll": {} - } - }, - "xunit.extensibility.execution/2.1.0": { - "dependencies": { - "xunit.abstractions": "2.0.0", - "xunit.extensibility.core": "2.1.0" - }, - "runtime": { - "lib/dotnet/xunit.execution.dotnet.dll": {} - } - }, - "xunit.runner.reporters/2.1.0": { - "dependencies": { - "Newtonsoft.Json": "9.0.1", - "xunit.abstractions": "2.0.0", - "xunit.runner.utility": "2.1.0" - }, - "runtime": { - "lib/dotnet/xunit.runner.reporters.dotnet.dll": {} - } - }, - "xunit.runner.utility/2.1.0": { - "dependencies": { - "xunit.abstractions": "2.0.0" - }, - "runtime": { - "lib/dotnet/xunit.runner.utility.dotnet.dll": {} - } - }, - "Discord.Net/1.0.0-beta": { - "dependencies": { - "Newtonsoft.Json": "9.0.1", - "System.Net.WebSockets.Client": "4.0.0", - "System.Runtime.Serialization.Primitives": "4.1.1" - }, - "runtime": { - "Discord.Net.dll": {} - } - }, - "Discord.Net.Commands/1.0.0-beta": { - "dependencies": { - "Discord.Net": "1.0.0-beta" - }, - "runtime": { - "Discord.Net.Commands.dll": {} - } - }, - "NadekoBot/1.0.0": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", - "Microsoft.Extensions.PlatformAbstractions": "1.0.0", - "Newtonsoft.Json": "9.0.1", - "Microsoft.Extensions.DependencyInjection": "1.0.0", - "Discord.Net.Commands": "1.0.0-beta", - "System.Resources.ResourceWriter": "4.0.0-beta-22816", - "Google.Apis.YouTube.v3": "1.15.0.582", - "Google.Apis.Urlshortener.v1": "1.15.0.138", - "Google.Apis.Customsearch.v1": "1.16.0.466", - "System.Diagnostics.Contracts": "4.0.1", - "NLog": "4.4.0-betav15", - "VideoLibrary": "1.3.4", - "Microsoft.EntityFrameworkCore": "1.0.0", - "Microsoft.EntityFrameworkCore.Design": "1.0.0-preview2-final", - "Microsoft.EntityFrameworkCore.Sqlite": "1.0.0", - "CoreCLR-NCalc": "2.1.0", - "ImageProcessorCore": "1.0.0-alpha1045" - }, - "runtime": { - "NadekoBot.dll": {} - } - } - } - }, - "libraries": { - "tests/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "CoreCLR-NCalc/2.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-GUPPo99NUeAgLR5oIOLrApJx3Mx5BZEaKkK9OlDd/CmAYaACLHo68FnO+kCamsLH2+rvr6Rw3hAwzap4GVFV8Q==" - }, - "dotnet-test-xunit/1.0.0-rc2-build10015": { - "type": "package", - "serviceable": true, - "sha512": "sha512-2traZWYeJiFzau+1j9HcnSZ3rQLDyIrqKyYKCTbPPmu6lsQAtaOG5q+fuKS9Vaxczmh0IcvZ2hdWEuYmtVb9zw==" - }, - "Google.Apis/1.16.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-/p657K7J7p9aRl6QxUjQfNK0AobxnLHwDWdSqAr/17lZeQR+XMuEbIy7No80+zDeS39kKrRVWFlu1vHiws7gRQ==" - }, - "Google.Apis.Auth/1.15.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-gBMi03/CjodxVVjByVvvaE4To9905Oe6o59oxzP6AI5uZaab9zNclR+2cu6OcnS5wOIpf5DKAWd+jlSshuZ/cw==" - }, - "Google.Apis.Core/1.16.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-uATqVAsPHlpOf+3VV51xFEIghAMSLJyh1hqoVpnPOlkXBx7fkOcs0qP3tKXtmsaeuyC/7BYM1Tt42lyIyhY2lQ==" - }, - "Google.Apis.Customsearch.v1/1.16.0.466": { - "type": "package", - "serviceable": true, - "sha512": "sha512-uZ5VP/xKgTZCMJXgEfwHYEIR/7FsbtvL+bncm08a07RhWLFZTdRpCAkNL4b5wADHkblpkBe1VWKv43W77I4tJw==" - }, - "Google.Apis.Urlshortener.v1/1.15.0.138": { - "type": "package", - "serviceable": true, - "sha512": "sha512-67USnpqrk8tWO3LAgaK9qDQT6h8A7i7eUIOKm+OISThZoQuHiLCn6dbg46FVb597LUh57AxClSSbhnweYcYC3Q==" - }, - "Google.Apis.YouTube.v3/1.15.0.582": { - "type": "package", - "serviceable": true, - "sha512": "sha512-isR8FdI417PKLgLlNdOVDhduO+8yqPJ+vfID1Zx0MjAa/y3q655Plk2E/KNmsrjvXkqSSWwDCQHPz/Q1fat4tA==" - }, - "ImageProcessorCore/1.0.0-alpha1045": { - "type": "package", - "serviceable": true, - "sha512": "sha512-A5oL7SwFnzcu5eF26u49nf73joQghpEpCGwLb54dm6VI6ZGpjBJpKAyNKtJP30HtXy1VngiGJn/EcvCl8+JGcg==" - }, - "Microsoft.AspNetCore.Hosting.Abstractions/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-8r6qOl1jYyC523ZKM1QNl+6ijIoYWELWm0tpEWqtTIOg9DytHJWshB7usgqiuRmfHXM0EUziR6ouFY7iP7Tuzw==" - }, - "Microsoft.AspNetCore.Hosting.Server.Abstractions/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-sHZyhQEoW15T9E36rfdm5Ux6a6RZB0KNM79ccf2IplWASqmlRGhX4ydU3dzQRLhkHpLx16fnWOL0KScsO6BevQ==" - }, - "Microsoft.AspNetCore.Http.Abstractions/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-OJHlqdJOWKKBfsiVdX4Z4KCNuqvBIu6+1MVKuejRDyHnGyMkNHNoP/dtVzhPqvJXaJg9N4HlD0XNc6GDCFVffg==" - }, - "Microsoft.AspNetCore.Http.Features/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-6x7zgfbTo1gL9xMEb7EMO2ES/48bqwnWyfH09z+ubWhnzxdhHls8rtqstPylu5FPD9nid6Vo2pgDm5vufRAy5Q==" - }, - "Microsoft.Data.Sqlite/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-dezlCGK9zVrPNfoX1SL50GmWDdRQNcV1SBy3wuCn/a0g7Gc26PyvlA4BKapjnCK5N8LSQ2+1PdW2imiRr+YvxA==" - }, - "Microsoft.DiaSymReader/1.0.6": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ai2eBJrXlHa0hecUKnEyacH0iXxGNOMpc9X0s7VAeqqh5TSTW70QMhTRZ0FNCtf3R/W67K4a+uf3R7MASmAjrg==" - }, - "Microsoft.DiaSymReader.Native/1.3.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-mjATkm+L2UlP35gO/ExNutLDfgX4iiwz1l/8sYVoeGHp5WnkEDu0NfIEsC4Oy/pCYeRw0/6SGB+kArJVNNvENQ==" - }, - "Microsoft.DotNet.InternalAbstractions/1.0.0-rc2-002702": { - "type": "package", - "serviceable": true, - "sha512": "sha512-81Zp6K3oJY5zyoCtf7eguaZ+EnM3zawCtUKszBCLob1KH6Bu44ET2hokkk/6eMhTI2aQhbGrV9SaSjJ2K8DUDg==" - }, - "Microsoft.DotNet.ProjectModel/1.0.0-rc2-002702": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ryslqqMpPRcJma9kJn3V1/GydzUny6i6xfpQ0cqfWmlPdSQ9Hnh6x2l8yVqU+ueCiVffKWn/Or80moLwroXP/A==" - }, - "Microsoft.EntityFrameworkCore/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Vqg/v0cXRQZQH0gY3VHHqt0Bt5WZEkDReVpI1sNYKHVbVtnMYFKPp5SiNygosUJYrJk1rSGb8UVkplDNNUkEgg==" - }, - "Microsoft.EntityFrameworkCore.Design/1.0.0-preview2-final": { - "type": "package", - "serviceable": true, - "sha512": "sha512-RhyjntECuOVsrKjgFog9rv+V7oBsxBNxz5NviF7uHvDDQXLyHH3os/CewQxRNsve114AQH5RX/Bww6qAXlSORQ==" - }, - "Microsoft.EntityFrameworkCore.Design.Core/1.0.0-preview2-final": { - "type": "package", - "serviceable": true, - "sha512": "sha512-H3pHksGErQSEwWyvISlDYMslIXftS4XB2m0AvqBS08ECGHagh27mqm/oIyUetzzRad+C2V0zpguJmR14eMiRaA==" - }, - "Microsoft.EntityFrameworkCore.Relational/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-LGBab+7o0eq4C3YtvkAxK8W7Ia57eO0Ue0viQgt0STptQ2bUpLzV7q5LfbNl475rt6yTWa/vDQlYVaI64fwqdw==" - }, - "Microsoft.EntityFrameworkCore.Relational.Design/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pw4EmGTp5U645is0Lyf0C6yU1uQGHVIZiRyxlDNNrRllL0ZjSFKTShv9qbE+fBpvvvArNp2HhDmP7d6vJAt0Dw==" - }, - "Microsoft.EntityFrameworkCore.Sqlite/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-GF5xfn90zVKbnCdNrjeH4j1IaAQ7FsHCWkTrdUKISzrPxG3LIizJaU2iu8YMfNhMYd5N1Y7R7SxF2dBh+5A+Ew==" - }, - "Microsoft.Extensions.Caching.Abstractions/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-IxlFDVOchL6tdR05bk7EiJvMtvZrVkZXBhkbXqc3GxOHOrHFGcN+92WoWFPeBpdpy8ot/Px5ZdXzt7k+2n1Bdg==" - }, - "Microsoft.Extensions.Caching.Memory/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-6+7zTufCnZ+tfrUo7RbIRR3LB0BxwOwxfXuo0IbLyIvgoToGpWuz5wYEDfCYNOvpig9tY8FA0I1uRHYmITMXMQ==" - }, - "Microsoft.Extensions.CommandLineUtils/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-kXJ8+YvEjp1j7ezJ7yvQMLYbRL6QlpBUjRoBfqghoe80yqZ5azYB90lL4iNeyRCznWF+cGm41aaIoFU0aOq7TQ==" - }, - "Microsoft.Extensions.Configuration.Abstractions/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-nJ+Et/rnDMDmGhxvFAKdN3va7y+YDPICv1nUEP8I4IKgOkWwr/dCZHMqxVhJFrkbW9ux8Kd7erC4mvxfZh0WnA==" - }, - "Microsoft.Extensions.DependencyInjection/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-zdtkiZNV6LB8xtpmfyUjP/9N9ZCL/ydQ+0bfjun38fbrk+MDEm9M2yeLzRdq+OIt5xExw/KU04wFaVwJ1bhQPg==" - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-+XwaNo3o9RhLQhUnnOBCaukeRi1X9yYc0Fzye9RlErSflKZdw0VgHtn6rvKo0FTionsW0x8QVULhKH+nkqVjQA==" - }, - "Microsoft.Extensions.DependencyModel/1.0.0-rc2-002702": { - "type": "package", - "serviceable": true, - "sha512": "sha512-xLEhTaEJw+3o49TNfPJ0I4ZBPe56kIIgHYmrQo6AibTfdaIV36TyvjznIGwRc53x87xKavq88PlV4tpL+jUiJQ==" - }, - "Microsoft.Extensions.FileProviders.Abstractions/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-4jsqTxG3py/hYSsOtZMkNJ2/CQqPdpwyK7bDUkrwHgqowCFSmx/C+R4IzQ+2AK2Up1fVcu+ldC0gktwidL828A==" - }, - "Microsoft.Extensions.Logging/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-0mDuASVrd/nMeBYIJSK+9lT3TSmWxUXP/ipVB1pF1ApMN5fqGCckPTNwmOfT4Z9wPkXGnhbwFTGrxZvbzTWxOg==" - }, - "Microsoft.Extensions.Logging.Abstractions/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-wHT6oY50q36mAXBRKtFaB7u07WxKC5u2M8fi3PqHOOnHyUo9gD0u1TlCNR8UObHQxKMYwqlgI8TLcErpt29n8A==" - }, - "Microsoft.Extensions.Options/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-SdP3yPKF++JTkoa91pBDiE70uQkR/gdXWzOnMPbSj+eOqY1vgY+b8RVl+gh7TrJ2wlCK2QqnQtvCQlPPZRK36w==" - }, - "Microsoft.Extensions.PlatformAbstractions/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-zyjUzrOmuevOAJpIo3Mt5GmpALVYCVdLZ99keMbmCxxgQH7oxzU58kGHzE6hAgYEiWsdfMJLjVR7r+vSmaJmtg==" - }, - "Microsoft.Extensions.Primitives/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-3q2vzfKEDjL6JFkRpk5SFA3zarYsO6+ZYgoucNImrUMzDn0mFbEOL5p9oPoWiypwypbJVVjWTf557bXZ0YFLig==" - }, - "Microsoft.Extensions.Testing.Abstractions/1.0.0-preview1-002702": { - "type": "package", - "serviceable": true, - "sha512": "sha512-NE4Efz4kvkztJ80CSifUlP0UaBP4iOOaeTVk6nrj+ZIJzhsRGLbecIe4oX8G82pkCkqFF9i8KTl7YYUwpQY5Wg==" - }, - "Newtonsoft.Json/9.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-U82mHQSKaIk+lpSVCbWYKNavmNH1i5xrExDEquU1i6I5pV6UMOqRnJRSlKO3cMPfcpp0RgDY+8jUXHdQ4IfXvw==" - }, - "NLog/4.4.0-betav15": { - "type": "package", - "serviceable": true, - "sha512": "sha512-LDRcdjv5VG9EWz+mnFqdSolUci+j+DBPIPjm7Xdam3xa1F9Rt7o0UpYoCnNRulqHzpKbU704o7Ad4ck9WxDhnw==" - }, - "NuGet.Common/3.5.0-beta-final": { - "type": "package", - "serviceable": true, - "sha512": "sha512-7eCg4ky9NtTnxY1+2VtDKIYX137QejH8Dsuw6fENU53N6OeoROsrv1MUm0pu4e3TF8VH1eL5G3Vx/G30VdXEDg==" - }, - "NuGet.Frameworks/3.5.0-beta-final": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Si7O1OFxUryBq3xuq2AIwADM8WUMIBQOmUdTJBSaxV+KesShLJfgrr7Dl+Tg/nVETSEArJS8ktscv7gjKqtosg==" - }, - "NuGet.Packaging/3.5.0-beta-final": { - "type": "package", - "serviceable": true, - "sha512": "sha512-wJSrtokTPmpIkNhJLiG5GPxdRFCVl6XB3MmgLCyRhD2O2wZVQqvvL6SELOz/61EU0C8m9ni/UiiNRqTEtH5QZw==" - }, - "NuGet.Packaging.Core/3.5.0-beta-final": { - "type": "package", - "serviceable": true, - "sha512": "sha512-sdc8dUnbjEpNzIK5h5frJgn7ARQjQLdXMC5YrMHoEh0sCJnd2p1Lu4JvHK7mqn/MurVCAvoAjNDyazzFaVCD0w==" - }, - "NuGet.Packaging.Core.Types/3.5.0-beta-final": { - "type": "package", - "serviceable": true, - "sha512": "sha512-35AVdtLFJFp66CI9EDS61iviOe4UsCwfGh7RILK3j2ihZtlbTIIS5ygjmS8GnTkhNpmdwQRIk/rUempv4ABBxQ==" - }, - "NuGet.RuntimeModel/3.5.0-beta-final": { - "type": "package", - "serviceable": true, - "sha512": "sha512-5opNw7zHG5wC0Qx9AzlopdPg48Tf/QVcVVKmPRuwUa3VBA1b9DBjY+1jCkaof8JRzyHZqLnxd6T9BuT98Jk0YQ==" - }, - "NuGet.Versioning/3.5.0-beta-final": { - "type": "package", - "serviceable": true, - "sha512": "sha512-fwFF9Mck1hgZVDvvJLU81gcaidMksfRoCwyjBALEXxnp1fJr4xLyGbTRdbf2OKI5OODGuUpxaMkcz7P4T8HsXw==" - }, - "Portable.BouncyCastle/1.8.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-bKqC2Me9ukybNYTBhlYd2sJ6j2kRV7SgB+JfiP2GueYq6QdM4Ym6PYV5eyrqb6KViOyd3zqQfJp0o6UW5ZG+GQ==" - }, - "Remotion.Linq/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-IJn0BqkvwEDpP+2qjvci7n4/a9f7DhKESLWb2/uG4xQh3rTkGTBUz69bI4IivCoKkTFAqjXxYDZw2K/npohjsw==" - }, - "SQLite/3.12.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-XYNQJt2eFqGluWP+fDaiNrV1v3kA+VsU2ygUjLx7zqzhIZKlAjSYMZLldmbGNnlNC5rKR+0LTrN0IA9dZkDyFw==" - }, - "SQLite.Native/3.12.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-/5BdEFTaCziE6K5OG0bjSUhPo+LRmFcmyriFWEZNSuHaiqSp69sVngTb/Yo8mH6JykMA79BFdCBLMW+2E3pnuA==" - }, - "System.Collections.NonGeneric/4.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-hMxFT2RhhlffyCdKLDXjx8WEC5JfCvNozAZxCablAuFRH74SCV4AgzE8yJCh/73bFnEoZgJ9MJmkjQ0dJmnKqA==" - }, - "System.Collections.Specialized/4.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-/HKQyVP0yH1I0YtK7KJL/28snxHNH/bi+0lgk/+MbURF6ULhAE31MDI+NZDerNWu264YbxklXCCygISgm+HMug==" - }, - "System.ComponentModel.Primitives/4.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-sc/7eVCdxPrp3ljpgTKVaQGUXiW05phNWvtv/m2kocXqrUQvTVWKou1Edas2aDjTThLPZOxPYIGNb/HN0QjURg==" - }, - "System.ComponentModel.TypeConverter/4.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-MnDAlaeJZy9pdB5ZdOlwdxfpI+LJQ6e0hmH7d2+y2LkiD8DRJynyDYl4Xxf3fWFm7SbEwBZh4elcfzONQLOoQw==" - }, - "System.Data.Common/4.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-epU8jeTe7aE7RqGHq9rZ8b0Q4Ah7DgubzHQblgZMSqgW1saW868WmooSyC5ywf8upLBkcVLDu93W9GPWUYsU2Q==" - }, - "System.Diagnostics.Contracts/4.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-HvQQjy712vnlpPxaloZYkuE78Gn353L0SJLJVeLcNASeg9c4qla2a1Xq8I7B3jZoDzKPtHTkyVO7AZ5tpeQGuA==" - }, - "System.Diagnostics.TraceSource/4.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-6WVCczFZKXwpWpzd/iJkYnsmWTSFFiU24Xx/YdHXBcu+nFI/ehTgeqdJQFbtRPzbrO3KtRNjvkhtj4t5/WwWsA==" - }, - "System.Interactive.Async/3.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-UEM+WmG1Oq0bNbPx/E1jaIQ83QOrPfVDUyuYBtG6D6DpB77ytv9flPterMujumpHuoRjSc0ilSB8w41fQc05dw==" - }, - "System.Net.WebSockets/4.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-2KJo8hir6Edi9jnMDAMhiJoI691xRBmKcbNpwjrvpIMOCTYOtBpSsSEGBxBDV7PKbasJNaFp1+PZz1D7xS41Hg==" - }, - "System.Net.WebSockets.Client/4.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-GY5h9cn0ZVsG4ORQqMytTldrqxet2RC2CSEsgWGf4XNW5jhL5SxzcUZph03xbZsgn7K3qMr+Rq+gkbJNI+FEXg==" - }, - "System.Private.DataContractSerialization/4.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-lcqFBUaCZxPiUkA4dlSOoPZGtZsAuuElH2XHgLwGLxd7ZozWetV5yiz0qGAV2AUYOqw97MtZBjbLMN16Xz4vXA==" - }, - "System.Resources.ResourceWriter/4.0.0-beta-22816": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Q6wpzkZjop1J+WJXl9H0OgXQvxDQxMkqA43AVENNW4SlTzIT8rFW7tum54xYZy3QCMKK8gIfOnVqA6VbgXRq1Q==" - }, - "System.Runtime.CompilerServices.Unsafe/4.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-LDvjxLx2fkThOFo/SC+901fJrh5artALmgzeSqnVxzvFp4q3HO8BkeLyshPdcbs5zpN7Xh9G23M6sDhgIPbG9A==" - }, - "System.Runtime.Serialization.Primitives/4.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==" - }, - "System.Runtime.Serialization.Xml/4.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-yqfKHkWUAdI0hdDIdD9KDzluKtZ8IIqLF3O7xIZlt6UTs1bOvFRpCvRTvGQva3Ak/ZM9/nq9IHBJ1tC4Ybcrjg==" - }, - "System.Text.Encodings.Web/4.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-TWZnuiJgPDAEEUfobD7njXvSVR2Toz+jvKWds6yL4oSztmKQfnWzucczjzA+6Dv1bktBdY71sZW1YN0X6m9chQ==" - }, - "System.Xml.XmlSerializer/4.0.11": { - "type": "package", - "serviceable": true, - "sha512": "sha512-FrazwwqfIXTfq23mfv4zH+BjqkSFNaNFBtjzu3I9NRmG8EELYyrv/fJnttCIwRMFRR/YKXF1hmsMmMEnl55HGw==" - }, - "VideoLibrary/1.3.4": { - "type": "package", - "serviceable": true, - "sha512": "sha512-HZ2RAE9xx/sjJGnwm8etawoJXYluaYGas4bAFpE14S62NFodNKzUf7Cm9TQ+JFJxAdY+1g1FEKk1b6FPSv9aMg==" - }, - "xunit/2.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-u/7VQSOSXa7kSG4iK6Lcn7RqKZQ3hk7cnyMNVMpXHSP0RI5VQEtc44hvkG3LyWOVsx1dhUDD3rPAHAxyOUDQJw==" - }, - "xunit.abstractions/2.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-NAdxKQRzuLnCZ0g++x6i87/8rMBpQoRiRlRNLAqfODm2zJPbteHRoSER3DXfxnqrHXyBJT8rFaZ8uveBeQyaMA==" - }, - "xunit.assert/2.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Hhhw+YaTe+BGhbr57dxVE+6VJk8BfThqFFii1XIsSZ4qx+SSCixprJC10JkiLRVSTfWyT8W/4nAf6NQgIrmBxA==" - }, - "xunit.core/2.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-jlbYdPbnkPIRwJllcT/tQZCNsSElVDEymdpJfH79uTUrPARkELVYw9o/zhAjKZXmeikGqGK5C2Yny4gTNoEu0Q==" - }, - "xunit.extensibility.core/2.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ANWM3WxeaeHjACLRlmrv+xOc0WAcr3cvIiJE+gqbdzTv1NCH4p1VDyT+8WmmdCc9db0WFiJLaDy4YTYsL1wWXw==" - }, - "xunit.extensibility.execution/2.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-tAoNafoVknKa3sZJPMvtZRnhOSk3gasEGeceSm7w/gyGwsR/OXFxndWJB1xSHeoy33d3Z6jFqn4A3j+pWCF0Ew==" - }, - "xunit.runner.reporters/2.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ja0kJrvwSiho2TRFpfHfa+6tGJI5edcyD8fdekTkjn7Us17PbGqglIihRe8sR9YFAmS4ipEC8+7CXOM/b69ENQ==" - }, - "xunit.runner.utility/2.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-jJJHROwskIhdQuYw7exe7KaW20dOCa+lzV/lY7Zdh1ZZzdUPpScMi9ReJIutqiyjhemGF8V/GaMIPrcjyZ4ioQ==" - }, - "Discord.Net/1.0.0-beta": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "Discord.Net.Commands/1.0.0-beta": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "NadekoBot/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - } - } -} \ No newline at end of file diff --git a/src/tests/bin/Debug/netcoreapp1.0/tests.dll b/src/tests/bin/Debug/netcoreapp1.0/tests.dll deleted file mode 100644 index 3961e8eacec0c60f12b96c009e6b42a2d9db3ec8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6144 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 diff --git a/src/tests/bin/Debug/netcoreapp1.0/tests.pdb b/src/tests/bin/Debug/netcoreapp1.0/tests.pdb deleted file mode 100644 index d2221260776b14b14aaf00d282b1cd20932acef1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1388 zcmZ8hOK1~O6us|t@@Y-mq_zG{OH)6H#MTe~e`!@}ZLN;ABBCafp$3yoJ8x30hzt}I zK~P*N2%>_BbkUUyL3HIpTnH{)xwjySE8X}xcV?oJf%E2_b3b$6oBLiyKbR3Dh@TiR z+?VN?>`8Zf0)^=^Yd~r^pJVMUFbnt86{5?Mh#gb9V;9O}itRJdG}cCRn#H_>=Lbgm z`|y4Teh)}xidGK%-px06F0FmuH+}Ks+G4}R+=mZyqmXHIzNGpF@~UbB4*_*R97qDq zKp5bvt2VatgY^DlXq_*h8WuRV31|e^_a)T#@D}t5*dqiT2PT0hz#Om!sr*OKJ_)?atS>d|32b?QdjQMIn!Ws(v7lN~QIN%4tHSkElUx0_eqXGX0 z9tN)u_+#)0cr4(nz#G7u0?uomSHl}?c=Lap_cdO_A$fHR>cUKV>!_nnmOZ^X`aAG% z6v1i}e?0{)_2$@R{!9Gy>Rmf_Z8>wMXc^g}>L%MPS(9d-3S?)?d8k=?H&?-RFldUg1bd_c>GvU&5om9d=kpp~x_O_d%t z?NULhf>l17_K@3&y;_ zbf{3C2%V^u3r$s zkYg%GMUU~AHdN~=ciO$`-f(ZbcisE$j63T-oBy?PzSQ<*`qz%!!iOLCp1T?E`nhTp zTP>RE1*K#(Oq~)<&@8d9^|Aq*i@uf@&~$8DA<+;Ci7sm7Asyj7W@R33rulHSIv_;Y~+Vuah zoCY*#1FRup4_^|9*wu+oX`?aPtKn?pd#$vYU645m10`sKqy>ZmTK%M67EZt?9|`no zRfvt!I*v&4iV+*5rM%*#MlHNUEi}j#3 Date: Fri, 30 Sep 2016 04:24:56 +0200 Subject: [PATCH 09/74] Actually had Leave command done in another place commented out --- .../Modules/Administration/Administration.cs | 12 --- .../Commands/PlayingRotateCommands.cs | 1 - .../Administration/Commands/SelfCommands.cs | 92 ++++++++++--------- 3 files changed, 47 insertions(+), 58 deletions(-) diff --git a/src/NadekoBot/Modules/Administration/Administration.cs b/src/NadekoBot/Modules/Administration/Administration.cs index 8541f8f2..5eca1ac9 100644 --- a/src/NadekoBot/Modules/Administration/Administration.cs +++ b/src/NadekoBot/Modules/Administration/Administration.cs @@ -711,17 +711,5 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync($"Successfuly added a new donator. Total donated amount from this user: {don.Amount} 👑").ConfigureAwait(false); } - - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] - [RequireContext(ContextType.Guild)] - [OwnerOnly] - public async Task Leave(IUserMessage imsg, [Remainder] IGuild guild) - { - var channel = (ITextChannel)imsg.Channel; - - await guild.LeaveAsync(); - - await channel.SendMessageAsync($"Left guild **{guild.Name}**\nId: `{guild.Id}`."); - } } } diff --git a/src/NadekoBot/Modules/Administration/Commands/PlayingRotateCommands.cs b/src/NadekoBot/Modules/Administration/Commands/PlayingRotateCommands.cs index 7bc44758..d482a256 100644 --- a/src/NadekoBot/Modules/Administration/Commands/PlayingRotateCommands.cs +++ b/src/NadekoBot/Modules/Administration/Commands/PlayingRotateCommands.cs @@ -13,7 +13,6 @@ using System.Text; using System.Threading; using System.Threading.Tasks; -//todo owner only namespace NadekoBot.Modules.Administration { public partial class Administration diff --git a/src/NadekoBot/Modules/Administration/Commands/SelfCommands.cs b/src/NadekoBot/Modules/Administration/Commands/SelfCommands.cs index ef6c11a6..19b80c89 100644 --- a/src/NadekoBot/Modules/Administration/Commands/SelfCommands.cs +++ b/src/NadekoBot/Modules/Administration/Commands/SelfCommands.cs @@ -1,50 +1,52 @@ -//using Discord; -//using Discord.Commands; -//using Discord.WebSocket; -//using NadekoBot.Attributes; -//using System.Linq; -//using System.Threading.Tasks; +using Discord; +using Discord.Commands; +using Discord.WebSocket; +using NadekoBot.Attributes; +using System.Linq; +using System.Threading.Tasks; -////todo owner only -//namespace NadekoBot.Modules.Administration -//{ -// public partial class Administration -// { -// [Group] -// class SelfCommands -// { -// private DiscordSocketClient _client; +//todo owner only +namespace NadekoBot.Modules.Administration +{ + public partial class Administration + { + [Group] + class SelfCommands + { + private DiscordSocketClient _client; -// public SelfCommands(DiscordSocketClient client) -// { -// this._client = client; -// } + public SelfCommands(DiscordSocketClient client) + { + this._client = client; + } -// [LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] -// [RequireContext(ContextType.Guild)] -// public async Task Leave(IUserMessage umsg, [Remainder] string guildStr) -// { -// var channel = (ITextChannel)umsg.Channel; + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + [OwnerOnly] + public async Task Leave(IUserMessage umsg, [Remainder] string guildStr) + { + var channel = (ITextChannel)umsg.Channel; -// guildStr = guildStr.ToUpperInvariant(); -// var server = _client.GetGuilds().FirstOrDefault(g => g.Id.ToString() == guildStr) ?? _client.GetGuilds().FirstOrDefault(g => g.Name.ToUpperInvariant() == guildStr); + guildStr = guildStr.Trim().ToUpperInvariant(); + var server = _client.GetGuilds().FirstOrDefault(g => g.Id.ToString().Trim().ToUpperInvariant() == guildStr) ?? + _client.GetGuilds().FirstOrDefault(g => g.Name.Trim().ToUpperInvariant() == guildStr); -// if (server == null) -// { -// await channel.SendMessageAsync("Cannot find that server").ConfigureAwait(false); -// return; -// } -// if (server.OwnerId != _client.GetCurrentUser().Id) -// { -// await server.LeaveAsync().ConfigureAwait(false); -// await channel.SendMessageAsync("Left server " + server.Name).ConfigureAwait(false); -// } -// else -// { -// await server.DeleteAsync().ConfigureAwait(false); -// await channel.SendMessageAsync("Deleted server " + server.Name).ConfigureAwait(false); -// } -// } -// } -// } -//} \ No newline at end of file + if (server == null) + { + await channel.SendMessageAsync("Cannot find that server").ConfigureAwait(false); + return; + } + if (server.OwnerId != _client.GetCurrentUser().Id) + { + await server.LeaveAsync().ConfigureAwait(false); + await channel.SendMessageAsync("Left server " + server.Name).ConfigureAwait(false); + } + else + { + await server.DeleteAsync().ConfigureAwait(false); + await channel.SendMessageAsync("Deleted server " + server.Name).ConfigureAwait(false); + } + } + } + } +} \ No newline at end of file From 46a6bddb55b0b7d68a1c76e3484ab6610807c940 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Fri, 30 Sep 2016 04:45:23 +0200 Subject: [PATCH 10/74] Fixed some minor things --- src/NadekoBot/Modules/Administration/Commands/SelfCommands.cs | 1 - src/NadekoBot/Modules/Gambling/Commands/DiceRollCommand.cs | 2 +- src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs | 2 ++ src/NadekoBot/Modules/Searches/Commands/OsuCommands.cs | 2 +- src/NadekoBot/Resources/CommandStrings.Designer.cs | 4 ++-- src/NadekoBot/Resources/CommandStrings.resx | 4 ++-- 6 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/NadekoBot/Modules/Administration/Commands/SelfCommands.cs b/src/NadekoBot/Modules/Administration/Commands/SelfCommands.cs index 19b80c89..d37c2398 100644 --- a/src/NadekoBot/Modules/Administration/Commands/SelfCommands.cs +++ b/src/NadekoBot/Modules/Administration/Commands/SelfCommands.cs @@ -5,7 +5,6 @@ using NadekoBot.Attributes; using System.Linq; using System.Threading.Tasks; -//todo owner only namespace NadekoBot.Modules.Administration { public partial class Administration diff --git a/src/NadekoBot/Modules/Gambling/Commands/DiceRollCommand.cs b/src/NadekoBot/Modules/Gambling/Commands/DiceRollCommand.cs index 24e2b4c5..9d0aa94d 100644 --- a/src/NadekoBot/Modules/Gambling/Commands/DiceRollCommand.cs +++ b/src/NadekoBot/Modules/Gambling/Commands/DiceRollCommand.cs @@ -70,7 +70,7 @@ namespace NadekoBot.Modules.Gambling arr[i] = rng.Next(1, n2 + 1); } var elemCnt = 0; - await channel.SendMessageAsync($"`{umsg.Author.Mention} rolled {n1} {(n1 == 1 ? "die" : "dice")} 1-{n2}.`\n`Result:` " + string.Join(", ", (ordered ? arr.OrderBy(x => x).AsEnumerable() : arr).Select(x => elemCnt++ % 2 == 0 ? $"**{x}**" : x.ToString()))).ConfigureAwait(false); + await channel.SendMessageAsync($"{umsg.Author.Mention} rolled {n1} {(n1 == 1 ? "die" : "dice")} 1-{n2}.\n`Result:` " + string.Join(", ", (ordered ? arr.OrderBy(x => x).AsEnumerable() : arr).Select(x => elemCnt++ % 2 == 0 ? $"**{x}**" : x.ToString()))).ConfigureAwait(false); } } } diff --git a/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs b/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs index f2474d50..d45382aa 100644 --- a/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs @@ -16,6 +16,8 @@ using System.Threading.Tasks; namespace NadekoBot.Modules.Games { + //todo make currency generation change and cooldown modifyable + //only by bot owner through commands public partial class Games { ///

diff --git a/src/NadekoBot/Modules/Searches/Commands/OsuCommands.cs b/src/NadekoBot/Modules/Searches/Commands/OsuCommands.cs index 481e250b..81afbe0e 100644 --- a/src/NadekoBot/Modules/Searches/Commands/OsuCommands.cs +++ b/src/NadekoBot/Modules/Searches/Commands/OsuCommands.cs @@ -27,7 +27,7 @@ namespace NadekoBot.Modules.Searches } [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] - public async Task Osu(IUserMessage umsg, string usr, string mode) + public async Task Osu(IUserMessage umsg, string usr, [Remainder] string mode = null) { var channel = (ITextChannel)umsg.Channel; diff --git a/src/NadekoBot/Resources/CommandStrings.Designer.cs b/src/NadekoBot/Resources/CommandStrings.Designer.cs index ffa02391..8253f6ca 100644 --- a/src/NadekoBot/Resources/CommandStrings.Designer.cs +++ b/src/NadekoBot/Resources/CommandStrings.Designer.cs @@ -2625,7 +2625,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Toggles currency generation on this channel. Every posted message will have 2% chance to spawn a NadekoFlower. Optional parameter cooldown time in minutes, 5 minutes by default. Requires Manage Messages permission.. + /// Looks up a localized string similar to Toggles currency generation on this channel. Every posted message will have 2% chance to spawn a NadekoFlower. Requires Manage Messages permission.. /// public static string gencurrency_desc { get { @@ -2634,7 +2634,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `>gc` or `>gc 60`. + /// Looks up a localized string similar to `>gc`. /// public static string gencurrency_summary { get { diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index 59917de7..ad27382f 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -1588,10 +1588,10 @@ gencurrency gc - Toggles currency generation on this channel. Every posted message will have 2% chance to spawn a NadekoFlower. Optional parameter cooldown time in minutes, 5 minutes by default. Requires Manage Messages permission. + Toggles currency generation on this channel. Every posted message will have 2% chance to spawn a NadekoFlower. Requires Manage Messages permission. - `>gc` or `>gc 60` + `>gc` leet From 0d918d39c957616b145b27d73372f46d94741323 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Fri, 30 Sep 2016 05:58:44 +0200 Subject: [PATCH 11/74] ShardedDiscordClient Implemented. I'm not feeling well --- .gitignore | 3 +- .../Modules/Administration/Administration.cs | 4 +- .../Administration/Commands/LogCommand.cs | 4 +- .../Commands/RatelimitCommand.cs | 2 +- .../Administration/Commands/SelfCommands.cs | 4 +- .../Modules/ClashOfClans/ClashOfClans.cs | 2 +- src/NadekoBot/Modules/DiscordModule.cs | 4 +- src/NadekoBot/Modules/Gambling/Gambling.cs | 2 +- .../Games/Commands/Trivia/TriviaGame.cs | 2 +- src/NadekoBot/Modules/Games/Games.cs | 4 +- src/NadekoBot/Modules/Help/Help.cs | 7 +- src/NadekoBot/Modules/Music/Music.cs | 29 +++++-- src/NadekoBot/Modules/NSFW/NSFW.cs | 2 +- .../Modules/Permissions/Permissions.cs | 2 +- src/NadekoBot/Modules/Pokemon/Pokemon.cs | 2 +- src/NadekoBot/Modules/Searches/Searches.cs | 2 +- .../Modules/Translator/Translator.cs | 2 +- src/NadekoBot/Modules/Utility/Utility.cs | 2 +- src/NadekoBot/NadekoBot.cs | 6 +- src/NadekoBot/Services/CommandHandler.cs | 4 +- src/NadekoBot/Services/Impl/StatsService.cs | 12 ++- src/NadekoBot/ShardedDiscordClient.cs | 83 +++++++++++++++++++ 22 files changed, 145 insertions(+), 39 deletions(-) create mode 100644 src/NadekoBot/ShardedDiscordClient.cs diff --git a/.gitignore b/.gitignore index df1024a7..a8e78718 100644 --- a/.gitignore +++ b/.gitignore @@ -31,4 +31,5 @@ src/NadekoBot/project.lock.json NadekoBot.sln.iml .idea/workspace.xml .idea/vcs.xml -.idea/modules.xml \ No newline at end of file +.idea/modules.xml +src/tests/bin \ No newline at end of file diff --git a/src/NadekoBot/Modules/Administration/Administration.cs b/src/NadekoBot/Modules/Administration/Administration.cs index 5eca1ac9..a3ba38df 100644 --- a/src/NadekoBot/Modules/Administration/Administration.cs +++ b/src/NadekoBot/Modules/Administration/Administration.cs @@ -22,7 +22,7 @@ namespace NadekoBot.Modules.Administration [NadekoModule("Administration", ".")] public partial class Administration : DiscordModule { - public Administration(ILocalization loc, CommandService cmds, DiscordSocketClient client) : base(loc, cmds, client) + public Administration(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client) { NadekoBot.CommandHandler.CommandExecuted += DelMsgOnCmd_Handler; } @@ -614,7 +614,7 @@ namespace NadekoBot.Modules.Administration { var channel = (ITextChannel)umsg.Channel; - foreach (var ch in (await _client.GetGuildsAsync().ConfigureAwait(false)).Select(async g => await g.GetDefaultChannelAsync().ConfigureAwait(false))) + foreach (var ch in _client.GetGuilds().Select(async g => await g.GetDefaultChannelAsync().ConfigureAwait(false))) { await channel.SendMessageAsync(message).ConfigureAwait(false); } diff --git a/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs b/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs index d985da63..b7be6999 100644 --- a/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs +++ b/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs @@ -22,7 +22,7 @@ namespace NadekoBot.Modules.Administration [Group] public class LogCommands { - private DiscordSocketClient _client { get; } + private ShardedDiscordClient _client { get; } private Logger _log { get; } private string prettyCurrentTime => $"【{DateTime.Now:HH:mm:ss}】"; @@ -33,7 +33,7 @@ namespace NadekoBot.Modules.Administration private Timer t; private IGoogleApiService _google { get; } - public LogCommands(DiscordSocketClient client, IGoogleApiService google) + public LogCommands(ShardedDiscordClient client, IGoogleApiService google) { _client = client; _google = google; diff --git a/src/NadekoBot/Modules/Administration/Commands/RatelimitCommand.cs b/src/NadekoBot/Modules/Administration/Commands/RatelimitCommand.cs index fa606adb..ee612047 100644 --- a/src/NadekoBot/Modules/Administration/Commands/RatelimitCommand.cs +++ b/src/NadekoBot/Modules/Administration/Commands/RatelimitCommand.cs @@ -17,7 +17,7 @@ namespace NadekoBot.Modules.Administration { public static ConcurrentDictionary RatelimitingChannels = new ConcurrentDictionary(); - private DiscordSocketClient _client { get; } + private ShardedDiscordClient _client { get; } public class Ratelimiter { diff --git a/src/NadekoBot/Modules/Administration/Commands/SelfCommands.cs b/src/NadekoBot/Modules/Administration/Commands/SelfCommands.cs index d37c2398..78444817 100644 --- a/src/NadekoBot/Modules/Administration/Commands/SelfCommands.cs +++ b/src/NadekoBot/Modules/Administration/Commands/SelfCommands.cs @@ -12,9 +12,9 @@ namespace NadekoBot.Modules.Administration [Group] class SelfCommands { - private DiscordSocketClient _client; + private ShardedDiscordClient _client; - public SelfCommands(DiscordSocketClient client) + public SelfCommands(ShardedDiscordClient client) { this._client = client; } diff --git a/src/NadekoBot/Modules/ClashOfClans/ClashOfClans.cs b/src/NadekoBot/Modules/ClashOfClans/ClashOfClans.cs index 04ac67aa..c643dd46 100644 --- a/src/NadekoBot/Modules/ClashOfClans/ClashOfClans.cs +++ b/src/NadekoBot/Modules/ClashOfClans/ClashOfClans.cs @@ -19,7 +19,7 @@ namespace NadekoBot.Modules.ClashOfClans { public static ConcurrentDictionary> ClashWars { get; set; } = new ConcurrentDictionary>(); - public ClashOfClans(ILocalization loc, CommandService cmds, DiscordSocketClient client) : base(loc, cmds, client) + public ClashOfClans(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client) { using (var uow = DbHandler.UnitOfWork()) { diff --git a/src/NadekoBot/Modules/DiscordModule.cs b/src/NadekoBot/Modules/DiscordModule.cs index e73d1789..5ad80226 100644 --- a/src/NadekoBot/Modules/DiscordModule.cs +++ b/src/NadekoBot/Modules/DiscordModule.cs @@ -10,11 +10,11 @@ namespace NadekoBot.Modules { protected ILocalization _l { get; } protected CommandService _commands { get; } - protected DiscordSocketClient _client { get; } + protected ShardedDiscordClient _client { get; } protected Logger _log { get; } private string _prefix { get; } - public DiscordModule(ILocalization loc, CommandService cmds, DiscordSocketClient client) + public DiscordModule(ILocalization loc, CommandService cmds, ShardedDiscordClient client) { string prefix; if (NadekoBot.ModulePrefixes.TryGetValue(this.GetType().Name, out prefix)) diff --git a/src/NadekoBot/Modules/Gambling/Gambling.cs b/src/NadekoBot/Modules/Gambling/Gambling.cs index 216b5df0..6969155f 100644 --- a/src/NadekoBot/Modules/Gambling/Gambling.cs +++ b/src/NadekoBot/Modules/Gambling/Gambling.cs @@ -21,7 +21,7 @@ namespace NadekoBot.Modules.Gambling public static string CurrencyPluralName { get; set; } public static string CurrencySign { get; set; } - public Gambling(ILocalization loc, CommandService cmds, DiscordSocketClient client) : base(loc, cmds, client) + public Gambling(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client) { using (var uow = DbHandler.UnitOfWork()) { diff --git a/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaGame.cs b/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaGame.cs index c4e960a6..c4b27ff5 100644 --- a/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaGame.cs +++ b/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaGame.cs @@ -111,7 +111,7 @@ namespace NadekoBot.Modules.Games.Trivia { if (!(umsg.Channel is IGuildChannel && umsg.Channel is ITextChannel)) return; if ((umsg.Channel as ITextChannel).Guild != guild) return; - if (umsg.Author.Id == (await NadekoBot.Client.GetCurrentUserAsync()).Id) return; + if (umsg.Author.Id == NadekoBot.Client.GetCurrentUser().Id) return; var guildUser = umsg.Author as IGuildUser; diff --git a/src/NadekoBot/Modules/Games/Games.cs b/src/NadekoBot/Modules/Games/Games.cs index ea57db12..0dbb4d58 100644 --- a/src/NadekoBot/Modules/Games/Games.cs +++ b/src/NadekoBot/Modules/Games/Games.cs @@ -23,7 +23,7 @@ namespace NadekoBot.Modules.Games } } } - public Games(ILocalization loc, CommandService cmds, DiscordSocketClient client) : base(loc, cmds, client) + public Games(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client) { } @@ -97,7 +97,7 @@ namespace NadekoBot.Modules.Games else if ((pick == 0 && nadekoPick == 1) || (pick == 1 && nadekoPick == 2) || (pick == 2 && nadekoPick == 0)) - msg = $"{(await NadekoBot.Client.GetCurrentUserAsync()).Mention} won! :{GetRPSPick(nadekoPick)}: beats :{GetRPSPick(pick)}:"; + msg = $"{NadekoBot.Client.GetCurrentUser().Mention} won! :{GetRPSPick(nadekoPick)}: beats :{GetRPSPick(pick)}:"; else msg = $"{umsg.Author.Mention} won! :{GetRPSPick(pick)}: beats :{GetRPSPick(nadekoPick)}:"; diff --git a/src/NadekoBot/Modules/Help/Help.cs b/src/NadekoBot/Modules/Help/Help.cs index 4a36bd43..bb6fcd65 100644 --- a/src/NadekoBot/Modules/Help/Help.cs +++ b/src/NadekoBot/Modules/Help/Help.cs @@ -23,7 +23,7 @@ namespace NadekoBot.Modules.Help return str + String.Format(str, NadekoBot.Credentials.ClientId); } } - public Help(ILocalization loc, CommandService cmds, DiscordSocketClient client) : base(loc, cmds, client) + public Help(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client) { } @@ -99,7 +99,7 @@ namespace NadekoBot.Modules.Help [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] [OwnerOnly] - public async Task Hgit(IUserMessage umsg) + public Task Hgit(IUserMessage umsg) { var helpstr = new StringBuilder(); @@ -115,12 +115,13 @@ namespace NadekoBot.Modules.Help } helpstr.AppendLine($"`{com.Text}` {string.Join(" ", com.Aliases.Skip(1).Select(a=>"`"+a+"`"))} | {com.Remarks} | {com.Summary}"); } - helpstr = helpstr.Replace((await NadekoBot.Client.GetCurrentUserAsync()).Username , "@BotName"); + helpstr = helpstr.Replace(NadekoBot.Client.GetCurrentUser().Username , "@BotName"); #if DEBUG File.WriteAllText("../../../../../docs/Commands List.md", helpstr.ToString()); #else File.WriteAllText("commandlist.md", helpstr.ToString()); #endif + return Task.CompletedTask; } [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] diff --git a/src/NadekoBot/Modules/Music/Music.cs b/src/NadekoBot/Modules/Music/Music.cs index b9ad5fd6..abc9702d 100644 --- a/src/NadekoBot/Modules/Music/Music.cs +++ b/src/NadekoBot/Modules/Music/Music.cs @@ -25,7 +25,7 @@ namespace NadekoBot.Modules.Music public const string MusicDataPath = "data/musicdata"; private IGoogleApiService _google; - public Music(ILocalization loc, CommandService cmds, DiscordSocketClient client, IGoogleApiService google) : base(loc, cmds, client) + public Music(ILocalization loc, CommandService cmds, ShardedDiscordClient client, IGoogleApiService google) : base(loc, cmds, client) { //it can fail if its currenctly opened or doesn't exist. Either way i don't care try { Directory.Delete(MusicDataPath, true); } catch { } @@ -520,16 +520,33 @@ namespace NadekoBot.Modules.Music await channel.SendMessageAsync($"🎵🔁`Repeat playlist {(currentValue ? "enabled" : "disabled")}`").ConfigureAwait(false); } - /// - //[LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + //[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] //[RequireContext(ContextType.Guild)] //public async Task Save(IUserMessage umsg, [Remainder] string name) //{ // var channel = (ITextChannel)umsg.Channel; + // MusicPlayer musicPlayer; + // if (!MusicPlayers.TryGetValue(channel.Guild.Id, out musicPlayer)) + // return; + // var curSong = musicPlayer.CurrentSong; + // var items = musicPlayer.Playlist.Append(curSong); + + // MusicPlaylist playlist; + // using (var uow = DbHandler.UnitOfWork()) + // { + // playlist = new MusicPlaylist + // { + // Name = name, + // Songs = items.ToList() + // }; + // uow.MusicPlaylists.Add(playlist); + // } + + // await channel.SendMessageAsync($"Playlist saved as {name}, id: {playlist.Id}."); //} - //[LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + //[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] //[RequireContext(ContextType.Guild)] //public async Task Load(IUserMessage umsg, [Remainder] string name) //{ @@ -537,7 +554,7 @@ namespace NadekoBot.Modules.Music //} - //[LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + //[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] //[RequireContext(ContextType.Guild)] //public async Task Playlists(IUserMessage umsg, [Remainder] string num) //{ @@ -545,7 +562,7 @@ namespace NadekoBot.Modules.Music //} - //[LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] + //[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] //[RequireContext(ContextType.Guild)] //public async Task DeletePlaylist(IUserMessage umsg, [Remainder] string pl) //{ diff --git a/src/NadekoBot/Modules/NSFW/NSFW.cs b/src/NadekoBot/Modules/NSFW/NSFW.cs index 3b7a6e62..f64686d9 100644 --- a/src/NadekoBot/Modules/NSFW/NSFW.cs +++ b/src/NadekoBot/Modules/NSFW/NSFW.cs @@ -18,7 +18,7 @@ namespace NadekoBot.Modules.NSFW [NadekoModule("NSFW", "~")] public class NSFW : DiscordModule { - public NSFW(ILocalization loc, CommandService cmds, DiscordSocketClient client) : base(loc, cmds, client) + public NSFW(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client) { } diff --git a/src/NadekoBot/Modules/Permissions/Permissions.cs b/src/NadekoBot/Modules/Permissions/Permissions.cs index 17227d3a..087d3755 100644 --- a/src/NadekoBot/Modules/Permissions/Permissions.cs +++ b/src/NadekoBot/Modules/Permissions/Permissions.cs @@ -17,7 +17,7 @@ namespace NadekoBot.Modules.Permissions [NadekoModule("Permissions", ";")] public class Permissions : DiscordModule { - public Permissions(ILocalization loc, CommandService cmds, DiscordSocketClient client) : base(loc, cmds, client) + public Permissions(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client) { } diff --git a/src/NadekoBot/Modules/Pokemon/Pokemon.cs b/src/NadekoBot/Modules/Pokemon/Pokemon.cs index 870aa482..1633252e 100644 --- a/src/NadekoBot/Modules/Pokemon/Pokemon.cs +++ b/src/NadekoBot/Modules/Pokemon/Pokemon.cs @@ -10,7 +10,7 @@ namespace NadekoBot.Modules.Games [Module(">", AppendSpace = false)] public partial class Pokemon : DiscordModule { - public Pokemon(ILocalization loc, CommandService cmds, DiscordSocketClient client) : base(loc, cmds, client) + public Pokemon(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client) { } diff --git a/src/NadekoBot/Modules/Searches/Searches.cs b/src/NadekoBot/Modules/Searches/Searches.cs index cb886063..06ab3933 100644 --- a/src/NadekoBot/Modules/Searches/Searches.cs +++ b/src/NadekoBot/Modules/Searches/Searches.cs @@ -25,7 +25,7 @@ namespace NadekoBot.Modules.Searches { private IGoogleApiService _google { get; } - public Searches(ILocalization loc, CommandService cmds, DiscordSocketClient client, IGoogleApiService youtube) : base(loc, cmds, client) + public Searches(ILocalization loc, CommandService cmds, ShardedDiscordClient client, IGoogleApiService youtube) : base(loc, cmds, client) { _google = youtube; } diff --git a/src/NadekoBot/Modules/Translator/Translator.cs b/src/NadekoBot/Modules/Translator/Translator.cs index 4d66a7a6..bc0d6c8d 100644 --- a/src/NadekoBot/Modules/Translator/Translator.cs +++ b/src/NadekoBot/Modules/Translator/Translator.cs @@ -12,7 +12,7 @@ namespace NadekoBot.Modules.Translator [NadekoModule("Translator", "~")] public class Translator : DiscordModule { - public Translator(ILocalization loc, CommandService cmds, DiscordSocketClient client) : base(loc, cmds, client) + public Translator(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client) { } diff --git a/src/NadekoBot/Modules/Utility/Utility.cs b/src/NadekoBot/Modules/Utility/Utility.cs index 2614faea..32f37096 100644 --- a/src/NadekoBot/Modules/Utility/Utility.cs +++ b/src/NadekoBot/Modules/Utility/Utility.cs @@ -18,7 +18,7 @@ namespace NadekoBot.Modules.Utility [NadekoModule("Utility", ".")] public partial class Utility : DiscordModule { - public Utility(ILocalization loc, CommandService cmds, DiscordSocketClient client) : base(loc, cmds, client) + public Utility(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client) { } diff --git a/src/NadekoBot/NadekoBot.cs b/src/NadekoBot/NadekoBot.cs index 63413e9b..9d4b0985 100644 --- a/src/NadekoBot/NadekoBot.cs +++ b/src/NadekoBot/NadekoBot.cs @@ -26,7 +26,7 @@ namespace NadekoBot public static CommandService CommandService { get; private set; } public static CommandHandler CommandHandler { get; private set; } - public static DiscordSocketClient Client { get; private set; } + public static ShardedDiscordClient Client { get; private set; } public static Localization Localizer { get; private set; } public static BotCredentials Credentials { get; private set; } @@ -43,7 +43,7 @@ namespace NadekoBot _log.Info("Starting NadekoBot v" + typeof(NadekoBot).GetTypeInfo().Assembly.GetCustomAttribute().InformationalVersion); //create client - Client = new DiscordSocketClient(new DiscordSocketConfig + Client = new ShardedDiscordClient (new DiscordSocketConfig { AudioMode = Discord.Audio.AudioMode.Outgoing, MessageCacheSize = 10, @@ -61,7 +61,7 @@ namespace NadekoBot //setup DI var depMap = new DependencyMap(); depMap.Add(Localizer); - depMap.Add(Client); + depMap.Add(Client); depMap.Add(CommandService); depMap.Add(Google); diff --git a/src/NadekoBot/Services/CommandHandler.cs b/src/NadekoBot/Services/CommandHandler.cs index 01c18b59..7a562ca7 100644 --- a/src/NadekoBot/Services/CommandHandler.cs +++ b/src/NadekoBot/Services/CommandHandler.cs @@ -18,13 +18,13 @@ namespace NadekoBot.Services { public class CommandHandler { - private DiscordSocketClient _client; + private ShardedDiscordClient _client; private CommandService _commandService; private Logger _log; public event EventHandler CommandExecuted = delegate { }; - public CommandHandler(DiscordSocketClient client, CommandService commandService) + public CommandHandler(ShardedDiscordClient client, CommandService commandService) { _client = client; _commandService = commandService; diff --git a/src/NadekoBot/Services/Impl/StatsService.cs b/src/NadekoBot/Services/Impl/StatsService.cs index 3d33bb9f..a2ec5b65 100644 --- a/src/NadekoBot/Services/Impl/StatsService.cs +++ b/src/NadekoBot/Services/Impl/StatsService.cs @@ -13,7 +13,7 @@ namespace NadekoBot.Services.Impl public class StatsService : IStatsService { private int messageCounter; - private DiscordSocketClient client; + private ShardedDiscordClient client; private DateTime started; private int commandsRan = 0; @@ -22,7 +22,7 @@ namespace NadekoBot.Services.Impl public string Heap => Math.Round((double)GC.GetTotalMemory(false) / 1.MiB(), 2).ToString(); - public StatsService(DiscordSocketClient client, CommandHandler cmdHandler) + public StatsService(ShardedDiscordClient client, CommandHandler cmdHandler) { this.client = client; @@ -33,14 +33,18 @@ namespace NadekoBot.Services.Impl this.client.Disconnected += _ => Reset(); } - public Task Print() => Task.FromResult($@"`Author: Kwoth` `Library: Discord.Net` + public Task Print() + { + var curUser = client.GetCurrentUser(); + return Task.FromResult($@"`Author: Kwoth` `Library: Discord.Net` `Bot Version: {BotVersion}` -`Bot id: {(client.GetCurrentUser()).Id}` +`Bot id: {curUser.Id}` `Owners' Ids: {string.Join(", ", NadekoBot.Credentials.OwnerIds)}` `Uptime: {GetUptimeString()}` `Servers: {client.GetGuilds().Count} | TextChannels: {client.GetGuilds().SelectMany(g => g.GetChannels().Where(c => c is ITextChannel)).Count()} | VoiceChannels: {client.GetGuilds().SelectMany(g => g.GetChannels().Where(c => c is IVoiceChannel)).Count()}` `Commands Ran this session: {commandsRan}` `Messages: {messageCounter} ({messageCounter / (double)GetUptime().TotalSeconds:F2}/sec)` `Heap: {Heap} MB`"); + } public Task Reset() { diff --git a/src/NadekoBot/ShardedDiscordClient.cs b/src/NadekoBot/ShardedDiscordClient.cs new file mode 100644 index 00000000..6e454a4e --- /dev/null +++ b/src/NadekoBot/ShardedDiscordClient.cs @@ -0,0 +1,83 @@ +using Discord; +using Discord.WebSocket; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Discord.API; +using Discord.Logging; +using System.IO; + +namespace NadekoBot +{ + public class ShardedDiscordClient + { + private DiscordSocketConfig discordSocketConfig; + + public Func UserJoined { get; internal set; } = delegate { return Task.CompletedTask; }; + public Func MessageReceived { get; internal set; } = delegate { return Task.CompletedTask; }; + public Func UserLeft { get; internal set; } = delegate { return Task.CompletedTask; }; + public Func UserUpdated { get; internal set; } = delegate { return Task.CompletedTask; }; + public Func, IMessage, Task> MessageUpdated { get; internal set; } = delegate { return Task.CompletedTask; }; + public Func, Task> MessageDeleted { get; internal set; } = delegate { return Task.CompletedTask; }; + public Func UserBanned { get; internal set; } = delegate { return Task.CompletedTask; }; + public Func UserUnbanned { get; internal set; } = delegate { return Task.CompletedTask; }; + public Func UserPresenceUpdated { get; internal set; } = delegate { return Task.CompletedTask; }; + public Func UserVoiceStateUpdated { get; internal set; } = delegate { return Task.CompletedTask; }; + public Func ChannelCreated { get; internal set; } = delegate { return Task.CompletedTask; }; + public Func ChannelDestroyed { get; internal set; } = delegate { return Task.CompletedTask; }; + public Func ChannelUpdated { get; internal set; } = delegate { return Task.CompletedTask; }; + public Func Disconnected { get; internal set; } = delegate { return Task.CompletedTask; }; + + private IReadOnlyList Clients { get; } + + public ShardedDiscordClient (DiscordSocketConfig discordSocketConfig) + { + this.discordSocketConfig = discordSocketConfig; + + var clientList = new List(); + for (int i = 0; i < discordSocketConfig.TotalShards; i++) + { + discordSocketConfig.ShardId = i; + var client = new DiscordSocketClient(discordSocketConfig); + clientList.Add(client); + client.UserJoined += async arg1 => await UserJoined(arg1); + client.MessageReceived += async arg1 => await MessageReceived(arg1); + client.UserLeft += async arg1 => await UserLeft(arg1); + client.UserUpdated += async (arg1, gu2) => await UserUpdated(arg1, gu2); + client.MessageUpdated += async (arg1, m2) => await MessageUpdated(arg1, m2); + client.MessageDeleted += async (arg1, arg2) => await MessageDeleted(arg1, arg2); + client.UserBanned += async (arg1, arg2) => await UserBanned(arg1, arg2); + client.UserPresenceUpdated += async (arg1, arg2, arg3) => await UserPresenceUpdated(arg1, arg2, arg3); + client.UserVoiceStateUpdated += async (arg1, arg2, arg3) => await UserVoiceStateUpdated(arg1, arg2, arg3); + client.ChannelCreated += async arg => await ChannelCreated(arg); + client.ChannelDestroyed += async arg => await ChannelDestroyed(arg); + client.ChannelUpdated += async (arg1, arg2) => await ChannelUpdated(arg1, arg2); + } + + Clients = clientList.AsReadOnly(); + } + + public ISelfUser GetCurrentUser() => + Clients.Select(c => c.GetCurrentUser()).FirstOrDefault(u => u != null); + + public IReadOnlyCollection GetGuilds() => + Clients.SelectMany(c => c.GetGuilds()).ToArray(); + + public IGuild GetGuild(ulong id) => + Clients.Select(c => c.GetGuild(id)).FirstOrDefault(g => g != null); + + public Task GetDMChannelAsync(ulong channelId) => + Clients.Select(async c => await c.GetDMChannelAsync(channelId).ConfigureAwait(false)).FirstOrDefault(c => c != null); + + internal Task LoginAsync(TokenType tokenType, string token) => + Task.WhenAll(Clients.Select(c => c.LoginAsync(tokenType, token))); + + internal Task ConnectAsync() => + Task.WhenAll(Clients.Select(c => c.ConnectAsync())); + + internal Task DownloadAllUsersAsync() => + Task.WhenAll(Clients.Select(c => c.DownloadAllUsersAsync())); + } +} From 3f168a21f104f8e3812b19bb06792622f9451f26 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Fri, 30 Sep 2016 17:16:30 +0200 Subject: [PATCH 12/74] Permissions now friendly to custom reactions (soon:tm:) --- src/NadekoBot/Modules/Help/Help.cs | 15 +++++++++++++-- .../Permissions/PermissionExtensions.cs | 19 +++++++++++++------ src/NadekoBot/Services/CommandHandler.cs | 2 +- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/NadekoBot/Modules/Help/Help.cs b/src/NadekoBot/Modules/Help/Help.cs index bb6fcd65..adfabeee 100644 --- a/src/NadekoBot/Modules/Help/Help.cs +++ b/src/NadekoBot/Modules/Help/Help.cs @@ -19,8 +19,19 @@ namespace NadekoBot.Modules.Help { public string HelpString { get { - var str = "To add me to your server, use this link -> \n"; - return str + String.Format(str, NadekoBot.Credentials.ClientId); + var str = @"To add me to your server, use this link -> +You can use `{1}modules` command to see a list of all modules. +You can use `{1}commands ModuleName` +(for example `{1}commands Administration`) to see a list of all of the commands in that module. +For a specific command help, use {1}h ""Command name"" (for example {1}h !!q) + + +**LIST OF COMMANDS CAN BE FOUND ON THIS LINK** + + + +Nadeko Support Server: https://discord.gg/0ehQwTK2RBjAxzEY"; + return String.Format(str, NadekoBot.Credentials.ClientId, NadekoBot.ModulePrefixes[typeof(Help).Name]); } } public Help(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client) diff --git a/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs b/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs index 70905eaf..6a39a9ff 100644 --- a/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs +++ b/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs @@ -17,10 +17,17 @@ namespace NadekoBot.Modules.Permissions { var perms = permsEnumerable as List ?? permsEnumerable.ToList(); int throwaway; - return perms.CheckPermissions(message, command, out throwaway); + return perms.CheckPermissions(message, command.Name, command.Module.Name, out throwaway); } - public static bool CheckPermissions(this IEnumerable permsEnumerable, IUserMessage message, Command command, out int permIndex) + public static bool CheckPermissions(this IEnumerable permsEnumerable, IUserMessage message, string commandName, string moduleName) + { + var perms = permsEnumerable as List ?? permsEnumerable.ToList(); + int throwaway; + return perms.CheckPermissions(message, commandName, moduleName, out throwaway); + } + + public static bool CheckPermissions(this IEnumerable permsEnumerable, IUserMessage message, string commandName, string moduleName, out int permIndex) { var perms = permsEnumerable as List ?? permsEnumerable.ToList(); @@ -28,7 +35,7 @@ namespace NadekoBot.Modules.Permissions { var perm = perms[i]; - var result = perm.CheckPermission(message, command); + var result = perm.CheckPermission(message, commandName, moduleName); if (result == null) { @@ -47,12 +54,12 @@ namespace NadekoBot.Modules.Permissions //null = not applicable //true = applicable, allowed //false = applicable, not allowed - public static bool? CheckPermission(this Permission perm, IUserMessage message, Command command) + public static bool? CheckPermission(this Permission perm, IUserMessage message, string commandName, string moduleName) { if (!((perm.SecondaryTarget == SecondaryPermissionType.Command && - perm.SecondaryTargetName.ToLowerInvariant() == command.Text.ToLowerInvariant()) || + perm.SecondaryTargetName.ToLowerInvariant() == commandName.ToLowerInvariant()) || (perm.SecondaryTarget == SecondaryPermissionType.Module && - perm.SecondaryTargetName.ToLowerInvariant() == command.Module.Name.ToLowerInvariant()) || + perm.SecondaryTargetName.ToLowerInvariant() == moduleName.ToLowerInvariant()) || perm.SecondaryTarget == SecondaryPermissionType.AllModules)) return null; diff --git a/src/NadekoBot/Services/CommandHandler.cs b/src/NadekoBot/Services/CommandHandler.cs index 7a562ca7..0a7f6372 100644 --- a/src/NadekoBot/Services/CommandHandler.cs +++ b/src/NadekoBot/Services/CommandHandler.cs @@ -164,7 +164,7 @@ namespace NadekoBot.Services if (guild != null) { int index; - if (!rootPerm.AsEnumerable().CheckPermissions(message, cmd, out index)) + if (!rootPerm.AsEnumerable().CheckPermissions(message, cmd.Name, cmd.Module.Name, out index)) { var returnMsg = $"Permission number #{index} **{rootPerm.GetAt(index).GetCommand()}** is preventing this action."; return new Tuple(cmd, SearchResult.FromError(CommandError.Exception, returnMsg)); From ecdc744769aa0d24b083db9603d15bbd1d783157 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Fri, 30 Sep 2016 17:24:25 +0200 Subject: [PATCH 13/74] A bit better logging of errors in commandhandler --- src/NadekoBot/Services/CommandHandler.cs | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/NadekoBot/Services/CommandHandler.cs b/src/NadekoBot/Services/CommandHandler.cs index 0a7f6372..75f43088 100644 --- a/src/NadekoBot/Services/CommandHandler.cs +++ b/src/NadekoBot/Services/CommandHandler.cs @@ -101,17 +101,11 @@ namespace NadekoBot.Services } } } - catch (InvalidOperationException ex) + catch (Exception ex) { - Console.WriteLine(ex); - } - catch (SqliteException ex) - { - Console.WriteLine(ex.InnerException); - } - catch (HttpException ex) - { - Console.WriteLine(ex); + _log.Warn(ex, "Error in CommandHandler"); + if(ex.InnerException != null) + _log.Warn(ex.InnerException, "Inner Exception of the error in CommandHandler"); } }); From b7198ea0ed989a7d212b02f34a579c33c04b4a43 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Fri, 30 Sep 2016 19:43:48 +0200 Subject: [PATCH 14/74] Some help commands, and $$$ can now be ran in the DM --- src/NadekoBot/Modules/Gambling/Gambling.cs | 3 +-- src/NadekoBot/Modules/Help/Help.cs | 14 +++++--------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/NadekoBot/Modules/Gambling/Gambling.cs b/src/NadekoBot/Modules/Gambling/Gambling.cs index 6969155f..333a8bcc 100644 --- a/src/NadekoBot/Modules/Gambling/Gambling.cs +++ b/src/NadekoBot/Modules/Gambling/Gambling.cs @@ -48,10 +48,9 @@ namespace NadekoBot.Modules.Gambling } [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] - [RequireContext(ContextType.Guild)] public async Task Cash(IUserMessage umsg, [Remainder] IUser user = null) { - var channel = (ITextChannel)umsg.Channel; + var channel = umsg.Channel; user = user ?? umsg.Author; long amount; diff --git a/src/NadekoBot/Modules/Help/Help.cs b/src/NadekoBot/Modules/Help/Help.cs index adfabeee..5dc88748 100644 --- a/src/NadekoBot/Modules/Help/Help.cs +++ b/src/NadekoBot/Modules/Help/Help.cs @@ -23,7 +23,7 @@ namespace NadekoBot.Modules.Help You can use `{1}modules` command to see a list of all modules. You can use `{1}commands ModuleName` (for example `{1}commands Administration`) to see a list of all of the commands in that module. -For a specific command help, use {1}h ""Command name"" (for example {1}h !!q) +For a specific command help, use `{1}h CommandName` (for example {1}h !!q) **LIST OF COMMANDS CAN BE FOUND ON THIS LINK** @@ -39,20 +39,17 @@ Nadeko Support Server: https://discord.gg/0ehQwTK2RBjAxzEY"; } [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] - [RequireContext(ContextType.Guild)] public async Task Modules(IUserMessage umsg) { - var channel = (ITextChannel)umsg.Channel; - await channel.SendMessageAsync("`List of modules:` ```xl\n• " + string.Join("\n• ", _commands.Modules.Select(m => m.Name)) + $"\n``` `Type \"-commands module_name\" to get a list of commands in that module.`") + await umsg.Channel.SendMessageAsync("`List of modules:` ```xl\n• " + string.Join("\n• ", _commands.Modules.Select(m => m.Name)) + $"\n``` `Type \"-commands module_name\" to get a list of commands in that module.`") .ConfigureAwait(false); } [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] - [RequireContext(ContextType.Guild)] public async Task Commands(IUserMessage umsg, [Remainder] string module = null) { - var channel = (ITextChannel)umsg.Channel; + var channel = umsg.Channel; module = module?.Trim().ToUpperInvariant(); if (string.IsNullOrWhiteSpace(module)) @@ -76,14 +73,13 @@ Nadeko Support Server: https://discord.gg/0ehQwTK2RBjAxzEY"; { await channel.SendMessageAsync("`List Of Commands:`\n• " + string.Join("\n• ", cmdsArray.Select(c => $"{c.Text}"))); } - await channel.SendMessageAsync($"`You can type \"-h command_name\" to see the help about that specific command.`").ConfigureAwait(false); + await channel.SendMessageAsync($"`You can type \"{NadekoBot.ModulePrefixes[typeof(Help).Name]}h CommandName\" to see the help about that specific command.`").ConfigureAwait(false); } [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] - [RequireContext(ContextType.Guild)] public async Task H(IUserMessage umsg, [Remainder] string comToFind = null) { - var channel = (ITextChannel)umsg.Channel; + var channel = umsg.Channel; comToFind = comToFind?.ToLowerInvariant(); if (string.IsNullOrWhiteSpace(comToFind)) From 80e749a1a1b0b96e4283735aeca0c5ee0f2c2eba Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sat, 1 Oct 2016 05:49:05 +0200 Subject: [PATCH 15/74] Playlist loading, saving and listing done --- .../NadekoSqliteContextModelSnapshot.cs | 45 +++++++ .../Modules/Administration/Administration.cs | 9 +- src/NadekoBot/Modules/Help/Help.cs | 3 +- .../Modules/Music/Classes/MusicControls.cs | 2 +- src/NadekoBot/Modules/Music/Music.cs | 116 +++++++++++++----- src/NadekoBot/NadekoBot.cs | 6 +- src/NadekoBot/Services/CommandHandler.cs | 23 ++-- .../Services/Database/NadekoContext.cs | 1 + src/NadekoBot/Services/Database/UnitOfWork.cs | 4 + src/NadekoBot/Services/Impl/BotCredentials.cs | 3 + 10 files changed, 162 insertions(+), 50 deletions(-) diff --git a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs index 210b97e9..949720d0 100644 --- a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs +++ b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs @@ -356,6 +356,20 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.ToTable("MusicPlaylists"); + }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => { b.Property("Id") @@ -397,6 +411,30 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + 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.Services.Database.Models.Quote", b => { b.Property("Id") @@ -588,6 +626,13 @@ namespace NadekoBot.Migrations .HasForeignKey("BotConfigId"); }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + { + b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + .WithMany("Songs") + .HasForeignKey("MusicPlaylistId"); + }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => { b.HasOne("NadekoBot.Services.Database.Models.BotConfig") diff --git a/src/NadekoBot/Modules/Administration/Administration.cs b/src/NadekoBot/Modules/Administration/Administration.cs index a3ba38df..e82aa16f 100644 --- a/src/NadekoBot/Modules/Administration/Administration.cs +++ b/src/NadekoBot/Modules/Administration/Administration.cs @@ -614,10 +614,11 @@ namespace NadekoBot.Modules.Administration { var channel = (ITextChannel)umsg.Channel; - foreach (var ch in _client.GetGuilds().Select(async g => await g.GetDefaultChannelAsync().ConfigureAwait(false))) - { - await channel.SendMessageAsync(message).ConfigureAwait(false); - } + var channels = await Task.WhenAll(_client.GetGuilds().Select(g => + g.GetDefaultChannelAsync() + )).ConfigureAwait(false); + + await Task.WhenAll(channels.Select(c => c.SendMessageAsync($"`Message from {umsg.Author} (Bot Owner):` " + message))); await channel.SendMessageAsync(":ok:").ConfigureAwait(false); } diff --git a/src/NadekoBot/Modules/Help/Help.cs b/src/NadekoBot/Modules/Help/Help.cs index 5dc88748..f4c2dbcc 100644 --- a/src/NadekoBot/Modules/Help/Help.cs +++ b/src/NadekoBot/Modules/Help/Help.cs @@ -84,7 +84,8 @@ Nadeko Support Server: https://discord.gg/0ehQwTK2RBjAxzEY"; comToFind = comToFind?.ToLowerInvariant(); if (string.IsNullOrWhiteSpace(comToFind)) { - await (await (umsg.Author as IGuildUser).CreateDMChannelAsync()).SendMessageAsync(HelpString).ConfigureAwait(false); + IMessageChannel ch = channel is ITextChannel ? await ((IGuildUser)umsg.Author).CreateDMChannelAsync() : channel; + await ch.SendMessageAsync(HelpString).ConfigureAwait(false); return; } var com = _commands.Commands.FirstOrDefault(c => c.Text.ToLowerInvariant() == comToFind || c.Aliases.Select(a=>a.ToLowerInvariant()).Contains(comToFind)); diff --git a/src/NadekoBot/Modules/Music/Classes/MusicControls.cs b/src/NadekoBot/Modules/Music/Classes/MusicControls.cs index 233bca09..fa4e2302 100644 --- a/src/NadekoBot/Modules/Music/Classes/MusicControls.cs +++ b/src/NadekoBot/Modules/Music/Classes/MusicControls.cs @@ -252,7 +252,7 @@ namespace NadekoBot.Modules.Music.Classes playlist.Clear(); if (!SongCancelSource.IsCancellationRequested) SongCancelSource.Cancel(); - await audioClient.DisconnectAsync(); + await audioClient.DisconnectAsync(); }); } diff --git a/src/NadekoBot/Modules/Music/Music.cs b/src/NadekoBot/Modules/Music/Music.cs index abc9702d..21e8e26f 100644 --- a/src/NadekoBot/Modules/Music/Music.cs +++ b/src/NadekoBot/Modules/Music/Music.cs @@ -14,6 +14,7 @@ using System.Net.Http; using Newtonsoft.Json.Linq; using System.Collections.Generic; using NadekoBot.Services.Database; +using NadekoBot.Services.Database.Models; namespace NadekoBot.Modules.Music { @@ -520,48 +521,95 @@ namespace NadekoBot.Modules.Music await channel.SendMessageAsync($"🎵🔁`Repeat playlist {(currentValue ? "enabled" : "disabled")}`").ConfigureAwait(false); } - //[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] - //[RequireContext(ContextType.Guild)] - //public async Task Save(IUserMessage umsg, [Remainder] string name) - //{ - // var channel = (ITextChannel)umsg.Channel; - // MusicPlayer musicPlayer; - // if (!MusicPlayers.TryGetValue(channel.Guild.Id, out musicPlayer)) - // return; + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task Save(IUserMessage umsg, [Remainder] string name) + { + var channel = (ITextChannel)umsg.Channel; + MusicPlayer musicPlayer; + if (!MusicPlayers.TryGetValue(channel.Guild.Id, out musicPlayer)) + return; - // var curSong = musicPlayer.CurrentSong; - // var items = musicPlayer.Playlist.Append(curSong); + var curSong = musicPlayer.CurrentSong; + var songs = musicPlayer.Playlist.Append(curSong) + .Select(s=> new PlaylistSong() { + Provider = s.SongInfo.Provider, + ProviderType = s.SongInfo.ProviderType, + Title = s.SongInfo.Title, + Uri = s.SongInfo.Uri, + Query = s.SongInfo.Query, + }).ToList(); - // MusicPlaylist playlist; - // using (var uow = DbHandler.UnitOfWork()) - // { - // playlist = new MusicPlaylist - // { - // Name = name, - // Songs = items.ToList() - // }; - // uow.MusicPlaylists.Add(playlist); - // } + MusicPlaylist playlist; + using (var uow = DbHandler.UnitOfWork()) + { + playlist = new MusicPlaylist + { + Name = name, + Author = umsg.Author.Username, + Songs = songs, + }; + uow.MusicPlaylists.Add(playlist); + await uow.CompleteAsync().ConfigureAwait(false); + } - // await channel.SendMessageAsync($"Playlist saved as {name}, id: {playlist.Id}."); - //} + await channel.SendMessageAsync(($"🎵 `Saved playlist as {name}.` `Id: {playlist.Id}`")).ConfigureAwait(false); + } - //[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] - //[RequireContext(ContextType.Guild)] - //public async Task Load(IUserMessage umsg, [Remainder] string name) - //{ - // var channel = (ITextChannel)umsg.Channel; + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task Load(IUserMessage umsg, [Remainder] int id) + { + var channel = (ITextChannel)umsg.Channel; - //} + MusicPlaylist mpl; + using (var uow = DbHandler.UnitOfWork()) + { + mpl = uow.MusicPlaylists.GetWithSongs(id); + } - //[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] - //[RequireContext(ContextType.Guild)] - //public async Task Playlists(IUserMessage umsg, [Remainder] string num) - //{ - // var channel = (ITextChannel)umsg.Channel; + if (mpl == null) + { + await channel.SendMessageAsync("Can't find playlist with that ID").ConfigureAwait(false); + return; + } - //} + var msg = await channel.SendMessageAsync($"`Attempting to load {mpl.Songs.Count} songs...`").ConfigureAwait(false); + foreach (var item in mpl.Songs) + { + try + { + var usr = (IGuildUser)umsg.Author; + await QueueSong(usr, channel, usr.VoiceChannel, item.Query, true, item.ProviderType).ConfigureAwait(false); + } + catch { break; } + } + await msg.ModifyAsync(m => m.Content = $"`Done loading playlist {mpl.Name}.`").ConfigureAwait(false); + } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task Playlists(IUserMessage umsg, [Remainder] int num = 1) + { + var channel = (ITextChannel)umsg.Channel; + + if (num <= 0) + return; + + List playlists; + + using (var uow = DbHandler.UnitOfWork()) + { + playlists = uow.MusicPlaylists.GetPlaylistsOnPage(num); + } + + await channel.SendMessageAsync($@"`Page {num} of saved playlists` + +" + string.Join("\n", playlists.Select(r => $"`#{r.Id}` - `{r.Name}` by {r.Author} - **{r.Songs.Count}** songs"))).ConfigureAwait(false); + } + + //todo only author or owner //[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] //[RequireContext(ContextType.Guild)] //public async Task DeletePlaylist(IUserMessage umsg, [Remainder] string pl) diff --git a/src/NadekoBot/NadekoBot.cs b/src/NadekoBot/NadekoBot.cs index 9d4b0985..bf26ad28 100644 --- a/src/NadekoBot/NadekoBot.cs +++ b/src/NadekoBot/NadekoBot.cs @@ -42,16 +42,20 @@ namespace NadekoBot _log.Info("Starting NadekoBot v" + typeof(NadekoBot).GetTypeInfo().Assembly.GetCustomAttribute().InformationalVersion); + + Credentials = new BotCredentials(); + //create client Client = new ShardedDiscordClient (new DiscordSocketConfig { AudioMode = Discord.Audio.AudioMode.Outgoing, MessageCacheSize = 10, LogLevel = LogSeverity.Warning, + TotalShards = Credentials.TotalShards, + ConnectionTimeout = 60000 }); //initialize Services - Credentials = new BotCredentials(); CommandService = new CommandService(); Localizer = new Localization(); Google = new GoogleApiService(); diff --git a/src/NadekoBot/Services/CommandHandler.cs b/src/NadekoBot/Services/CommandHandler.cs index 75f43088..1a4e65f9 100644 --- a/src/NadekoBot/Services/CommandHandler.cs +++ b/src/NadekoBot/Services/CommandHandler.cs @@ -43,22 +43,27 @@ namespace NadekoBot.Services var throwaway = Task.Run(async () => { - var sw = new Stopwatch(); + var sw = new Stopwatch(); sw.Start(); try { - bool verbose; - Permission rootPerm; - string permRole; - using (var uow = DbHandler.UnitOfWork()) + + bool verbose = false; + Permission rootPerm = null; + string permRole = ""; + if (guild != null) { - var config = uow.GuildConfigs.PermissionsFor(guild.Id); - verbose = config.VerbosePermissions; - rootPerm = config.RootPermission; - permRole = config.PermissionRole.Trim().ToLowerInvariant(); + using (var uow = DbHandler.UnitOfWork()) + { + var config = uow.GuildConfigs.PermissionsFor(guild.Id); + verbose = config.VerbosePermissions; + rootPerm = config.RootPermission; + permRole = config.PermissionRole.Trim().ToLowerInvariant(); + } } + var t = await ExecuteCommand(usrMsg, usrMsg.Content, guild, usrMsg.Author, rootPerm, permRole, MultiMatchHandling.Best); var command = t.Item1; var result = t.Item2; diff --git a/src/NadekoBot/Services/Database/NadekoContext.cs b/src/NadekoBot/Services/Database/NadekoContext.cs index 6d71f8cc..ea4242f2 100644 --- a/src/NadekoBot/Services/Database/NadekoContext.cs +++ b/src/NadekoBot/Services/Database/NadekoContext.cs @@ -22,6 +22,7 @@ namespace NadekoBot.Services.Database public DbSet Currency { get; set; } public DbSet ConversionUnits { get; set; } public DbSet TypingArticles { get; set; } + public DbSet MusicPlaylists { get; set; } //logging public DbSet LogSettings { get; set; } diff --git a/src/NadekoBot/Services/Database/UnitOfWork.cs b/src/NadekoBot/Services/Database/UnitOfWork.cs index b2b84e3e..33f5d1c1 100644 --- a/src/NadekoBot/Services/Database/UnitOfWork.cs +++ b/src/NadekoBot/Services/Database/UnitOfWork.cs @@ -38,12 +38,16 @@ namespace NadekoBot.Services.Database private ICurrencyRepository _currency; public ICurrencyRepository Currency => _currency ?? (_currency = new CurrencyRepository(_context)); + private IUnitConverterRepository _conUnits; public IUnitConverterRepository ConverterUnits => _conUnits ?? (_conUnits = new UnitConverterRepository(_context)); private ITypingArticlesRepository _typingArticles; public ITypingArticlesRepository TypingArticles => _typingArticles ?? (_typingArticles = new TypingArticlesRepository(_context)); + private IMusicPlaylistRepository _musicPlaylists; + public IMusicPlaylistRepository MusicPlaylists => _musicPlaylists ?? (_musicPlaylists = new MusicPlaylistRepository(_context)); + public UnitOfWork(NadekoContext context) { _context = context; diff --git a/src/NadekoBot/Services/Impl/BotCredentials.cs b/src/NadekoBot/Services/Impl/BotCredentials.cs index 23e4fcb9..0d420528 100644 --- a/src/NadekoBot/Services/Impl/BotCredentials.cs +++ b/src/NadekoBot/Services/Impl/BotCredentials.cs @@ -27,6 +27,7 @@ namespace NadekoBot.Services.Impl public string SoundCloudClientId { get; } public DB Db { get; } + public int TotalShards { get; } public BotCredentials() { @@ -40,6 +41,7 @@ namespace NadekoBot.Services.Impl GoogleApiKey = cm.GoogleApiKey; MashapeKey = cm.MashapeKey; OsuApiKey = cm.OsuApiKey; + TotalShards = cm.TotalShards < 1 ? 1 : cm.TotalShards; SoundCloudClientId = cm.SoundCloudClientId; if (cm.Db == null) Db = new DB("sqlite", ""); @@ -60,6 +62,7 @@ namespace NadekoBot.Services.Impl public string OsuApiKey { get; set; } public string SoundCloudClientId { get; set; } public DB Db { get; set; } + public int TotalShards { get; set; } = 1; } private class DbModel From 31cd9b285694fa9415239eea29da27f8cf63ab7c Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sat, 1 Oct 2016 19:35:11 +0200 Subject: [PATCH 16/74] Deleting playlist implemented, needs testing --- .gitignore | 2 +- .../NadekoSqliteContextModelSnapshot.cs | 2 ++ src/NadekoBot/Modules/Music/Music.cs | 35 +++++++++++++++---- 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index a8e78718..df5ec176 100644 --- a/.gitignore +++ b/.gitignore @@ -17,7 +17,7 @@ Tests/bin src/NadekoBot/credentials.json src/NadekoBot/project.lock.json src/NadekoBot/data/NadekoBot.db -src/NadekoBot/musicdata/* +src/NadekoBot/musicdata src/NadekoBot/project.lock.json # NuGet Packages diff --git a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs index 949720d0..de39d0e6 100644 --- a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs +++ b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs @@ -363,6 +363,8 @@ namespace NadekoBot.Migrations b.Property("Author"); + b.Property("AuthorId"); + b.Property("Name"); b.HasKey("Id"); diff --git a/src/NadekoBot/Modules/Music/Music.cs b/src/NadekoBot/Modules/Music/Music.cs index 21e8e26f..ec7e7373 100644 --- a/src/NadekoBot/Modules/Music/Music.cs +++ b/src/NadekoBot/Modules/Music/Music.cs @@ -547,6 +547,7 @@ namespace NadekoBot.Modules.Music { Name = name, Author = umsg.Author.Username, + AuthorId = umsg.Author.Id, Songs = songs, }; uow.MusicPlaylists.Add(playlist); @@ -610,13 +611,35 @@ namespace NadekoBot.Modules.Music } //todo only author or owner - //[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] - //[RequireContext(ContextType.Guild)] - //public async Task DeletePlaylist(IUserMessage umsg, [Remainder] string pl) - //{ - // var channel = (ITextChannel)umsg.Channel; + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task DeletePlaylist(IUserMessage umsg, [Remainder] int id) + { + var channel = (ITextChannel)umsg.Channel; - //} + bool success = false; + MusicPlaylist pl = null; + using (var uow = DbHandler.UnitOfWork()) + { + pl = uow.MusicPlaylists.Get(id); + + if (pl != null) + { + if (NadekoBot.Credentials.IsOwner(umsg.Author) || pl.AuthorId == umsg.Author.Id) + { + uow.MusicPlaylists.Remove(pl.Id); + await uow.CompleteAsync().ConfigureAwait(false); + } + else + success = false; + } + } + + if (success) + await channel.SendMessageAsync("Failed to delete that playlist. It either doesn't exist, or you are not its author.").ConfigureAwait(false); + else + await channel.SendMessageAsync("`Playlist successfully deleted.`").ConfigureAwait(false); + } [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] From 66b0d11415a056dae2f5a25f2c5eb742d13da972 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sun, 2 Oct 2016 03:00:03 +0200 Subject: [PATCH 17/74] playlist stuff --- ...er.cs => 20161001173937_first.Designer.cs} | 49 +++++++++++++++++- ...01917_first.cs => 20161001173937_first.cs} | 50 +++++++++++++++++++ src/NadekoBot/Modules/Music/Music.cs | 44 +++++++++------- .../Services/Database/Models/MusicPlaylist.cs | 16 ++++++ .../Services/Database/Models/PlaylistSong.cs | 18 +++++++ .../Services/Database/NadekoContext.cs | 13 ++++- .../Repositories/IMusicPlaylistRepository.cs | 15 ++++++ .../Impl/MusicPlaylistRepository.cs | 32 ++++++++++++ 8 files changed, 217 insertions(+), 20 deletions(-) rename src/NadekoBot/Migrations/{20160930001917_first.Designer.cs => 20161001173937_first.Designer.cs} (92%) rename src/NadekoBot/Migrations/{20160930001917_first.cs => 20161001173937_first.cs} (92%) create mode 100644 src/NadekoBot/Services/Database/Models/MusicPlaylist.cs create mode 100644 src/NadekoBot/Services/Database/Models/PlaylistSong.cs create mode 100644 src/NadekoBot/Services/Database/Repositories/IMusicPlaylistRepository.cs create mode 100644 src/NadekoBot/Services/Database/Repositories/Impl/MusicPlaylistRepository.cs diff --git a/src/NadekoBot/Migrations/20160930001917_first.Designer.cs b/src/NadekoBot/Migrations/20161001173937_first.Designer.cs similarity index 92% rename from src/NadekoBot/Migrations/20160930001917_first.Designer.cs rename to src/NadekoBot/Migrations/20161001173937_first.Designer.cs index dd4fabf1..6647dc9e 100644 --- a/src/NadekoBot/Migrations/20160930001917_first.Designer.cs +++ b/src/NadekoBot/Migrations/20161001173937_first.Designer.cs @@ -8,7 +8,7 @@ using NadekoBot.Services.Database.Impl; namespace NadekoBot.Migrations { [DbContext(typeof(NadekoSqliteContext))] - [Migration("20160930001917_first")] + [Migration("20161001173937_first")] partial class first { protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -357,6 +357,22 @@ namespace NadekoBot.Migrations b.ToTable("ModulePrefixes"); }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("AuthorId"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.ToTable("MusicPlaylists"); + }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => { b.Property("Id") @@ -398,6 +414,30 @@ namespace NadekoBot.Migrations b.ToTable("PlayingStatus"); }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + 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.Services.Database.Models.Quote", b => { b.Property("Id") @@ -589,6 +629,13 @@ namespace NadekoBot.Migrations .HasForeignKey("BotConfigId"); }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + { + b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + .WithMany("Songs") + .HasForeignKey("MusicPlaylistId"); + }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => { b.HasOne("NadekoBot.Services.Database.Models.BotConfig") diff --git a/src/NadekoBot/Migrations/20160930001917_first.cs b/src/NadekoBot/Migrations/20161001173937_first.cs similarity index 92% rename from src/NadekoBot/Migrations/20160930001917_first.cs rename to src/NadekoBot/Migrations/20161001173937_first.cs index 400ac665..2cf892c5 100644 --- a/src/NadekoBot/Migrations/20160930001917_first.cs +++ b/src/NadekoBot/Migrations/20161001173937_first.cs @@ -122,6 +122,21 @@ namespace NadekoBot.Migrations table.PrimaryKey("PK_LogSettings", x => x.Id); }); + migrationBuilder.CreateTable( + name: "MusicPlaylists", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + Author = table.Column(nullable: true), + AuthorId = table.Column(nullable: false), + Name = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_MusicPlaylists", x => x.Id); + }); + migrationBuilder.CreateTable( name: "Permission", columns: table => new @@ -390,6 +405,30 @@ namespace NadekoBot.Migrations onDelete: ReferentialAction.Restrict); }); + migrationBuilder.CreateTable( + name: "PlaylistSong", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + MusicPlaylistId = table.Column(nullable: true), + Provider = table.Column(nullable: true), + ProviderType = table.Column(nullable: false), + Query = table.Column(nullable: true), + Title = table.Column(nullable: true), + Uri = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_PlaylistSong", x => x.Id); + table.ForeignKey( + name: "FK_PlaylistSong_MusicPlaylists_MusicPlaylistId", + column: x => x.MusicPlaylistId, + principalTable: "MusicPlaylists", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + migrationBuilder.CreateTable( name: "GuildConfigs", columns: table => new @@ -535,6 +574,11 @@ namespace NadekoBot.Migrations table: "PlayingStatus", column: "BotConfigId"); + migrationBuilder.CreateIndex( + name: "IX_PlaylistSong_MusicPlaylistId", + table: "PlaylistSong", + column: "MusicPlaylistId"); + migrationBuilder.CreateIndex( name: "IX_RaceAnimals_BotConfigId", table: "RaceAnimals", @@ -588,6 +632,9 @@ namespace NadekoBot.Migrations migrationBuilder.DropTable( name: "PlayingStatus"); + migrationBuilder.DropTable( + name: "PlaylistSong"); + migrationBuilder.DropTable( name: "Quotes"); @@ -612,6 +659,9 @@ namespace NadekoBot.Migrations migrationBuilder.DropTable( name: "GuildConfigs"); + migrationBuilder.DropTable( + name: "MusicPlaylists"); + migrationBuilder.DropTable( name: "BotConfig"); diff --git a/src/NadekoBot/Modules/Music/Music.cs b/src/NadekoBot/Modules/Music/Music.cs index ec7e7373..926bc8e3 100644 --- a/src/NadekoBot/Modules/Music/Music.cs +++ b/src/NadekoBot/Modules/Music/Music.cs @@ -571,7 +571,7 @@ namespace NadekoBot.Modules.Music if (mpl == null) { - await channel.SendMessageAsync("Can't find playlist with that ID").ConfigureAwait(false); + await channel.SendMessageAsync("`Can't find playlist with that ID`").ConfigureAwait(false); return; } @@ -619,26 +619,34 @@ namespace NadekoBot.Modules.Music bool success = false; MusicPlaylist pl = null; - using (var uow = DbHandler.UnitOfWork()) + try { - pl = uow.MusicPlaylists.Get(id); - - if (pl != null) + using (var uow = DbHandler.UnitOfWork()) { - if (NadekoBot.Credentials.IsOwner(umsg.Author) || pl.AuthorId == umsg.Author.Id) - { - uow.MusicPlaylists.Remove(pl.Id); - await uow.CompleteAsync().ConfigureAwait(false); - } - else - success = false; - } - } + pl = uow.MusicPlaylists.Get(id); - if (success) - await channel.SendMessageAsync("Failed to delete that playlist. It either doesn't exist, or you are not its author.").ConfigureAwait(false); - else - await channel.SendMessageAsync("`Playlist successfully deleted.`").ConfigureAwait(false); + if (pl != null) + { + if (NadekoBot.Credentials.IsOwner(umsg.Author) || pl.AuthorId == umsg.Author.Id) + { + uow.MusicPlaylists.Remove(pl); + await uow.CompleteAsync().ConfigureAwait(false); + success = true; + } + else + success = false; + } + } + + if (!success) + await channel.SendMessageAsync("Failed to delete that playlist. It either doesn't exist, or you are not its author.").ConfigureAwait(false); + else + await channel.SendMessageAsync("`Playlist successfully deleted.`").ConfigureAwait(false); + } + catch (Exception ex) + { + Console.WriteLine(ex); + } } [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] diff --git a/src/NadekoBot/Services/Database/Models/MusicPlaylist.cs b/src/NadekoBot/Services/Database/Models/MusicPlaylist.cs new file mode 100644 index 00000000..d14d3c01 --- /dev/null +++ b/src/NadekoBot/Services/Database/Models/MusicPlaylist.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NadekoBot.Services.Database.Models +{ + public class MusicPlaylist : DbEntity + { + public string Name { get; set; } + public string Author { get; set; } + public ulong AuthorId { get; set; } + public List Songs { get; set; } + } +} diff --git a/src/NadekoBot/Services/Database/Models/PlaylistSong.cs b/src/NadekoBot/Services/Database/Models/PlaylistSong.cs new file mode 100644 index 00000000..166bedd0 --- /dev/null +++ b/src/NadekoBot/Services/Database/Models/PlaylistSong.cs @@ -0,0 +1,18 @@ +using NadekoBot.Modules.Music.Classes; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NadekoBot.Services.Database.Models +{ + public class PlaylistSong : DbEntity + { + public string Provider { get; set; } + public MusicType ProviderType { get; set; } + public string Title { get; set; } + public string Uri { get; set; } + public string Query { get; set; } + } +} diff --git a/src/NadekoBot/Services/Database/NadekoContext.cs b/src/NadekoBot/Services/Database/NadekoContext.cs index ea4242f2..bb8b3087 100644 --- a/src/NadekoBot/Services/Database/NadekoContext.cs +++ b/src/NadekoBot/Services/Database/NadekoContext.cs @@ -187,7 +187,7 @@ namespace NadekoBot.Services.Database permissionEntity .HasOne(p => p.Next) .WithOne(p => p.Previous); - + #endregion #region LogSettings @@ -203,6 +203,17 @@ namespace NadekoBot.Services.Database // .HasMany(ls => ls.IgnoredVoicePresenceChannelIds) // .WithOne(ls => ls.LogSetting); #endregion + + #region MusicPlaylists + var musicPlaylistEntity = modelBuilder.Entity(); + + musicPlaylistEntity + .HasMany(p => p.Songs) + .WithOne() + .OnDelete(Microsoft.EntityFrameworkCore.Metadata.DeleteBehavior.Cascade); + + + #endregion } protected abstract override void OnConfiguring(DbContextOptionsBuilder optionsBuilder); } diff --git a/src/NadekoBot/Services/Database/Repositories/IMusicPlaylistRepository.cs b/src/NadekoBot/Services/Database/Repositories/IMusicPlaylistRepository.cs new file mode 100644 index 00000000..58c870c8 --- /dev/null +++ b/src/NadekoBot/Services/Database/Repositories/IMusicPlaylistRepository.cs @@ -0,0 +1,15 @@ +using NadekoBot.Services.Database.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NadekoBot.Services.Database.Repositories +{ + public interface IMusicPlaylistRepository : IRepository + { + List GetPlaylistsOnPage(int num); + MusicPlaylist GetWithSongs(int id); + } +} diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/MusicPlaylistRepository.cs b/src/NadekoBot/Services/Database/Repositories/Impl/MusicPlaylistRepository.cs new file mode 100644 index 00000000..572461ce --- /dev/null +++ b/src/NadekoBot/Services/Database/Repositories/Impl/MusicPlaylistRepository.cs @@ -0,0 +1,32 @@ +using NadekoBot.Services.Database.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; + +namespace NadekoBot.Services.Database.Repositories.Impl +{ + public class MusicPlaylistRepository : Repository, IMusicPlaylistRepository + { + public MusicPlaylistRepository(DbContext context) : base(context) + { + } + + public List GetPlaylistsOnPage(int num) + { + if (num < 1) + throw new IndexOutOfRangeException(); + + return _set.Skip((num - 1) * 20) + .Take(20) + .Include(pl => pl.Songs) + .ToList(); + } + + public MusicPlaylist GetWithSongs(int id) => + _set.Include(mpl => mpl.Songs) + .FirstOrDefault(mpl => mpl.Id == id); + } +} From 81c98442adece45a97069027ec2ee9b06fd7132a Mon Sep 17 00:00:00 2001 From: Nitix Date: Sun, 2 Oct 2016 04:15:57 +0200 Subject: [PATCH 18/74] Fix Foreign key with delete on cascade --- .../20161002021256_first.Designer.cs | 648 +++++++++++++++++ .../Migrations/20161002021256_first.cs | 675 ++++++++++++++++++ .../NadekoSqliteContextModelSnapshot.cs | 3 +- .../Services/Database/NadekoContext.cs | 2 +- 4 files changed, 1326 insertions(+), 2 deletions(-) create mode 100644 src/NadekoBot/Migrations/20161002021256_first.Designer.cs create mode 100644 src/NadekoBot/Migrations/20161002021256_first.cs diff --git a/src/NadekoBot/Migrations/20161002021256_first.Designer.cs b/src/NadekoBot/Migrations/20161002021256_first.Designer.cs new file mode 100644 index 00000000..544da87d --- /dev/null +++ b/src/NadekoBot/Migrations/20161002021256_first.Designer.cs @@ -0,0 +1,648 @@ +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using NadekoBot.Services.Database.Impl; + +namespace NadekoBot.Migrations +{ + [DbContext(typeof(NadekoSqliteContext))] + [Migration("20161002021256_first")] + partial class first + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { + modelBuilder + .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ItemId"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("BlacklistItem"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BufferSize"); + + b.Property("CurrencyGenerationChance"); + + b.Property("CurrencyGenerationCooldown"); + + b.Property("CurrencyName"); + + b.Property("CurrencyPluralName"); + + b.Property("CurrencySign"); + + b.Property("DontJoinServers"); + + b.Property("ForwardMessages"); + + b.Property("ForwardToAllOwners"); + + b.Property("RemindMessageFormat"); + + b.Property("RotatingStatuses"); + + b.HasKey("Id"); + + 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("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("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.ConvertUnit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("InternalTrigger"); + + b.Property("Modifier"); + + b.Property("UnitType"); + + b.HasKey("Id"); + + b.ToTable("ConversionUnits"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Currency"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("Name"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Donators"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("EightBallResponses"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("LastStatus"); + + b.Property("Type"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FollowedStream"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoAssignRoleId"); + + b.Property("AutoDeleteByeMessages"); + + b.Property("AutoDeleteGreetMessages"); + + b.Property("AutoDeleteGreetMessagesTimer"); + + b.Property("AutoDeleteSelfAssignedRoleMessages"); + + b.Property("ByeMessageChannelId"); + + b.Property("ChannelByeMessageText"); + + b.Property("ChannelGreetMessageText"); + + b.Property("DefaultMusicVolume"); + + b.Property("DeleteMessageOnCommand"); + + b.Property("DmGreetMessageText"); + + b.Property("ExclusiveSelfAssignedRoles"); + + b.Property("GenerateCurrencyChannelId"); + + b.Property("GreetMessageChannelId"); + + b.Property("GuildId"); + + b.Property("LogSettingId"); + + b.Property("PermissionRole"); + + b.Property("RootPermissionId"); + + b.Property("SendChannelByeMessage"); + + b.Property("SendChannelGreetMessage"); + + b.Property("SendDmGreetMessage"); + + b.Property("VerbosePermissions"); + + b.Property("VoicePlusTextEnabled"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.HasIndex("LogSettingId"); + + b.HasIndex("RootPermissionId"); + + b.ToTable("GuildConfigs"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredLogChannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredVoicePresenceCHannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelCreated"); + + b.Property("ChannelDestroyed"); + + b.Property("ChannelId"); + + b.Property("ChannelUpdated"); + + b.Property("IsLogging"); + + b.Property("LogUserPresence"); + + b.Property("LogVoicePresence"); + + b.Property("MessageDeleted"); + + b.Property("MessageReceived"); + + b.Property("MessageUpdated"); + + b.Property("UserBanned"); + + b.Property("UserJoined"); + + b.Property("UserLeft"); + + b.Property("UserPresenceChannelId"); + + b.Property("UserUnbanned"); + + b.Property("UserUpdated"); + + b.Property("VoicePresenceChannelId"); + + b.HasKey("Id"); + + b.ToTable("LogSettings"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ModuleName"); + + b.Property("Prefix"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("ModulePrefixes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("AuthorId"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.ToTable("MusicPlaylists"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + 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.Services.Database.Models.PlayingStatus", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Status"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("PlayingStatus"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + 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.Services.Database.Models.Quote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("AuthorName") + .IsRequired(); + + b.Property("GuildId"); + + b.Property("Keyword") + .IsRequired(); + + b.Property("Text") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("Quotes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Icon"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("RaceAnimals"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("IsPrivate"); + + b.Property("Message"); + + b.Property("ServerId"); + + b.Property("UserId"); + + b.Property("When"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildId"); + + b.Property("Interval"); + + b.Property("Message"); + + b.HasKey("Id"); + + b.HasIndex("ChannelId") + .IsUnique(); + + b.ToTable("Repeaters"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildId", "RoleId") + .IsUnique(); + + b.ToTable("SelfAssignableRoles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.ToTable("TypingArticles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("Blacklist") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + { + b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + .WithMany("Bases") + .HasForeignKey("ClashWarId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("EightBallResponses") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FollowedStreams") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany() + .HasForeignKey("LogSettingId"); + + b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + .WithMany() + .HasForeignKey("RootPermissionId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredVoicePresenceChannelIds") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig", "BotConfig") + .WithMany("ModulePrefixes") + .HasForeignKey("BotConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + .WithOne("Previous") + .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RotatingStatusMessages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + { + b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + .WithMany("Songs") + .HasForeignKey("MusicPlaylistId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RaceAnimals") + .HasForeignKey("BotConfigId"); + }); + } + } +} diff --git a/src/NadekoBot/Migrations/20161002021256_first.cs b/src/NadekoBot/Migrations/20161002021256_first.cs new file mode 100644 index 00000000..7c62a1a9 --- /dev/null +++ b/src/NadekoBot/Migrations/20161002021256_first.cs @@ -0,0 +1,675 @@ +using System; +using System.Collections.Generic; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace NadekoBot.Migrations +{ + public partial class first : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "BotConfig", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + BufferSize = table.Column(nullable: false), + CurrencyGenerationChance = table.Column(nullable: false), + CurrencyGenerationCooldown = table.Column(nullable: false), + CurrencyName = table.Column(nullable: true), + CurrencyPluralName = table.Column(nullable: true), + CurrencySign = table.Column(nullable: true), + DontJoinServers = table.Column(nullable: false), + ForwardMessages = table.Column(nullable: false), + ForwardToAllOwners = table.Column(nullable: false), + RemindMessageFormat = table.Column(nullable: true), + RotatingStatuses = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_BotConfig", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "ClashOfClans", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + ChannelId = table.Column(nullable: false), + 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: "ConversionUnits", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", 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); + }); + + migrationBuilder.CreateTable( + name: "Currency", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + Amount = table.Column(nullable: false), + UserId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Currency", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Donators", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + Amount = table.Column(nullable: false), + Name = table.Column(nullable: true), + UserId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Donators", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "LogSettings", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + ChannelCreated = table.Column(nullable: false), + ChannelDestroyed = table.Column(nullable: false), + ChannelId = table.Column(nullable: false), + ChannelUpdated = table.Column(nullable: false), + IsLogging = table.Column(nullable: false), + LogUserPresence = table.Column(nullable: false), + LogVoicePresence = table.Column(nullable: false), + MessageDeleted = table.Column(nullable: false), + MessageReceived = table.Column(nullable: false), + MessageUpdated = table.Column(nullable: false), + UserBanned = table.Column(nullable: false), + UserJoined = table.Column(nullable: false), + UserLeft = table.Column(nullable: false), + UserPresenceChannelId = table.Column(nullable: false), + UserUnbanned = table.Column(nullable: false), + UserUpdated = table.Column(nullable: false), + VoicePresenceChannelId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_LogSettings", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "MusicPlaylists", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + Author = table.Column(nullable: true), + AuthorId = table.Column(nullable: false), + Name = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_MusicPlaylists", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Permission", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + NextId = table.Column(nullable: true), + PrimaryTarget = table.Column(nullable: false), + PrimaryTargetId = table.Column(nullable: false), + SecondaryTarget = table.Column(nullable: false), + SecondaryTargetName = table.Column(nullable: true), + State = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Permission", x => x.Id); + table.ForeignKey( + name: "FK_Permission_Permission_NextId", + column: x => x.NextId, + principalTable: "Permission", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "Quotes", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + AuthorId = table.Column(nullable: false), + AuthorName = table.Column(nullable: false), + GuildId = table.Column(nullable: false), + Keyword = table.Column(nullable: false), + Text = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Quotes", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Reminders", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + ChannelId = table.Column(nullable: false), + IsPrivate = table.Column(nullable: false), + Message = table.Column(nullable: true), + ServerId = table.Column(nullable: false), + UserId = table.Column(nullable: false), + When = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Reminders", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Repeaters", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + ChannelId = table.Column(nullable: false), + GuildId = table.Column(nullable: false), + Interval = table.Column(nullable: false), + Message = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Repeaters", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "SelfAssignableRoles", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + GuildId = table.Column(nullable: false), + RoleId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_SelfAssignableRoles", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "TypingArticles", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + Author = table.Column(nullable: true), + Text = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_TypingArticles", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "BlacklistItem", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + BotConfigId = table.Column(nullable: true), + ItemId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_BlacklistItem", x => x.Id); + table.ForeignKey( + name: "FK_BlacklistItem_BotConfig_BotConfigId", + column: x => x.BotConfigId, + principalTable: "BotConfig", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "EightBallResponses", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + BotConfigId = table.Column(nullable: true), + Text = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_EightBallResponses", x => x.Id); + table.ForeignKey( + name: "FK_EightBallResponses_BotConfig_BotConfigId", + column: x => x.BotConfigId, + principalTable: "BotConfig", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "ModulePrefixes", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + BotConfigId = table.Column(nullable: false), + 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.Cascade); + }); + + migrationBuilder.CreateTable( + name: "PlayingStatus", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + BotConfigId = table.Column(nullable: true), + Status = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_PlayingStatus", x => x.Id); + table.ForeignKey( + name: "FK_PlayingStatus_BotConfig_BotConfigId", + column: x => x.BotConfigId, + principalTable: "BotConfig", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "RaceAnimals", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + BotConfigId = table.Column(nullable: true), + Icon = table.Column(nullable: true), + Name = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_RaceAnimals", x => x.Id); + table.ForeignKey( + name: "FK_RaceAnimals_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("Autoincrement", true), + BaseDestroyed = table.Column(nullable: false), + CallUser = table.Column(nullable: true), + ClashWarId = table.Column(nullable: false), + 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.CreateTable( + name: "IgnoredLogChannels", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + ChannelId = table.Column(nullable: false), + LogSettingId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_IgnoredLogChannels", x => x.Id); + table.ForeignKey( + name: "FK_IgnoredLogChannels_LogSettings_LogSettingId", + column: x => x.LogSettingId, + principalTable: "LogSettings", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "IgnoredVoicePresenceCHannels", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + ChannelId = table.Column(nullable: false), + LogSettingId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_IgnoredVoicePresenceCHannels", x => x.Id); + table.ForeignKey( + name: "FK_IgnoredVoicePresenceCHannels_LogSettings_LogSettingId", + column: x => x.LogSettingId, + principalTable: "LogSettings", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "PlaylistSong", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + MusicPlaylistId = table.Column(nullable: true), + Provider = table.Column(nullable: true), + ProviderType = table.Column(nullable: false), + Query = table.Column(nullable: true), + Title = table.Column(nullable: true), + Uri = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_PlaylistSong", x => x.Id); + table.ForeignKey( + name: "FK_PlaylistSong_MusicPlaylists_MusicPlaylistId", + column: x => x.MusicPlaylistId, + principalTable: "MusicPlaylists", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "GuildConfigs", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + AutoAssignRoleId = table.Column(nullable: false), + AutoDeleteByeMessages = table.Column(nullable: false), + AutoDeleteGreetMessages = table.Column(nullable: false), + AutoDeleteGreetMessagesTimer = table.Column(nullable: false), + AutoDeleteSelfAssignedRoleMessages = table.Column(nullable: false), + ByeMessageChannelId = table.Column(nullable: false), + ChannelByeMessageText = table.Column(nullable: true), + ChannelGreetMessageText = table.Column(nullable: true), + DefaultMusicVolume = table.Column(nullable: false), + DeleteMessageOnCommand = table.Column(nullable: false), + DmGreetMessageText = table.Column(nullable: true), + ExclusiveSelfAssignedRoles = table.Column(nullable: false), + GenerateCurrencyChannelId = table.Column(nullable: true), + GreetMessageChannelId = table.Column(nullable: false), + GuildId = table.Column(nullable: false), + LogSettingId = table.Column(nullable: true), + PermissionRole = table.Column(nullable: true), + RootPermissionId = table.Column(nullable: true), + SendChannelByeMessage = table.Column(nullable: false), + SendChannelGreetMessage = table.Column(nullable: false), + SendDmGreetMessage = table.Column(nullable: false), + VerbosePermissions = table.Column(nullable: false), + VoicePlusTextEnabled = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_GuildConfigs", x => x.Id); + table.ForeignKey( + name: "FK_GuildConfigs_LogSettings_LogSettingId", + column: x => x.LogSettingId, + principalTable: "LogSettings", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_GuildConfigs_Permission_RootPermissionId", + column: x => x.RootPermissionId, + principalTable: "Permission", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "FollowedStream", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + ChannelId = table.Column(nullable: false), + GuildConfigId = table.Column(nullable: true), + GuildId = table.Column(nullable: false), + LastStatus = table.Column(nullable: false), + Type = table.Column(nullable: false), + Username = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_FollowedStream", x => x.Id); + table.ForeignKey( + name: "FK_FollowedStream_GuildConfigs_GuildConfigId", + column: x => x.GuildConfigId, + principalTable: "GuildConfigs", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateIndex( + name: "IX_BlacklistItem_BotConfigId", + table: "BlacklistItem", + column: "BotConfigId"); + + migrationBuilder.CreateIndex( + name: "IX_ClashCallers_ClashWarId", + table: "ClashCallers", + column: "ClashWarId"); + + migrationBuilder.CreateIndex( + name: "IX_Currency_UserId", + table: "Currency", + column: "UserId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_Donators_UserId", + table: "Donators", + column: "UserId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_EightBallResponses_BotConfigId", + table: "EightBallResponses", + column: "BotConfigId"); + + migrationBuilder.CreateIndex( + name: "IX_FollowedStream_GuildConfigId", + table: "FollowedStream", + column: "GuildConfigId"); + + migrationBuilder.CreateIndex( + name: "IX_GuildConfigs_GuildId", + table: "GuildConfigs", + column: "GuildId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_GuildConfigs_LogSettingId", + table: "GuildConfigs", + column: "LogSettingId"); + + migrationBuilder.CreateIndex( + name: "IX_GuildConfigs_RootPermissionId", + table: "GuildConfigs", + column: "RootPermissionId"); + + migrationBuilder.CreateIndex( + name: "IX_IgnoredLogChannels_LogSettingId", + table: "IgnoredLogChannels", + column: "LogSettingId"); + + migrationBuilder.CreateIndex( + name: "IX_IgnoredVoicePresenceCHannels_LogSettingId", + table: "IgnoredVoicePresenceCHannels", + column: "LogSettingId"); + + migrationBuilder.CreateIndex( + name: "IX_ModulePrefixes_BotConfigId", + table: "ModulePrefixes", + column: "BotConfigId"); + + migrationBuilder.CreateIndex( + name: "IX_Permission_NextId", + table: "Permission", + column: "NextId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_PlayingStatus_BotConfigId", + table: "PlayingStatus", + column: "BotConfigId"); + + migrationBuilder.CreateIndex( + name: "IX_PlaylistSong_MusicPlaylistId", + table: "PlaylistSong", + column: "MusicPlaylistId"); + + migrationBuilder.CreateIndex( + name: "IX_RaceAnimals_BotConfigId", + table: "RaceAnimals", + column: "BotConfigId"); + + migrationBuilder.CreateIndex( + name: "IX_Repeaters_ChannelId", + table: "Repeaters", + column: "ChannelId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_SelfAssignableRoles_GuildId_RoleId", + table: "SelfAssignableRoles", + columns: new[] { "GuildId", "RoleId" }, + unique: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "BlacklistItem"); + + migrationBuilder.DropTable( + name: "ClashCallers"); + + migrationBuilder.DropTable( + name: "ConversionUnits"); + + migrationBuilder.DropTable( + name: "Currency"); + + migrationBuilder.DropTable( + name: "Donators"); + + migrationBuilder.DropTable( + name: "EightBallResponses"); + + migrationBuilder.DropTable( + name: "FollowedStream"); + + migrationBuilder.DropTable( + name: "IgnoredLogChannels"); + + migrationBuilder.DropTable( + name: "IgnoredVoicePresenceCHannels"); + + migrationBuilder.DropTable( + name: "ModulePrefixes"); + + migrationBuilder.DropTable( + name: "PlayingStatus"); + + migrationBuilder.DropTable( + name: "PlaylistSong"); + + migrationBuilder.DropTable( + name: "Quotes"); + + migrationBuilder.DropTable( + name: "RaceAnimals"); + + migrationBuilder.DropTable( + name: "Reminders"); + + migrationBuilder.DropTable( + name: "Repeaters"); + + migrationBuilder.DropTable( + name: "SelfAssignableRoles"); + + migrationBuilder.DropTable( + name: "TypingArticles"); + + migrationBuilder.DropTable( + name: "ClashOfClans"); + + migrationBuilder.DropTable( + name: "GuildConfigs"); + + migrationBuilder.DropTable( + name: "MusicPlaylists"); + + migrationBuilder.DropTable( + name: "BotConfig"); + + migrationBuilder.DropTable( + name: "LogSettings"); + + migrationBuilder.DropTable( + name: "Permission"); + } + } +} diff --git a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs index de39d0e6..788474c7 100644 --- a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs +++ b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs @@ -632,7 +632,8 @@ namespace NadekoBot.Migrations { b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") .WithMany("Songs") - .HasForeignKey("MusicPlaylistId"); + .HasForeignKey("MusicPlaylistId") + .OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => diff --git a/src/NadekoBot/Services/Database/NadekoContext.cs b/src/NadekoBot/Services/Database/NadekoContext.cs index bb8b3087..81940a91 100644 --- a/src/NadekoBot/Services/Database/NadekoContext.cs +++ b/src/NadekoBot/Services/Database/NadekoContext.cs @@ -208,7 +208,7 @@ namespace NadekoBot.Services.Database var musicPlaylistEntity = modelBuilder.Entity(); musicPlaylistEntity - .HasMany(p => p.Songs) + .HasMany(p => p.Songs) .WithOne() .OnDelete(Microsoft.EntityFrameworkCore.Metadata.DeleteBehavior.Cascade); From b97d626bc4ea62bcf8e25e09fa288d3a9463c198 Mon Sep 17 00:00:00 2001 From: Nitix Date: Sun, 2 Oct 2016 04:28:15 +0200 Subject: [PATCH 19/74] Deletion of old migration --- .../20161001173937_first.Designer.cs | 647 ----------------- .../Migrations/20161001173937_first.cs | 675 ------------------ 2 files changed, 1322 deletions(-) delete mode 100644 src/NadekoBot/Migrations/20161001173937_first.Designer.cs delete mode 100644 src/NadekoBot/Migrations/20161001173937_first.cs diff --git a/src/NadekoBot/Migrations/20161001173937_first.Designer.cs b/src/NadekoBot/Migrations/20161001173937_first.Designer.cs deleted file mode 100644 index 6647dc9e..00000000 --- a/src/NadekoBot/Migrations/20161001173937_first.Designer.cs +++ /dev/null @@ -1,647 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database.Impl; - -namespace NadekoBot.Migrations -{ - [DbContext(typeof(NadekoSqliteContext))] - [Migration("20161001173937_first")] - partial class first - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("ItemId"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("BlacklistItem"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BufferSize"); - - b.Property("CurrencyGenerationChance"); - - b.Property("CurrencyGenerationCooldown"); - - b.Property("CurrencyName"); - - b.Property("CurrencyPluralName"); - - b.Property("CurrencySign"); - - b.Property("DontJoinServers"); - - b.Property("ForwardMessages"); - - b.Property("ForwardToAllOwners"); - - b.Property("RemindMessageFormat"); - - b.Property("RotatingStatuses"); - - b.HasKey("Id"); - - 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("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("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.ConvertUnit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("InternalTrigger"); - - b.Property("Modifier"); - - b.Property("UnitType"); - - b.HasKey("Id"); - - b.ToTable("ConversionUnits"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Amount"); - - b.Property("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("Currency"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Amount"); - - b.Property("Name"); - - b.Property("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("Donators"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Text"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("EightBallResponses"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("GuildConfigId"); - - b.Property("GuildId"); - - b.Property("LastStatus"); - - b.Property("Type"); - - b.Property("Username"); - - b.HasKey("Id"); - - b.HasIndex("GuildConfigId"); - - b.ToTable("FollowedStream"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AutoAssignRoleId"); - - b.Property("AutoDeleteByeMessages"); - - b.Property("AutoDeleteGreetMessages"); - - b.Property("AutoDeleteGreetMessagesTimer"); - - b.Property("AutoDeleteSelfAssignedRoleMessages"); - - b.Property("ByeMessageChannelId"); - - b.Property("ChannelByeMessageText"); - - b.Property("ChannelGreetMessageText"); - - b.Property("DefaultMusicVolume"); - - b.Property("DeleteMessageOnCommand"); - - b.Property("DmGreetMessageText"); - - b.Property("ExclusiveSelfAssignedRoles"); - - b.Property("GenerateCurrencyChannelId"); - - b.Property("GreetMessageChannelId"); - - b.Property("GuildId"); - - b.Property("LogSettingId"); - - b.Property("PermissionRole"); - - b.Property("RootPermissionId"); - - b.Property("SendChannelByeMessage"); - - b.Property("SendChannelGreetMessage"); - - b.Property("SendDmGreetMessage"); - - b.Property("VerbosePermissions"); - - b.Property("VoicePlusTextEnabled"); - - b.HasKey("Id"); - - b.HasIndex("GuildId") - .IsUnique(); - - b.HasIndex("LogSettingId"); - - b.HasIndex("RootPermissionId"); - - b.ToTable("GuildConfigs"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("LogSettingId"); - - b.HasKey("Id"); - - b.HasIndex("LogSettingId"); - - b.ToTable("IgnoredLogChannels"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("LogSettingId"); - - b.HasKey("Id"); - - b.HasIndex("LogSettingId"); - - b.ToTable("IgnoredVoicePresenceCHannels"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelCreated"); - - b.Property("ChannelDestroyed"); - - b.Property("ChannelId"); - - b.Property("ChannelUpdated"); - - b.Property("IsLogging"); - - b.Property("LogUserPresence"); - - b.Property("LogVoicePresence"); - - b.Property("MessageDeleted"); - - b.Property("MessageReceived"); - - b.Property("MessageUpdated"); - - b.Property("UserBanned"); - - b.Property("UserJoined"); - - b.Property("UserLeft"); - - b.Property("UserPresenceChannelId"); - - b.Property("UserUnbanned"); - - b.Property("UserUpdated"); - - b.Property("VoicePresenceChannelId"); - - b.HasKey("Id"); - - b.ToTable("LogSettings"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("ModuleName"); - - b.Property("Prefix"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("ModulePrefixes"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Author"); - - b.Property("AuthorId"); - - b.Property("Name"); - - b.HasKey("Id"); - - b.ToTable("MusicPlaylists"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - 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.Services.Database.Models.PlayingStatus", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Status"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("PlayingStatus"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - 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.Services.Database.Models.Quote", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AuthorId"); - - b.Property("AuthorName") - .IsRequired(); - - b.Property("GuildId"); - - b.Property("Keyword") - .IsRequired(); - - b.Property("Text") - .IsRequired(); - - b.HasKey("Id"); - - b.ToTable("Quotes"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Icon"); - - b.Property("Name"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("RaceAnimals"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("IsPrivate"); - - b.Property("Message"); - - b.Property("ServerId"); - - b.Property("UserId"); - - b.Property("When"); - - b.HasKey("Id"); - - b.ToTable("Reminders"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("GuildId"); - - b.Property("Interval"); - - b.Property("Message"); - - b.HasKey("Id"); - - b.HasIndex("ChannelId") - .IsUnique(); - - b.ToTable("Repeaters"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("GuildId"); - - b.Property("RoleId"); - - b.HasKey("Id"); - - b.HasIndex("GuildId", "RoleId") - .IsUnique(); - - b.ToTable("SelfAssignableRoles"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Author"); - - b.Property("Text"); - - b.HasKey("Id"); - - b.ToTable("TypingArticles"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("Blacklist") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => - { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") - .WithMany("Bases") - .HasForeignKey("ClashWarId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("EightBallResponses") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => - { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") - .WithMany("FollowedStreams") - .HasForeignKey("GuildConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany() - .HasForeignKey("LogSettingId"); - - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") - .WithMany() - .HasForeignKey("RootPermissionId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany("IgnoredChannels") - .HasForeignKey("LogSettingId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany("IgnoredVoicePresenceChannelIds") - .HasForeignKey("LogSettingId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig", "BotConfig") - .WithMany("ModulePrefixes") - .HasForeignKey("BotConfigId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => - { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") - .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("RotatingStatusMessages") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => - { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") - .WithMany("Songs") - .HasForeignKey("MusicPlaylistId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("RaceAnimals") - .HasForeignKey("BotConfigId"); - }); - } - } -} diff --git a/src/NadekoBot/Migrations/20161001173937_first.cs b/src/NadekoBot/Migrations/20161001173937_first.cs deleted file mode 100644 index 2cf892c5..00000000 --- a/src/NadekoBot/Migrations/20161001173937_first.cs +++ /dev/null @@ -1,675 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace NadekoBot.Migrations -{ - public partial class first : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "BotConfig", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - BufferSize = table.Column(nullable: false), - CurrencyGenerationChance = table.Column(nullable: false), - CurrencyGenerationCooldown = table.Column(nullable: false), - CurrencyName = table.Column(nullable: true), - CurrencyPluralName = table.Column(nullable: true), - CurrencySign = table.Column(nullable: true), - DontJoinServers = table.Column(nullable: false), - ForwardMessages = table.Column(nullable: false), - ForwardToAllOwners = table.Column(nullable: false), - RemindMessageFormat = table.Column(nullable: true), - RotatingStatuses = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_BotConfig", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "ClashOfClans", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - ChannelId = table.Column(nullable: false), - 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: "ConversionUnits", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", 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); - }); - - migrationBuilder.CreateTable( - name: "Currency", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - Amount = table.Column(nullable: false), - UserId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Currency", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Donators", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - Amount = table.Column(nullable: false), - Name = table.Column(nullable: true), - UserId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Donators", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "LogSettings", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - ChannelCreated = table.Column(nullable: false), - ChannelDestroyed = table.Column(nullable: false), - ChannelId = table.Column(nullable: false), - ChannelUpdated = table.Column(nullable: false), - IsLogging = table.Column(nullable: false), - LogUserPresence = table.Column(nullable: false), - LogVoicePresence = table.Column(nullable: false), - MessageDeleted = table.Column(nullable: false), - MessageReceived = table.Column(nullable: false), - MessageUpdated = table.Column(nullable: false), - UserBanned = table.Column(nullable: false), - UserJoined = table.Column(nullable: false), - UserLeft = table.Column(nullable: false), - UserPresenceChannelId = table.Column(nullable: false), - UserUnbanned = table.Column(nullable: false), - UserUpdated = table.Column(nullable: false), - VoicePresenceChannelId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_LogSettings", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "MusicPlaylists", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - Author = table.Column(nullable: true), - AuthorId = table.Column(nullable: false), - Name = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_MusicPlaylists", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Permission", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - NextId = table.Column(nullable: true), - PrimaryTarget = table.Column(nullable: false), - PrimaryTargetId = table.Column(nullable: false), - SecondaryTarget = table.Column(nullable: false), - SecondaryTargetName = table.Column(nullable: true), - State = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Permission", x => x.Id); - table.ForeignKey( - name: "FK_Permission_Permission_NextId", - column: x => x.NextId, - principalTable: "Permission", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "Quotes", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - AuthorId = table.Column(nullable: false), - AuthorName = table.Column(nullable: false), - GuildId = table.Column(nullable: false), - Keyword = table.Column(nullable: false), - Text = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Quotes", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Reminders", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - ChannelId = table.Column(nullable: false), - IsPrivate = table.Column(nullable: false), - Message = table.Column(nullable: true), - ServerId = table.Column(nullable: false), - UserId = table.Column(nullable: false), - When = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Reminders", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Repeaters", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - ChannelId = table.Column(nullable: false), - GuildId = table.Column(nullable: false), - Interval = table.Column(nullable: false), - Message = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Repeaters", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "SelfAssignableRoles", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - GuildId = table.Column(nullable: false), - RoleId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_SelfAssignableRoles", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "TypingArticles", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - Author = table.Column(nullable: true), - Text = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_TypingArticles", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "BlacklistItem", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - BotConfigId = table.Column(nullable: true), - ItemId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_BlacklistItem", x => x.Id); - table.ForeignKey( - name: "FK_BlacklistItem_BotConfig_BotConfigId", - column: x => x.BotConfigId, - principalTable: "BotConfig", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "EightBallResponses", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - BotConfigId = table.Column(nullable: true), - Text = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_EightBallResponses", x => x.Id); - table.ForeignKey( - name: "FK_EightBallResponses_BotConfig_BotConfigId", - column: x => x.BotConfigId, - principalTable: "BotConfig", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "ModulePrefixes", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - BotConfigId = table.Column(nullable: false), - 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.Cascade); - }); - - migrationBuilder.CreateTable( - name: "PlayingStatus", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - BotConfigId = table.Column(nullable: true), - Status = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_PlayingStatus", x => x.Id); - table.ForeignKey( - name: "FK_PlayingStatus_BotConfig_BotConfigId", - column: x => x.BotConfigId, - principalTable: "BotConfig", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "RaceAnimals", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - BotConfigId = table.Column(nullable: true), - Icon = table.Column(nullable: true), - Name = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_RaceAnimals", x => x.Id); - table.ForeignKey( - name: "FK_RaceAnimals_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("Autoincrement", true), - BaseDestroyed = table.Column(nullable: false), - CallUser = table.Column(nullable: true), - ClashWarId = table.Column(nullable: false), - 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.CreateTable( - name: "IgnoredLogChannels", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - ChannelId = table.Column(nullable: false), - LogSettingId = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IgnoredLogChannels", x => x.Id); - table.ForeignKey( - name: "FK_IgnoredLogChannels_LogSettings_LogSettingId", - column: x => x.LogSettingId, - principalTable: "LogSettings", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "IgnoredVoicePresenceCHannels", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - ChannelId = table.Column(nullable: false), - LogSettingId = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_IgnoredVoicePresenceCHannels", x => x.Id); - table.ForeignKey( - name: "FK_IgnoredVoicePresenceCHannels_LogSettings_LogSettingId", - column: x => x.LogSettingId, - principalTable: "LogSettings", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "PlaylistSong", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - MusicPlaylistId = table.Column(nullable: true), - Provider = table.Column(nullable: true), - ProviderType = table.Column(nullable: false), - Query = table.Column(nullable: true), - Title = table.Column(nullable: true), - Uri = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_PlaylistSong", x => x.Id); - table.ForeignKey( - name: "FK_PlaylistSong_MusicPlaylists_MusicPlaylistId", - column: x => x.MusicPlaylistId, - principalTable: "MusicPlaylists", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "GuildConfigs", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - AutoAssignRoleId = table.Column(nullable: false), - AutoDeleteByeMessages = table.Column(nullable: false), - AutoDeleteGreetMessages = table.Column(nullable: false), - AutoDeleteGreetMessagesTimer = table.Column(nullable: false), - AutoDeleteSelfAssignedRoleMessages = table.Column(nullable: false), - ByeMessageChannelId = table.Column(nullable: false), - ChannelByeMessageText = table.Column(nullable: true), - ChannelGreetMessageText = table.Column(nullable: true), - DefaultMusicVolume = table.Column(nullable: false), - DeleteMessageOnCommand = table.Column(nullable: false), - DmGreetMessageText = table.Column(nullable: true), - ExclusiveSelfAssignedRoles = table.Column(nullable: false), - GenerateCurrencyChannelId = table.Column(nullable: true), - GreetMessageChannelId = table.Column(nullable: false), - GuildId = table.Column(nullable: false), - LogSettingId = table.Column(nullable: true), - PermissionRole = table.Column(nullable: true), - RootPermissionId = table.Column(nullable: true), - SendChannelByeMessage = table.Column(nullable: false), - SendChannelGreetMessage = table.Column(nullable: false), - SendDmGreetMessage = table.Column(nullable: false), - VerbosePermissions = table.Column(nullable: false), - VoicePlusTextEnabled = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_GuildConfigs", x => x.Id); - table.ForeignKey( - name: "FK_GuildConfigs_LogSettings_LogSettingId", - column: x => x.LogSettingId, - principalTable: "LogSettings", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "FK_GuildConfigs_Permission_RootPermissionId", - column: x => x.RootPermissionId, - principalTable: "Permission", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "FollowedStream", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - ChannelId = table.Column(nullable: false), - GuildConfigId = table.Column(nullable: true), - GuildId = table.Column(nullable: false), - LastStatus = table.Column(nullable: false), - Type = table.Column(nullable: false), - Username = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_FollowedStream", x => x.Id); - table.ForeignKey( - name: "FK_FollowedStream_GuildConfigs_GuildConfigId", - column: x => x.GuildConfigId, - principalTable: "GuildConfigs", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateIndex( - name: "IX_BlacklistItem_BotConfigId", - table: "BlacklistItem", - column: "BotConfigId"); - - migrationBuilder.CreateIndex( - name: "IX_ClashCallers_ClashWarId", - table: "ClashCallers", - column: "ClashWarId"); - - migrationBuilder.CreateIndex( - name: "IX_Currency_UserId", - table: "Currency", - column: "UserId", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_Donators_UserId", - table: "Donators", - column: "UserId", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_EightBallResponses_BotConfigId", - table: "EightBallResponses", - column: "BotConfigId"); - - migrationBuilder.CreateIndex( - name: "IX_FollowedStream_GuildConfigId", - table: "FollowedStream", - column: "GuildConfigId"); - - migrationBuilder.CreateIndex( - name: "IX_GuildConfigs_GuildId", - table: "GuildConfigs", - column: "GuildId", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_GuildConfigs_LogSettingId", - table: "GuildConfigs", - column: "LogSettingId"); - - migrationBuilder.CreateIndex( - name: "IX_GuildConfigs_RootPermissionId", - table: "GuildConfigs", - column: "RootPermissionId"); - - migrationBuilder.CreateIndex( - name: "IX_IgnoredLogChannels_LogSettingId", - table: "IgnoredLogChannels", - column: "LogSettingId"); - - migrationBuilder.CreateIndex( - name: "IX_IgnoredVoicePresenceCHannels_LogSettingId", - table: "IgnoredVoicePresenceCHannels", - column: "LogSettingId"); - - migrationBuilder.CreateIndex( - name: "IX_ModulePrefixes_BotConfigId", - table: "ModulePrefixes", - column: "BotConfigId"); - - migrationBuilder.CreateIndex( - name: "IX_Permission_NextId", - table: "Permission", - column: "NextId", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_PlayingStatus_BotConfigId", - table: "PlayingStatus", - column: "BotConfigId"); - - migrationBuilder.CreateIndex( - name: "IX_PlaylistSong_MusicPlaylistId", - table: "PlaylistSong", - column: "MusicPlaylistId"); - - migrationBuilder.CreateIndex( - name: "IX_RaceAnimals_BotConfigId", - table: "RaceAnimals", - column: "BotConfigId"); - - migrationBuilder.CreateIndex( - name: "IX_Repeaters_ChannelId", - table: "Repeaters", - column: "ChannelId", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_SelfAssignableRoles_GuildId_RoleId", - table: "SelfAssignableRoles", - columns: new[] { "GuildId", "RoleId" }, - unique: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "BlacklistItem"); - - migrationBuilder.DropTable( - name: "ClashCallers"); - - migrationBuilder.DropTable( - name: "ConversionUnits"); - - migrationBuilder.DropTable( - name: "Currency"); - - migrationBuilder.DropTable( - name: "Donators"); - - migrationBuilder.DropTable( - name: "EightBallResponses"); - - migrationBuilder.DropTable( - name: "FollowedStream"); - - migrationBuilder.DropTable( - name: "IgnoredLogChannels"); - - migrationBuilder.DropTable( - name: "IgnoredVoicePresenceCHannels"); - - migrationBuilder.DropTable( - name: "ModulePrefixes"); - - migrationBuilder.DropTable( - name: "PlayingStatus"); - - migrationBuilder.DropTable( - name: "PlaylistSong"); - - migrationBuilder.DropTable( - name: "Quotes"); - - migrationBuilder.DropTable( - name: "RaceAnimals"); - - migrationBuilder.DropTable( - name: "Reminders"); - - migrationBuilder.DropTable( - name: "Repeaters"); - - migrationBuilder.DropTable( - name: "SelfAssignableRoles"); - - migrationBuilder.DropTable( - name: "TypingArticles"); - - migrationBuilder.DropTable( - name: "ClashOfClans"); - - migrationBuilder.DropTable( - name: "GuildConfigs"); - - migrationBuilder.DropTable( - name: "MusicPlaylists"); - - migrationBuilder.DropTable( - name: "BotConfig"); - - migrationBuilder.DropTable( - name: "LogSettings"); - - migrationBuilder.DropTable( - name: "Permission"); - } - } -} From 8f2b48c2912af5d265a7ea32da5bd3c2bdef42ca Mon Sep 17 00:00:00 2001 From: Kwoth Date: Mon, 3 Oct 2016 04:19:14 +0200 Subject: [PATCH 20/74] Blacklisting done --- .../NadekoSqliteContextModelSnapshot.cs | 2 + src/NadekoBot/Modules/Gambling/Gambling.cs | 13 +- .../Games/Commands/Trivia/TriviaGame.cs | 4 +- .../Permissions/PermissionExtensions.cs | 2 +- .../Modules/Permissions/Permissions.cs | 2 +- src/NadekoBot/Modules/Utility/Utility.cs | 2 +- .../Resources/CommandStrings.Designer.cs | 122 +++++++++--------- src/NadekoBot/Resources/CommandStrings.resx | 20 +-- src/NadekoBot/Services/CommandHandler.cs | 19 ++- .../Services/Database/Models/BotConfig.cs | 2 + 10 files changed, 102 insertions(+), 86 deletions(-) diff --git a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs index 788474c7..75cc79bd 100644 --- a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs +++ b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs @@ -24,6 +24,8 @@ namespace NadekoBot.Migrations b.Property("ItemId"); + b.Property("Type"); + b.HasKey("Id"); b.HasIndex("BotConfigId"); diff --git a/src/NadekoBot/Modules/Gambling/Gambling.cs b/src/NadekoBot/Modules/Gambling/Gambling.cs index 333a8bcc..d8296c98 100644 --- a/src/NadekoBot/Modules/Gambling/Gambling.cs +++ b/src/NadekoBot/Modules/Gambling/Gambling.cs @@ -197,13 +197,12 @@ namespace NadekoBot.Modules.Gambling await channel.SendMessageAsync( richest.Aggregate(new StringBuilder( $@"```xl - ┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┓ - ┃ Id ┃ $$$ ┃ - "), - (cur, cs) => cur.AppendLine( -$@"┣━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━┫ - ┃{(channel.Guild.GetUser(cs.UserId)?.Username.TrimTo(18, true) ?? cs.UserId.ToString()),-20} ┃ {cs,5} ┃") - ).ToString() + "┗━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━┛```").ConfigureAwait(false); +┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ +┃ Id ┃ $$$ ┃ +"), + (cur, cs) => cur.AppendLine($@"┣━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━┫ +┃{(channel.Guild.GetUser(cs.UserId)?.Username.TrimTo(18, true) ?? cs.UserId.ToString()),-20} ┃ {cs.Amount,6} ┃") + ).ToString() + "┗━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━┛```").ConfigureAwait(false); } } } diff --git a/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaGame.cs b/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaGame.cs index c4b27ff5..6a68368f 100644 --- a/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaGame.cs +++ b/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaGame.cs @@ -13,8 +13,8 @@ namespace NadekoBot.Modules.Games.Trivia { private readonly SemaphoreSlim _guessLock = new SemaphoreSlim(1, 1); - private IGuild guild { get; } - private ITextChannel channel { get; } + public IGuild guild { get; } + public ITextChannel channel { get; } private int QuestionDurationMiliseconds { get; } = 30000; private int HintTimeoutMiliseconds { get; } = 6000; diff --git a/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs b/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs index 6a39a9ff..77f4201f 100644 --- a/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs +++ b/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs @@ -43,7 +43,7 @@ namespace NadekoBot.Modules.Permissions } else { - permIndex = i + 1; + permIndex = i; return result.Value; } } diff --git a/src/NadekoBot/Modules/Permissions/Permissions.cs b/src/NadekoBot/Modules/Permissions/Permissions.cs index 087d3755..485d7f46 100644 --- a/src/NadekoBot/Modules/Permissions/Permissions.cs +++ b/src/NadekoBot/Modules/Permissions/Permissions.cs @@ -15,7 +15,7 @@ using Discord.API; namespace NadekoBot.Modules.Permissions { [NadekoModule("Permissions", ";")] - public class Permissions : DiscordModule + public partial class Permissions : DiscordModule { public Permissions(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client) { diff --git a/src/NadekoBot/Modules/Utility/Utility.cs b/src/NadekoBot/Modules/Utility/Utility.cs index 32f37096..56589a75 100644 --- a/src/NadekoBot/Modules/Utility/Utility.cs +++ b/src/NadekoBot/Modules/Utility/Utility.cs @@ -98,7 +98,7 @@ namespace NadekoBot.Modules.Utility public async Task UserId(IUserMessage msg, IGuildUser target = null) { var usr = target ?? msg.Author; - await msg.Reply($"Id of the user { usr.Username } is { usr.Id })").ConfigureAwait(false); + await msg.Reply($"Id of the user { usr.Username } is { usr.Id }").ConfigureAwait(false); } [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] diff --git a/src/NadekoBot/Resources/CommandStrings.Designer.cs b/src/NadekoBot/Resources/CommandStrings.Designer.cs index 8253f6ca..c841bb54 100644 --- a/src/NadekoBot/Resources/CommandStrings.Designer.cs +++ b/src/NadekoBot/Resources/CommandStrings.Designer.cs @@ -1061,27 +1061,27 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to Blacklists a mentioned channel (#general for example).. /// - public static string cbl_desc { + public static string channelblacklist_desc { get { - return ResourceManager.GetString("cbl_desc", resourceCulture); + return ResourceManager.GetString("channelblacklist_desc", resourceCulture); } } /// /// Looks up a localized string similar to `;cbl #some_channel`. /// - public static string cbl_summary { + public static string channelblacklist_summary { get { - return ResourceManager.GetString("cbl_summary", resourceCulture); + return ResourceManager.GetString("channelblacklist_summary", resourceCulture); } } /// /// Looks up a localized string similar to cbl. /// - public static string cbl_text { + public static string channelblacklist_text { get { - return ResourceManager.GetString("cbl_text", resourceCulture); + return ResourceManager.GetString("channelblacklist_text", resourceCulture); } } @@ -1104,7 +1104,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to channelid. + /// Looks up a localized string similar to channelid cid. /// public static string channelid_text { get { @@ -5972,33 +5972,6 @@ namespace NadekoBot.Resources { } } - /// - /// Looks up a localized string similar to Blacklists a server by a name or id (#general for example). **BOT OWNER ONLY**. - /// - public static string sbl_desc { - get { - return ResourceManager.GetString("sbl_desc", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to `;sbl [servername/serverid]`. - /// - public static string sbl_summary { - get { - return ResourceManager.GetString("sbl_summary", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to sbl. - /// - public static string sbl_text { - get { - return ResourceManager.GetString("sbl_text", resourceCulture); - } - } - /// /// Looks up a localized string similar to Starts an instance of cross server channel. You will get a token as a DM that other people will use to tune in to the same instance. **Bot Owner Only.**. /// @@ -6053,6 +6026,33 @@ namespace NadekoBot.Resources { } } + /// + /// Looks up a localized string similar to Blacklists a server by a name or id (#general for example). **BOT OWNER ONLY**. + /// + public static string serverblacklist_desc { + get { + return ResourceManager.GetString("serverblacklist_desc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to `;sbl [servername/serverid]`. + /// + public static string serverblacklist_summary { + get { + return ResourceManager.GetString("serverblacklist_summary", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to sbl. + /// + public static string serverblacklist_text { + get { + return ResourceManager.GetString("serverblacklist_text", resourceCulture); + } + } + /// /// Looks up a localized string similar to Shows current server ID.. /// @@ -7052,33 +7052,6 @@ namespace NadekoBot.Resources { } } - /// - /// Looks up a localized string similar to Blacklists a mentioned user. **Bot Owner Only!**. - /// - public static string ubl_desc { - get { - return ResourceManager.GetString("ubl_desc", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to `;ubl [user_mention]`. - /// - public static string ubl_summary { - get { - return ResourceManager.GetString("ubl_summary", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to ubl. - /// - public static string ubl_text { - get { - return ResourceManager.GetString("ubl_text", resourceCulture); - } - } - /// /// Looks up a localized string similar to Unbinds a bot from the channel and board. **Bot Owner Only!**. /// @@ -7241,6 +7214,33 @@ namespace NadekoBot.Resources { } } + /// + /// Looks up a localized string similar to Blacklists a mentioned user. **Bot Owner Only!**. + /// + public static string userblacklist_desc { + get { + return ResourceManager.GetString("userblacklist_desc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to `;ubl [user_mention]`. + /// + public static string userblacklist_summary { + get { + return ResourceManager.GetString("userblacklist_summary", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ubl. + /// + public static string userblacklist_text { + get { + return ResourceManager.GetString("userblacklist_text", resourceCulture); + } + } + /// /// Looks up a localized string similar to Shows user ID.. /// diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index ad27382f..58f84736 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -919,7 +919,7 @@ `.uid` or `.uid "@SomeGuy"` - channelid + channelid cid Shows current channel ID. @@ -1224,13 +1224,13 @@ `;arc "module name" [enable/disable] MyRole` - + ubl - + Blacklists a mentioned user. **Bot Owner Only!** - + `;ubl [user_mention]` @@ -1242,13 +1242,13 @@ `;uubl [user_mention]` - + cbl - + Blacklists a mentioned channel (#general for example). - + `;cbl #some_channel` @@ -1260,13 +1260,13 @@ `;cubl #some_channel` - + sbl - + Blacklists a server by a name or id (#general for example). **BOT OWNER ONLY** - + `;sbl [servername/serverid]` diff --git a/src/NadekoBot/Services/CommandHandler.cs b/src/NadekoBot/Services/CommandHandler.cs index 1a4e65f9..5703eaec 100644 --- a/src/NadekoBot/Services/CommandHandler.cs +++ b/src/NadekoBot/Services/CommandHandler.cs @@ -39,16 +39,29 @@ namespace NadekoBot.Services if (usrMsg == null) return Task.CompletedTask; + if (usrMsg.Author.IsBot) //no bots + return Task.CompletedTask; + var guild = (msg.Channel as ITextChannel)?.Guild; + BlacklistItem blacklistedItem; + if ((blacklistedItem = Permissions.BlacklistCommands.BlacklistedItems.FirstOrDefault(bi => + (bi.Type == BlacklistItem.BlacklistType.Server && bi.ItemId == guild?.Id) || + (bi.Type == BlacklistItem.BlacklistType.Channel && bi.ItemId == msg.Channel.Id) || + (bi.Type == BlacklistItem.BlacklistType.User && bi.ItemId == usrMsg.Author.Id))) != null) + { + _log.Warn("Attempt was made to run a command by a blacklisted {0}, id: {1}", blacklistedItem.Type, blacklistedItem.ItemId); + return Task.CompletedTask; + } + var throwaway = Task.Run(async () => { - var sw = new Stopwatch(); + var sw = new Stopwatch(); sw.Start(); try { - + bool verbose = false; Permission rootPerm = null; string permRole = ""; @@ -165,7 +178,7 @@ namespace NadekoBot.Services int index; if (!rootPerm.AsEnumerable().CheckPermissions(message, cmd.Name, cmd.Module.Name, out index)) { - var returnMsg = $"Permission number #{index} **{rootPerm.GetAt(index).GetCommand()}** is preventing this action."; + var returnMsg = $"Permission number #{index + 1} **{rootPerm.GetAt(index).GetCommand()}** is preventing this action."; return new Tuple(cmd, SearchResult.FromError(CommandError.Exception, returnMsg)); } diff --git a/src/NadekoBot/Services/Database/Models/BotConfig.cs b/src/NadekoBot/Services/Database/Models/BotConfig.cs index acb5d199..b8c08404 100644 --- a/src/NadekoBot/Services/Database/Models/BotConfig.cs +++ b/src/NadekoBot/Services/Database/Models/BotConfig.cs @@ -43,6 +43,8 @@ namespace NadekoBot.Services.Database.Models public class BlacklistItem : DbEntity { public ulong ItemId { get; set; } + public BlacklistType Type { get; set; } + public enum BlacklistType { Server, From 0df0eea6c0e1c451f0ebf4dffbb50a3ecd99eda5 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Mon, 3 Oct 2016 04:34:37 +0200 Subject: [PATCH 21/74] forgot migrations --- .../20161003012137_blacklist.Designer.cs | 650 ++++++++++++++++++ .../Migrations/20161003012137_blacklist.cs | 26 + .../Permissions/Commands/BlacklistCommands.cs | 104 +++ 3 files changed, 780 insertions(+) create mode 100644 src/NadekoBot/Migrations/20161003012137_blacklist.Designer.cs create mode 100644 src/NadekoBot/Migrations/20161003012137_blacklist.cs create mode 100644 src/NadekoBot/Modules/Permissions/Commands/BlacklistCommands.cs diff --git a/src/NadekoBot/Migrations/20161003012137_blacklist.Designer.cs b/src/NadekoBot/Migrations/20161003012137_blacklist.Designer.cs new file mode 100644 index 00000000..5bdecdb6 --- /dev/null +++ b/src/NadekoBot/Migrations/20161003012137_blacklist.Designer.cs @@ -0,0 +1,650 @@ +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using NadekoBot.Services.Database.Impl; + +namespace NadekoBot.Migrations +{ + [DbContext(typeof(NadekoSqliteContext))] + [Migration("20161003012137_blacklist")] + partial class blacklist + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { + modelBuilder + .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ItemId"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("BlacklistItem"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BufferSize"); + + b.Property("CurrencyGenerationChance"); + + b.Property("CurrencyGenerationCooldown"); + + b.Property("CurrencyName"); + + b.Property("CurrencyPluralName"); + + b.Property("CurrencySign"); + + b.Property("DontJoinServers"); + + b.Property("ForwardMessages"); + + b.Property("ForwardToAllOwners"); + + b.Property("RemindMessageFormat"); + + b.Property("RotatingStatuses"); + + b.HasKey("Id"); + + 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("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("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.ConvertUnit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("InternalTrigger"); + + b.Property("Modifier"); + + b.Property("UnitType"); + + b.HasKey("Id"); + + b.ToTable("ConversionUnits"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Currency"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("Name"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Donators"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("EightBallResponses"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("LastStatus"); + + b.Property("Type"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FollowedStream"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoAssignRoleId"); + + b.Property("AutoDeleteByeMessages"); + + b.Property("AutoDeleteGreetMessages"); + + b.Property("AutoDeleteGreetMessagesTimer"); + + b.Property("AutoDeleteSelfAssignedRoleMessages"); + + b.Property("ByeMessageChannelId"); + + b.Property("ChannelByeMessageText"); + + b.Property("ChannelGreetMessageText"); + + b.Property("DefaultMusicVolume"); + + b.Property("DeleteMessageOnCommand"); + + b.Property("DmGreetMessageText"); + + b.Property("ExclusiveSelfAssignedRoles"); + + b.Property("GenerateCurrencyChannelId"); + + b.Property("GreetMessageChannelId"); + + b.Property("GuildId"); + + b.Property("LogSettingId"); + + b.Property("PermissionRole"); + + b.Property("RootPermissionId"); + + b.Property("SendChannelByeMessage"); + + b.Property("SendChannelGreetMessage"); + + b.Property("SendDmGreetMessage"); + + b.Property("VerbosePermissions"); + + b.Property("VoicePlusTextEnabled"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.HasIndex("LogSettingId"); + + b.HasIndex("RootPermissionId"); + + b.ToTable("GuildConfigs"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredLogChannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredVoicePresenceCHannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelCreated"); + + b.Property("ChannelDestroyed"); + + b.Property("ChannelId"); + + b.Property("ChannelUpdated"); + + b.Property("IsLogging"); + + b.Property("LogUserPresence"); + + b.Property("LogVoicePresence"); + + b.Property("MessageDeleted"); + + b.Property("MessageReceived"); + + b.Property("MessageUpdated"); + + b.Property("UserBanned"); + + b.Property("UserJoined"); + + b.Property("UserLeft"); + + b.Property("UserPresenceChannelId"); + + b.Property("UserUnbanned"); + + b.Property("UserUpdated"); + + b.Property("VoicePresenceChannelId"); + + b.HasKey("Id"); + + b.ToTable("LogSettings"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ModuleName"); + + b.Property("Prefix"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("ModulePrefixes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("AuthorId"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.ToTable("MusicPlaylists"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + 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.Services.Database.Models.PlayingStatus", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Status"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("PlayingStatus"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + 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.Services.Database.Models.Quote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("AuthorName") + .IsRequired(); + + b.Property("GuildId"); + + b.Property("Keyword") + .IsRequired(); + + b.Property("Text") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("Quotes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Icon"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("RaceAnimals"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("IsPrivate"); + + b.Property("Message"); + + b.Property("ServerId"); + + b.Property("UserId"); + + b.Property("When"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildId"); + + b.Property("Interval"); + + b.Property("Message"); + + b.HasKey("Id"); + + b.HasIndex("ChannelId") + .IsUnique(); + + b.ToTable("Repeaters"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildId", "RoleId") + .IsUnique(); + + b.ToTable("SelfAssignableRoles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.ToTable("TypingArticles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("Blacklist") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + { + b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + .WithMany("Bases") + .HasForeignKey("ClashWarId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("EightBallResponses") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FollowedStreams") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany() + .HasForeignKey("LogSettingId"); + + b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + .WithMany() + .HasForeignKey("RootPermissionId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredVoicePresenceChannelIds") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig", "BotConfig") + .WithMany("ModulePrefixes") + .HasForeignKey("BotConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + .WithOne("Previous") + .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RotatingStatusMessages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + { + b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + .WithMany("Songs") + .HasForeignKey("MusicPlaylistId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RaceAnimals") + .HasForeignKey("BotConfigId"); + }); + } + } +} diff --git a/src/NadekoBot/Migrations/20161003012137_blacklist.cs b/src/NadekoBot/Migrations/20161003012137_blacklist.cs new file mode 100644 index 00000000..f3c24df2 --- /dev/null +++ b/src/NadekoBot/Migrations/20161003012137_blacklist.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using Microsoft.EntityFrameworkCore.Migrations; +using NadekoBot.Services.Database.Models; + +namespace NadekoBot.Migrations +{ + public partial class blacklist : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Type", + table: "BlacklistItem", + nullable: false, + defaultValue: BlacklistItem.BlacklistType.Server); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Type", + table: "BlacklistItem"); + } + } +} diff --git a/src/NadekoBot/Modules/Permissions/Commands/BlacklistCommands.cs b/src/NadekoBot/Modules/Permissions/Commands/BlacklistCommands.cs new file mode 100644 index 00000000..de442bff --- /dev/null +++ b/src/NadekoBot/Modules/Permissions/Commands/BlacklistCommands.cs @@ -0,0 +1,104 @@ +using Discord; +using Discord.Commands; +using NadekoBot.Attributes; +using NadekoBot.Modules.Games.Trivia; +using NadekoBot.Services; +using NadekoBot.Services.Database; +using NadekoBot.Services.Database.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static NadekoBot.Services.Database.Models.BlacklistItem; + +namespace NadekoBot.Modules.Permissions +{ + public partial class Permissions + { + public enum AddRemove + { + Add, + Rem + } + + [Group] + public class BlacklistCommands + { + public static HashSet BlacklistedItems { get; set; } = new HashSet(); + + static BlacklistCommands() + { + using (var uow = DbHandler.UnitOfWork()) + { + BlacklistedItems = uow.BotConfig.GetOrCreate().Blacklist; + } + } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [OwnerOnly] + public Task UserBlacklist(IUserMessage imsg, AddRemove action, ulong id) + => Blacklist(imsg, action, id, BlacklistType.User); + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [OwnerOnly] + public Task ChannelBlacklist(IUserMessage imsg, AddRemove action, ulong id) + => Blacklist(imsg, action, id, BlacklistType.Channel); + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [OwnerOnly] + public Task ServerBlacklist(IUserMessage imsg, AddRemove action, ulong id) + => Blacklist(imsg, action, id, BlacklistType.Server); + + private async Task Blacklist(IUserMessage imsg, AddRemove action, ulong id, BlacklistType type) + { + var channel = imsg.Channel; + + using (var uow = DbHandler.UnitOfWork()) + { + if (action == AddRemove.Add) + { + var item = new BlacklistItem { ItemId = id, Type = type }; + uow.BotConfig.GetOrCreate().Blacklist.Add(item); + BlacklistedItems.Add(item); + } + else + { + uow.BotConfig.GetOrCreate().Blacklist.RemoveWhere(bi => bi.ItemId == id && bi.Type == type); + BlacklistedItems.RemoveWhere(bi => bi.ItemId == id && bi.Type == type); + } + await uow.CompleteAsync().ConfigureAwait(false); + } + if (action == AddRemove.Rem) + { + 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; + default: + break; + } + + } + + await channel.SendMessageAsync(":ok:").ConfigureAwait(false); + } + } + } +} From f7b3b67197c3568f56454d99de2e3f6ca3d8ccfe Mon Sep 17 00:00:00 2001 From: Kwoth Date: Mon, 3 Oct 2016 19:21:05 +0200 Subject: [PATCH 22/74] Invite filtering works --- .../NadekoSqliteContextModelSnapshot.cs | 58 ++++++ src/NadekoBot/Services/CommandHandler.cs | 174 +++++++++++------- .../Services/Database/Models/GuildConfig.cs | 18 ++ .../Impl/GuildConfigRepository.cs | 6 + src/NadekoBot/_Extensions/Extensions.cs | 5 + src/tests/Tests.cs | 16 +- 6 files changed, 201 insertions(+), 76 deletions(-) diff --git a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs index 75cc79bd..932e67dd 100644 --- a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs +++ b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs @@ -177,6 +177,42 @@ namespace NadekoBot.Migrations b.ToTable("EightBallResponses"); }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildConfigId"); + + b.Property("GuildConfigId1"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.HasIndex("GuildConfigId1"); + + b.ToTable("FilterChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildConfigId"); + + b.Property("Word"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FilteredWord"); + }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => { b.Property("Id") @@ -230,6 +266,10 @@ namespace NadekoBot.Migrations b.Property("ExclusiveSelfAssignedRoles"); + b.Property("FilterInvites"); + + b.Property("FilterWords"); + b.Property("GenerateCurrencyChannelId"); b.Property("GreetMessageChannelId"); @@ -576,6 +616,24 @@ namespace NadekoBot.Migrations .HasForeignKey("BotConfigId"); }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FilterInvitesChannelIds") + .HasForeignKey("GuildConfigId"); + + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FilterWordsChannelIds") + .HasForeignKey("GuildConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FilteredWords") + .HasForeignKey("GuildConfigId"); + }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => { b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") diff --git a/src/NadekoBot/Services/CommandHandler.cs b/src/NadekoBot/Services/CommandHandler.cs index 5703eaec..579790c2 100644 --- a/src/NadekoBot/Services/CommandHandler.cs +++ b/src/NadekoBot/Services/CommandHandler.cs @@ -13,6 +13,7 @@ using NadekoBot.Services.Database.Models; using NadekoBot.Modules.Permissions; using Microsoft.Data.Sqlite; using Discord.Net; +using NadekoBot.Extensions; namespace NadekoBot.Services { @@ -33,14 +34,14 @@ namespace NadekoBot.Services _client.MessageReceived += MessageReceivedHandler; } - private Task MessageReceivedHandler(IMessage msg) + private async Task MessageReceivedHandler(IMessage msg) { var usrMsg = msg as IUserMessage; if (usrMsg == null) - return Task.CompletedTask; + return; if (usrMsg.Author.IsBot) //no bots - return Task.CompletedTask; + return; var guild = (msg.Channel as ITextChannel)?.Guild; @@ -51,83 +52,124 @@ namespace NadekoBot.Services (bi.Type == BlacklistItem.BlacklistType.User && bi.ItemId == usrMsg.Author.Id))) != null) { _log.Warn("Attempt was made to run a command by a blacklisted {0}, id: {1}", blacklistedItem.Type, blacklistedItem.ItemId); - return Task.CompletedTask; + return; } - var throwaway = Task.Run(async () => + if (guild != null) { - var sw = new Stopwatch(); - sw.Start(); - - try + if (Permissions.FilterCommands.InviteFilteringChannels.Contains(usrMsg.Channel.Id) || + Permissions.FilterCommands.InviteFilteringServers.Contains(guild.Id)) { - - bool verbose = false; - Permission rootPerm = null; - string permRole = ""; - if (guild != null) + if (usrMsg.Content.IsDiscordInvite()) { - using (var uow = DbHandler.UnitOfWork()) + try { - var config = uow.GuildConfigs.PermissionsFor(guild.Id); - verbose = config.VerbosePermissions; - rootPerm = config.RootPermission; - permRole = config.PermissionRole.Trim().ToLowerInvariant(); + await usrMsg.DeleteAsync().ConfigureAwait(false); + return; } - } - - - var t = await ExecuteCommand(usrMsg, usrMsg.Content, guild, usrMsg.Author, rootPerm, permRole, MultiMatchHandling.Best); - var command = t.Item1; - var result = t.Item2; - sw.Stop(); - var channel = (usrMsg.Channel as ITextChannel); - if (result.IsSuccess) - { - CommandExecuted(this, new CommandExecutedEventArgs(usrMsg, command)); - _log.Info("Command Executed after {4}s\n\t" + - "User: {0}\n\t" + - "Server: {1}\n\t" + - "Channel: {2}\n\t" + - "Message: {3}", - usrMsg.Author + " [" + usrMsg.Author.Id + "]", // {0} - (channel == null ? "PRIVATE" : channel.Guild.Name + " [" + channel.Guild.Id + "]"), // {1} - (channel == null ? "PRIVATE" : channel.Name + " [" + channel.Id + "]"), // {2} - usrMsg.Content, // {3} - sw.Elapsed.TotalSeconds // {4} - ); - } - else if (!result.IsSuccess && result.Error != CommandError.UnknownCommand) - { - _log.Warn("Command Errored after {5}s\n\t" + - "User: {0}\n\t" + - "Server: {1}\n\t" + - "Channel: {2}\n\t" + - "Message: {3}\n\t" + - "Error: {4}", - usrMsg.Author + " [" + usrMsg.Author.Id + "]", // {0} - (channel == null ? "PRIVATE" : channel.Guild.Name + " [" + channel.Guild.Id + "]"), // {1} - (channel == null ? "PRIVATE" : channel.Name + " [" + channel.Id + "]"), // {2} - usrMsg.Content,// {3} - result.ErrorReason, // {4} - sw.Elapsed.TotalSeconds // {5} - ); - if (guild != null && command != null && result.Error == CommandError.Exception) + catch (HttpException ex) { - if (verbose) - await msg.Channel.SendMessageAsync(":warning: " + result.ErrorReason).ConfigureAwait(false); + _log.Warn("I do not have permission to filter invites in channel with id " + usrMsg.Channel.Id, ex); } } } - catch (Exception ex) + var filteredWords = Permissions.FilterCommands.FilteredWordsForChannel(usrMsg.Channel.Id, guild.Id).Concat(Permissions.FilterCommands.FilteredWordsForServer(guild.Id)); + var wordsInMessage = usrMsg.Content.ToLowerInvariant().Split(' '); + if (filteredWords.Any()) { - _log.Warn(ex, "Error in CommandHandler"); - if(ex.InnerException != null) - _log.Warn(ex.InnerException, "Inner Exception of the error in CommandHandler"); + try + { + await usrMsg.DeleteAsync().ConfigureAwait(false); + return; + } + catch (HttpException ex) + { + _log.Warn("I do not have permission to filter words in channel with id " + usrMsg.Channel.Id, ex); + } } - }); + } - return Task.CompletedTask; + try + { + bool verbose = false; + Permission rootPerm = null; + string permRole = ""; + if (guild != null) + { + using (var uow = DbHandler.UnitOfWork()) + { + var config = uow.GuildConfigs.PermissionsFor(guild.Id); + verbose = config.VerbosePermissions; + rootPerm = config.RootPermission; + permRole = config.PermissionRole.Trim().ToLowerInvariant(); + } + + + } + + var throwaway = Task.Run(async () => + { + var sw = new Stopwatch(); + sw.Start(); + + try + { + var t = await ExecuteCommand(usrMsg, usrMsg.Content, guild, usrMsg.Author, rootPerm, permRole, MultiMatchHandling.Best); + var command = t.Item1; + var result = t.Item2; + sw.Stop(); + var channel = (usrMsg.Channel as ITextChannel); + if (result.IsSuccess) + { + CommandExecuted(this, new CommandExecutedEventArgs(usrMsg, command)); + _log.Info("Command Executed after {4}s\n\t" + + "User: {0}\n\t" + + "Server: {1}\n\t" + + "Channel: {2}\n\t" + + "Message: {3}", + usrMsg.Author + " [" + usrMsg.Author.Id + "]", // {0} + (channel == null ? "PRIVATE" : channel.Guild.Name + " [" + channel.Guild.Id + "]"), // {1} + (channel == null ? "PRIVATE" : channel.Name + " [" + channel.Id + "]"), // {2} + usrMsg.Content, // {3} + sw.Elapsed.TotalSeconds // {4} + ); + } + else if (!result.IsSuccess && result.Error != CommandError.UnknownCommand) + { + _log.Warn("Command Errored after {5}s\n\t" + + "User: {0}\n\t" + + "Server: {1}\n\t" + + "Channel: {2}\n\t" + + "Message: {3}\n\t" + + "Error: {4}", + usrMsg.Author + " [" + usrMsg.Author.Id + "]", // {0} + (channel == null ? "PRIVATE" : channel.Guild.Name + " [" + channel.Guild.Id + "]"), // {1} + (channel == null ? "PRIVATE" : channel.Name + " [" + channel.Id + "]"), // {2} + usrMsg.Content,// {3} + result.ErrorReason, // {4} + sw.Elapsed.TotalSeconds // {5} + ); + if (guild != null && command != null && result.Error == CommandError.Exception) + { + if (verbose) + await msg.Channel.SendMessageAsync(":warning: " + result.ErrorReason).ConfigureAwait(false); + } + } + } + catch (Exception ex) + { + _log.Warn(ex, "Error in CommandHandler"); + if (ex.InnerException != null) + _log.Warn(ex.InnerException, "Inner Exception of the error in CommandHandler"); + } + }); + } + catch (Exception ex) + { + _log.Error(ex, "Error in the outter scope of the commandhandler."); + if (ex.InnerException != null) + _log.Error(ex.InnerException, "Inner exception: "); + } } public async Task> ExecuteCommand(IUserMessage message, string input, IGuild guild, IUser user, Permission rootPerm, string permRole, MultiMatchHandling multiMatchHandling = MultiMatchHandling.Best) { diff --git a/src/NadekoBot/Services/Database/Models/GuildConfig.cs b/src/NadekoBot/Services/Database/Models/GuildConfig.cs index 8f96a284..3ef24e35 100644 --- a/src/NadekoBot/Services/Database/Models/GuildConfig.cs +++ b/src/NadekoBot/Services/Database/Models/GuildConfig.cs @@ -46,5 +46,23 @@ namespace NadekoBot.Services.Database.Models public Permission RootPermission { get; set; } public bool VerbosePermissions { get; set; } public string PermissionRole { get; set; } = "Nadeko"; + + //filtering + public bool FilterInvites { get; set; } + public HashSet FilterInvitesChannelIds { get; set; } + + public bool FilterWords { get; set; } + public HashSet FilteredWords { get; set; } + public HashSet FilterWordsChannelIds { get; set; } + } + + public class FilterChannelId :DbEntity + { + public ulong ChannelId { get; set; } + } + + public class FilteredWord :DbEntity + { + public string Word { get; set; } } } diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs b/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs index 1066397b..9a82c191 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs +++ b/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs @@ -23,6 +23,9 @@ namespace NadekoBot.Services.Database.Repositories.Impl .ThenInclude(gc => gc.Previous) .Include(gc => gc.RootPermission) .ThenInclude(gc => gc.Next) + .Include(gc => gc.FilterInvitesChannelIds) + .Include(gc => gc.FilterWordsChannelIds) + .Include(gc => gc.FilteredWords) .ToList(); /// @@ -37,6 +40,9 @@ namespace NadekoBot.Services.Database.Repositories.Impl .ThenInclude(ls => ls.IgnoredChannels) .Include(gc => gc.LogSetting) .ThenInclude(ls => ls.IgnoredVoicePresenceChannelIds) + .Include(gc => gc.FilterInvitesChannelIds) + .Include(gc => gc.FilterWordsChannelIds) + .Include(gc => gc.FilteredWords) .FirstOrDefault(c => c.GuildId == guildId); if (config == null) diff --git a/src/NadekoBot/_Extensions/Extensions.cs b/src/NadekoBot/_Extensions/Extensions.cs index 98a1be46..c226e45e 100644 --- a/src/NadekoBot/_Extensions/Extensions.cs +++ b/src/NadekoBot/_Extensions/Extensions.cs @@ -298,5 +298,10 @@ namespace NadekoBot.Extensions imageStream.Position = 0; return imageStream; } + + private static readonly Regex filterRegex = new Regex(@"(?:discord(?:\.gg|app\.com\/invite)\/(?([\w]{16}|(?:[\w]+-?){3})))", RegexOptions.Compiled | RegexOptions.IgnoreCase); + + public static bool IsDiscordInvite(this string str) + => filterRegex.IsMatch(str); } } \ No newline at end of file diff --git a/src/tests/Tests.cs b/src/tests/Tests.cs index fdfa5e85..57d1e8f9 100644 --- a/src/tests/Tests.cs +++ b/src/tests/Tests.cs @@ -40,9 +40,11 @@ namespace Tests root.Prepend(new Permission() { SecondaryTargetName = "Added" }); + root = root.GetRoot(); + Assert.Equal(11, root.Count()); - Assert.Equal("Added", root.AsEnumerable().Last().SecondaryTargetName); + Assert.Equal("Added", root.AsEnumerable().First().SecondaryTargetName); } [Fact] @@ -87,15 +89,9 @@ namespace Tests Assert.Equal("3", removed.SecondaryTargetName); Assert.Equal(9, root.Count()); - - var temp = root.Next; - removed = root.RemoveAt(0); - - Assert.Equal(8, temp.Count()); - Assert.Equal(null, temp.Previous); - - Assert.Throws(typeof(IndexOutOfRangeException), () => { temp.RemoveAt(8); }); - Assert.Throws(typeof(IndexOutOfRangeException), () => { temp.RemoveAt(-1); }); + Assert.Throws(typeof(IndexOutOfRangeException), () => { root.RemoveAt(0); }); + Assert.Throws(typeof(IndexOutOfRangeException), () => { root.RemoveAt(9); }); + Assert.Throws(typeof(IndexOutOfRangeException), () => { root.RemoveAt(-1); }); } [Fact] From f12aa1694868c03d913dab4d5d482968973c6b36 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Mon, 3 Oct 2016 19:37:25 +0200 Subject: [PATCH 23/74] Migrations again O.o --- .../20161003170208_filtering.Designer.cs | 708 ++++++++++++++++++ .../Migrations/20161003170208_filtering.cs | 103 +++ .../Permissions/Commands/FilterCommands.cs | 217 ++++++ 3 files changed, 1028 insertions(+) create mode 100644 src/NadekoBot/Migrations/20161003170208_filtering.Designer.cs create mode 100644 src/NadekoBot/Migrations/20161003170208_filtering.cs create mode 100644 src/NadekoBot/Modules/Permissions/Commands/FilterCommands.cs diff --git a/src/NadekoBot/Migrations/20161003170208_filtering.Designer.cs b/src/NadekoBot/Migrations/20161003170208_filtering.Designer.cs new file mode 100644 index 00000000..8d173fd5 --- /dev/null +++ b/src/NadekoBot/Migrations/20161003170208_filtering.Designer.cs @@ -0,0 +1,708 @@ +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using NadekoBot.Services.Database.Impl; + +namespace NadekoBot.Migrations +{ + [DbContext(typeof(NadekoSqliteContext))] + [Migration("20161003170208_filtering")] + partial class filtering + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { + modelBuilder + .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ItemId"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("BlacklistItem"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BufferSize"); + + b.Property("CurrencyGenerationChance"); + + b.Property("CurrencyGenerationCooldown"); + + b.Property("CurrencyName"); + + b.Property("CurrencyPluralName"); + + b.Property("CurrencySign"); + + b.Property("DontJoinServers"); + + b.Property("ForwardMessages"); + + b.Property("ForwardToAllOwners"); + + b.Property("RemindMessageFormat"); + + b.Property("RotatingStatuses"); + + b.HasKey("Id"); + + 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("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("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.ConvertUnit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("InternalTrigger"); + + b.Property("Modifier"); + + b.Property("UnitType"); + + b.HasKey("Id"); + + b.ToTable("ConversionUnits"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Currency"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("Name"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Donators"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("EightBallResponses"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildConfigId"); + + b.Property("GuildConfigId1"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.HasIndex("GuildConfigId1"); + + b.ToTable("FilterChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildConfigId"); + + b.Property("Word"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FilteredWord"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("LastStatus"); + + b.Property("Type"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FollowedStream"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoAssignRoleId"); + + b.Property("AutoDeleteByeMessages"); + + b.Property("AutoDeleteGreetMessages"); + + b.Property("AutoDeleteGreetMessagesTimer"); + + b.Property("AutoDeleteSelfAssignedRoleMessages"); + + b.Property("ByeMessageChannelId"); + + b.Property("ChannelByeMessageText"); + + b.Property("ChannelGreetMessageText"); + + b.Property("DefaultMusicVolume"); + + b.Property("DeleteMessageOnCommand"); + + b.Property("DmGreetMessageText"); + + b.Property("ExclusiveSelfAssignedRoles"); + + b.Property("FilterInvites"); + + b.Property("FilterWords"); + + b.Property("GenerateCurrencyChannelId"); + + b.Property("GreetMessageChannelId"); + + b.Property("GuildId"); + + b.Property("LogSettingId"); + + b.Property("PermissionRole"); + + b.Property("RootPermissionId"); + + b.Property("SendChannelByeMessage"); + + b.Property("SendChannelGreetMessage"); + + b.Property("SendDmGreetMessage"); + + b.Property("VerbosePermissions"); + + b.Property("VoicePlusTextEnabled"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.HasIndex("LogSettingId"); + + b.HasIndex("RootPermissionId"); + + b.ToTable("GuildConfigs"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredLogChannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredVoicePresenceCHannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelCreated"); + + b.Property("ChannelDestroyed"); + + b.Property("ChannelId"); + + b.Property("ChannelUpdated"); + + b.Property("IsLogging"); + + b.Property("LogUserPresence"); + + b.Property("LogVoicePresence"); + + b.Property("MessageDeleted"); + + b.Property("MessageReceived"); + + b.Property("MessageUpdated"); + + b.Property("UserBanned"); + + b.Property("UserJoined"); + + b.Property("UserLeft"); + + b.Property("UserPresenceChannelId"); + + b.Property("UserUnbanned"); + + b.Property("UserUpdated"); + + b.Property("VoicePresenceChannelId"); + + b.HasKey("Id"); + + b.ToTable("LogSettings"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ModuleName"); + + b.Property("Prefix"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("ModulePrefixes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("AuthorId"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.ToTable("MusicPlaylists"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + 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.Services.Database.Models.PlayingStatus", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Status"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("PlayingStatus"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + 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.Services.Database.Models.Quote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("AuthorName") + .IsRequired(); + + b.Property("GuildId"); + + b.Property("Keyword") + .IsRequired(); + + b.Property("Text") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("Quotes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Icon"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("RaceAnimals"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("IsPrivate"); + + b.Property("Message"); + + b.Property("ServerId"); + + b.Property("UserId"); + + b.Property("When"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildId"); + + b.Property("Interval"); + + b.Property("Message"); + + b.HasKey("Id"); + + b.HasIndex("ChannelId") + .IsUnique(); + + b.ToTable("Repeaters"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildId", "RoleId") + .IsUnique(); + + b.ToTable("SelfAssignableRoles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.ToTable("TypingArticles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("Blacklist") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + { + b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + .WithMany("Bases") + .HasForeignKey("ClashWarId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("EightBallResponses") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FilterInvitesChannelIds") + .HasForeignKey("GuildConfigId"); + + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FilterWordsChannelIds") + .HasForeignKey("GuildConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FilteredWords") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FollowedStreams") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany() + .HasForeignKey("LogSettingId"); + + b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + .WithMany() + .HasForeignKey("RootPermissionId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredVoicePresenceChannelIds") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig", "BotConfig") + .WithMany("ModulePrefixes") + .HasForeignKey("BotConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + .WithOne("Previous") + .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RotatingStatusMessages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + { + b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + .WithMany("Songs") + .HasForeignKey("MusicPlaylistId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RaceAnimals") + .HasForeignKey("BotConfigId"); + }); + } + } +} diff --git a/src/NadekoBot/Migrations/20161003170208_filtering.cs b/src/NadekoBot/Migrations/20161003170208_filtering.cs new file mode 100644 index 00000000..64e2d5e9 --- /dev/null +++ b/src/NadekoBot/Migrations/20161003170208_filtering.cs @@ -0,0 +1,103 @@ +using System; +using System.Collections.Generic; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace NadekoBot.Migrations +{ + public partial class filtering : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "FilterChannelId", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + ChannelId = table.Column(nullable: false), + GuildConfigId = table.Column(nullable: true), + GuildConfigId1 = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_FilterChannelId", x => x.Id); + table.ForeignKey( + name: "FK_FilterChannelId_GuildConfigs_GuildConfigId", + column: x => x.GuildConfigId, + principalTable: "GuildConfigs", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_FilterChannelId_GuildConfigs_GuildConfigId1", + column: x => x.GuildConfigId1, + principalTable: "GuildConfigs", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "FilteredWord", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + GuildConfigId = table.Column(nullable: true), + Word = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_FilteredWord", x => x.Id); + table.ForeignKey( + name: "FK_FilteredWord_GuildConfigs_GuildConfigId", + column: x => x.GuildConfigId, + principalTable: "GuildConfigs", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.AddColumn( + name: "FilterInvites", + table: "GuildConfigs", + nullable: false, + defaultValue: false); + + migrationBuilder.AddColumn( + name: "FilterWords", + table: "GuildConfigs", + nullable: false, + defaultValue: false); + + migrationBuilder.CreateIndex( + name: "IX_FilterChannelId_GuildConfigId", + table: "FilterChannelId", + column: "GuildConfigId"); + + migrationBuilder.CreateIndex( + name: "IX_FilterChannelId_GuildConfigId1", + table: "FilterChannelId", + column: "GuildConfigId1"); + + migrationBuilder.CreateIndex( + name: "IX_FilteredWord_GuildConfigId", + table: "FilteredWord", + column: "GuildConfigId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "FilterInvites", + table: "GuildConfigs"); + + migrationBuilder.DropColumn( + name: "FilterWords", + table: "GuildConfigs"); + + migrationBuilder.DropTable( + name: "FilterChannelId"); + + migrationBuilder.DropTable( + name: "FilteredWord"); + } + } +} diff --git a/src/NadekoBot/Modules/Permissions/Commands/FilterCommands.cs b/src/NadekoBot/Modules/Permissions/Commands/FilterCommands.cs new file mode 100644 index 00000000..127cb8d4 --- /dev/null +++ b/src/NadekoBot/Modules/Permissions/Commands/FilterCommands.cs @@ -0,0 +1,217 @@ +using Discord; +using Discord.Commands; +using NadekoBot.Attributes; +using NadekoBot.Services; +using NadekoBot.Services.Database; +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NadekoBot.Modules.Permissions +{ + public partial class Permissions + { + [Group] + public class FilterCommands + { + public static HashSet InviteFilteringChannels { get; set; } + public static HashSet InviteFilteringServers { get; set; } + + //serverid, filteredwords + private static ConcurrentDictionary> ServerFilteredWords { get; set; } + + public static HashSet WordFilteringChannels { get; set; } + public static HashSet WordFilteringServers { get; set; } + + public static HashSet FilteredWordsForChannel(ulong channelId, ulong guildId) + { + var words = FilteredWordsForServer(guildId); + + if (!words.Any() || WordFilteringChannels.Contains(channelId)) + return words; + return new HashSet(); + } + + public static HashSet FilteredWordsForServer(ulong guildId) + { + var words = new HashSet(); + ServerFilteredWords.TryGetValue(guildId, out words); + return words; + } + + static FilterCommands() + { + using (var uow = DbHandler.UnitOfWork()) + { + var guildConfigs = uow.GuildConfigs.GetAll(); + + InviteFilteringServers = new HashSet(guildConfigs.Where(gc => gc.FilterInvites).Select(gc => gc.GuildId)); + InviteFilteringChannels = new HashSet(guildConfigs.SelectMany(gc => gc.FilterInvitesChannelIds.Select(fci => fci.ChannelId))); + + var dict = guildConfigs.ToDictionary(gc => gc.GuildId, gc => new HashSet(gc.FilteredWords.Select(fw => fw.Word))); + + ServerFilteredWords = new ConcurrentDictionary>(dict); + + var serverFiltering = guildConfigs.Where(gc => gc.FilterWords); + WordFilteringServers = new HashSet(serverFiltering.Select(gc => gc.GuildId)); + + WordFilteringChannels = new HashSet(guildConfigs.SelectMany(gc => gc.FilterWordsChannelIds.Select(fwci => fwci.ChannelId))); + + } + } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task SrvrFilterInv(IUserMessage imsg) + { + var channel = (ITextChannel)imsg.Channel; + + bool enabled; + using (var uow = DbHandler.UnitOfWork()) + { + var config = uow.GuildConfigs.For(channel.Guild.Id); + enabled = config.FilterInvites = !config.FilterInvites; + await uow.CompleteAsync().ConfigureAwait(false); + } + + if (enabled) + { + InviteFilteringServers.Add(channel.Guild.Id); + await channel.SendMessageAsync("`Invite filtering enabled on the whole server.`").ConfigureAwait(false); + } + else + { + InviteFilteringServers.Remove(channel.Guild.Id); + await channel.SendMessageAsync("`Invite filtering disabled on the whole server.`").ConfigureAwait(false); + } + } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task ChnlFilterInv(IUserMessage imsg) + { + var channel = (ITextChannel)imsg.Channel; + + int removed; + using (var uow = DbHandler.UnitOfWork()) + { + var config = uow.GuildConfigs.For(channel.Guild.Id); + removed = config.FilterInvitesChannelIds.RemoveWhere(fc => fc.ChannelId == channel.Id); + if (removed == 0) + { + config.FilterInvitesChannelIds.Add(new Services.Database.Models.FilterChannelId() + { + ChannelId = channel.Id + }); + } + await uow.CompleteAsync().ConfigureAwait(false); + } + + if (removed == 0) + { + InviteFilteringChannels.Add(channel.Id); + await channel.SendMessageAsync("`Invite filtering enabled on this channel.`").ConfigureAwait(false); + } + else + { + InviteFilteringChannels.Remove(channel.Id); + await channel.SendMessageAsync("`Invite filtering disabled on this channel.`").ConfigureAwait(false); + } + } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task SrvrFilterWords(IUserMessage imsg) + { + var channel = (ITextChannel)imsg.Channel; + + bool enabled; + using (var uow = DbHandler.UnitOfWork()) + { + var config = uow.GuildConfigs.For(channel.Guild.Id); + enabled = config.FilterWords = !config.FilterWords; + await uow.CompleteAsync().ConfigureAwait(false); + } + + if (enabled) + { + WordFilteringServers.Add(channel.Guild.Id); + await channel.SendMessageAsync("`Word filtering enabled on the whole server.`").ConfigureAwait(false); + } + else + { + WordFilteringServers.Remove(channel.Guild.Id); + await channel.SendMessageAsync("`Word filtering disabled on the whole server.`").ConfigureAwait(false); + } + } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task ChnlFilterWords(IUserMessage imsg) + { + var channel = (ITextChannel)imsg.Channel; + + int removed; + using (var uow = DbHandler.UnitOfWork()) + { + var config = uow.GuildConfigs.For(channel.Guild.Id); + removed = config.FilterWordsChannelIds.RemoveWhere(fc => fc.ChannelId == channel.Id); + if (removed == 0) + { + config.FilterWordsChannelIds.Add(new Services.Database.Models.FilterChannelId() + { + ChannelId = channel.Id + }); + } + await uow.CompleteAsync().ConfigureAwait(false); + } + + if (removed == 0) + { + WordFilteringChannels.Add(channel.Id); + await channel.SendMessageAsync("`Word filtering enabled on this channel.`").ConfigureAwait(false); + } + else + { + WordFilteringChannels.Remove(channel.Id); + await channel.SendMessageAsync("`Word filtering disabled on this channel.`").ConfigureAwait(false); + } + } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task AddFilterWord(IUserMessage imsg, [Remainder] string word) + { + var channel = (ITextChannel)imsg.Channel; + + word = word?.Trim().ToLowerInvariant(); + + if (string.IsNullOrWhiteSpace(word)) + return; + + bool contains; + using (var uow = DbHandler.UnitOfWork()) + { + var config = uow.GuildConfigs.For(channel.Guild.Id); + + contains = config.FilteredWords.Any(fw => fw.Word == word); + + if (!contains) + config.FilteredWords.Add(new Services.Database.Models.FilteredWord() { Word = word}); + } + + if (!contains) + { + var filteredWords = ServerFilteredWords.GetOrAdd(channel.Guild.Id, new HashSet()); + + filteredWords.Add(word); + await channel.SendMessageAsync($"Word `{word}` successfully added to the list of filtered words."); + } + } + + } + } +} From 9c0ff08c677dccdfa58250834a41c42fcdfa075f Mon Sep 17 00:00:00 2001 From: Kwoth Date: Mon, 3 Oct 2016 23:07:22 +0200 Subject: [PATCH 24/74] Filtering words works --- .../Permissions/Commands/FilterCommands.cs | 59 +++++++++++++------ .../Resources/CommandStrings.Designer.cs | 54 ++++++++--------- src/NadekoBot/Resources/CommandStrings.resx | 12 ++-- src/NadekoBot/Services/CommandHandler.cs | 7 ++- 4 files changed, 78 insertions(+), 54 deletions(-) diff --git a/src/NadekoBot/Modules/Permissions/Commands/FilterCommands.cs b/src/NadekoBot/Modules/Permissions/Commands/FilterCommands.cs index 127cb8d4..f8cf9ae6 100644 --- a/src/NadekoBot/Modules/Permissions/Commands/FilterCommands.cs +++ b/src/NadekoBot/Modules/Permissions/Commands/FilterCommands.cs @@ -28,17 +28,17 @@ namespace NadekoBot.Modules.Permissions public static HashSet FilteredWordsForChannel(ulong channelId, ulong guildId) { - var words = FilteredWordsForServer(guildId); - - if (!words.Any() || WordFilteringChannels.Contains(channelId)) - return words; - return new HashSet(); + HashSet words = new HashSet(); + if(WordFilteringChannels.Contains(channelId)) + ServerFilteredWords.TryGetValue(guildId, out words); + return words; } public static HashSet FilteredWordsForServer(ulong guildId) { var words = new HashSet(); - ServerFilteredWords.TryGetValue(guildId, out words); + if(WordFilteringServers.Contains(guildId)) + ServerFilteredWords.TryGetValue(guildId, out words); return words; } @@ -80,12 +80,12 @@ namespace NadekoBot.Modules.Permissions if (enabled) { InviteFilteringServers.Add(channel.Guild.Id); - await channel.SendMessageAsync("`Invite filtering enabled on the whole server.`").ConfigureAwait(false); + await channel.SendMessageAsync("`Invite filtering enabled on this server.`").ConfigureAwait(false); } else { InviteFilteringServers.Remove(channel.Guild.Id); - await channel.SendMessageAsync("`Invite filtering disabled on the whole server.`").ConfigureAwait(false); + await channel.SendMessageAsync("`Invite filtering disabled on this server.`").ConfigureAwait(false); } } @@ -139,12 +139,12 @@ namespace NadekoBot.Modules.Permissions if (enabled) { WordFilteringServers.Add(channel.Guild.Id); - await channel.SendMessageAsync("`Word filtering enabled on the whole server.`").ConfigureAwait(false); + await channel.SendMessageAsync("`Word filtering enabled on this server.`").ConfigureAwait(false); } else { WordFilteringServers.Remove(channel.Guild.Id); - await channel.SendMessageAsync("`Word filtering disabled on the whole server.`").ConfigureAwait(false); + await channel.SendMessageAsync("`Word filtering disabled on this server.`").ConfigureAwait(false); } } @@ -183,7 +183,7 @@ namespace NadekoBot.Modules.Permissions [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] - public async Task AddFilterWord(IUserMessage imsg, [Remainder] string word) + public async Task FilterWord(IUserMessage imsg, [Remainder] string word) { var channel = (ITextChannel)imsg.Channel; @@ -192,26 +192,47 @@ namespace NadekoBot.Modules.Permissions if (string.IsNullOrWhiteSpace(word)) return; - bool contains; + int removed; using (var uow = DbHandler.UnitOfWork()) { var config = uow.GuildConfigs.For(channel.Guild.Id); - contains = config.FilteredWords.Any(fw => fw.Word == word); + removed = config.FilteredWords.RemoveWhere(fw => fw.Word == word); - if (!contains) - config.FilteredWords.Add(new Services.Database.Models.FilteredWord() { Word = word}); + if (removed == 0) + config.FilteredWords.Add(new Services.Database.Models.FilteredWord() { Word = word }); + + await uow.CompleteAsync().ConfigureAwait(false); } - if (!contains) - { - var filteredWords = ServerFilteredWords.GetOrAdd(channel.Guild.Id, new HashSet()); + var filteredWords = ServerFilteredWords.GetOrAdd(channel.Guild.Id, new HashSet()); + if (removed == 0) + { filteredWords.Add(word); - await channel.SendMessageAsync($"Word `{word}` successfully added to the list of filtered words."); + await channel.SendMessageAsync($"Word `{word}` successfully added to the list of filtered words.") + .ConfigureAwait(false); + } + else + { + filteredWords.Remove(word); + await channel.SendMessageAsync($"Word `{word}` removed from the list of filtered words.") + .ConfigureAwait(false); } } + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [RequireContext(ContextType.Guild)] + public async Task LstFilterWords(IUserMessage imsg) + { + var channel = (ITextChannel)imsg.Channel; + + HashSet filteredWords; + ServerFilteredWords.TryGetValue(channel.Guild.Id, out filteredWords); + + await channel.SendMessageAsync($"`List of banned words:`\n" + string.Join(",\n", filteredWords)) + .ConfigureAwait(false); + } } } } diff --git a/src/NadekoBot/Resources/CommandStrings.Designer.cs b/src/NadekoBot/Resources/CommandStrings.Designer.cs index c841bb54..a5bad982 100644 --- a/src/NadekoBot/Resources/CommandStrings.Designer.cs +++ b/src/NadekoBot/Resources/CommandStrings.Designer.cs @@ -113,33 +113,6 @@ namespace NadekoBot.Resources { } } - /// - /// Looks up a localized string similar to Adds a new word to the list of filtered words. - /// - public static string addfilterword_desc { - get { - return ResourceManager.GetString("addfilterword_desc", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to `;afw poop`. - /// - public static string addfilterword_summary { - get { - return ResourceManager.GetString("addfilterword_summary", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to addfilterword afw. - /// - public static string addfilterword_text { - get { - return ResourceManager.GetString("addfilterword_text", resourceCulture); - } - } - /// /// Looks up a localized string similar to Adds a specified string to the list of playing strings to rotate. Supported placeholders: %servers%, %users%, %playing%, %queued%, %trivia% **Bot Owner Only!**. /// @@ -2543,6 +2516,33 @@ namespace NadekoBot.Resources { } } + /// + /// Looks up a localized string similar to Adds or removes (if it exists) a word from the list of filtered words. + /// + public static string filterword_desc { + get { + return ResourceManager.GetString("filterword_desc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to `;fw poop`. + /// + public static string filterword_summary { + get { + return ResourceManager.GetString("filterword_summary", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to fw. + /// + public static string filterword_text { + get { + return ResourceManager.GetString("filterword_text", resourceCulture); + } + } + /// /// Looks up a localized string similar to Shows a unicode fire message. Optional parameter [x] tells her how many times to repeat the fire.. /// diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index 58f84736..8a376095 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -981,14 +981,14 @@ `;cfw enable #general-chat` - - addfilterword afw + + fw - - Adds a new word to the list of filtered words + + Adds or removes (if it exists) a word from the list of filtered words - - `;afw poop` + + `;fw poop` rmvfilterword rw diff --git a/src/NadekoBot/Services/CommandHandler.cs b/src/NadekoBot/Services/CommandHandler.cs index 579790c2..979da273 100644 --- a/src/NadekoBot/Services/CommandHandler.cs +++ b/src/NadekoBot/Services/CommandHandler.cs @@ -55,7 +55,7 @@ namespace NadekoBot.Services return; } - if (guild != null) + if (guild != null && guild.OwnerId != usrMsg.Author.Id) { if (Permissions.FilterCommands.InviteFilteringChannels.Contains(usrMsg.Channel.Id) || Permissions.FilterCommands.InviteFilteringServers.Contains(guild.Id)) @@ -73,9 +73,12 @@ namespace NadekoBot.Services } } } + } + if (guild != null && guild.OwnerId != usrMsg.Author.Id) + { var filteredWords = Permissions.FilterCommands.FilteredWordsForChannel(usrMsg.Channel.Id, guild.Id).Concat(Permissions.FilterCommands.FilteredWordsForServer(guild.Id)); var wordsInMessage = usrMsg.Content.ToLowerInvariant().Split(' '); - if (filteredWords.Any()) + if (filteredWords.Any(w=>wordsInMessage.Contains(w))) { try { From c9e9a4255d20ea73218c2dce0f48e3d7281f138a Mon Sep 17 00:00:00 2001 From: Kwoth Date: Tue, 4 Oct 2016 23:15:57 +0200 Subject: [PATCH 25/74] Changed some strings --- .../Modules/Utility/Commands/QuoteCommands.cs | 4 +- .../Resources/CommandStrings.Designer.cs | 138 ++---------------- src/NadekoBot/Resources/CommandStrings.resx | 66 ++------- src/NadekoBot/project.json | 2 +- 4 files changed, 33 insertions(+), 177 deletions(-) diff --git a/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs b/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs index 4995703e..83f48972 100644 --- a/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs +++ b/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs @@ -16,7 +16,7 @@ namespace NadekoBot.Modules.Utility { [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] - public async Task ShowQuote(IUserMessage umsg, string keyword) + public async Task ShowQuote(IUserMessage umsg, [Remainder] string keyword) { var channel = (ITextChannel)umsg.Channel; @@ -65,7 +65,7 @@ namespace NadekoBot.Modules.Utility [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] - public async Task DeleteQuote(IUserMessage umsg, string keyword) + public async Task DeleteQuote(IUserMessage umsg, [Remainder] string keyword) { var channel = (ITextChannel)umsg.Channel; diff --git a/src/NadekoBot/Resources/CommandStrings.Designer.cs b/src/NadekoBot/Resources/CommandStrings.Designer.cs index a5bad982..13886cc4 100644 --- a/src/NadekoBot/Resources/CommandStrings.Designer.cs +++ b/src/NadekoBot/Resources/CommandStrings.Designer.cs @@ -87,7 +87,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Add a custom reaction. Guide here: <https://github.com/Kwoth/NadekoBot/wiki/Custom-Reactions> **Bot Owner Only!**. + /// Looks up a localized string similar to Add a custom reaction. Guide here: <https://github.com/Kwoth/NadekoBot/wiki/Custom-Reactions>. /// public static string addcustreact_desc { get { @@ -114,7 +114,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Adds a specified string to the list of playing strings to rotate. Supported placeholders: %servers%, %users%, %playing%, %queued%, %trivia% **Bot Owner Only!**. + /// Looks up a localized string similar to Adds a specified string to the list of playing strings to rotate. Supported placeholders: %servers%, %users%, %playing%, %queued%. /// public static string addplaying_desc { get { @@ -141,7 +141,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Adds a new quote with the specified name (single word) and message (no limit).. + /// Looks up a localized string similar to Adds a new quote with the specified name and message (no limit).. /// public static string addquote_desc { get { @@ -150,7 +150,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `.. abc My message`. + /// Looks up a localized string similar to `.. abc sayhi Hi`. /// public static string addquote_summary { get { @@ -168,34 +168,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Sets permissions for all commands from a certain module at the channel level.. - /// - public static string allchnlcmds_desc { - get { - return ResourceManager.GetString("allchnlcmds_desc", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to `;acc "module name" [enable/disable] SomeChannel`. - /// - public static string allchnlcmds_summary { - get { - return ResourceManager.GetString("allchnlcmds_summary", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to allchnlcmds acc. - /// - public static string allchnlcmds_text { - get { - return ResourceManager.GetString("allchnlcmds_text", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Sets permissions for all modules at the channel level.. + /// Looks up a localized string similar to Enable or disable all modules in a specified channel.. /// public static string allchnlmdls_desc { get { @@ -204,7 +177,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `;acm [enable/disable] SomeChannel`. + /// Looks up a localized string similar to `;acm enable #SomeChannel`. /// public static string allchnlmdls_summary { get { @@ -240,7 +213,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to allcmdcooldowns. + /// Looks up a localized string similar to allcmdcooldowns acmdcds. /// public static string allcmdcooldowns_text { get { @@ -249,34 +222,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Sets permissions for all commands from a certain module at the role level.. - /// - public static string allrolecmds_desc { - get { - return ResourceManager.GetString("allrolecmds_desc", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to `;arc "module name" [enable/disable] MyRole`. - /// - public static string allrolecmds_summary { - get { - return ResourceManager.GetString("allrolecmds_summary", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to allrolecmds acmdcds. - /// - public static string allrolecmds_text { - get { - return ResourceManager.GetString("allrolecmds_text", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Sets permissions for all modules at the role level.. + /// Looks up a localized string similar to Enable or disable all modules for a specific role.. /// public static string allrolemdls_desc { get { @@ -303,34 +249,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Sets permissions for all commands from a certain module at the server level.. - /// - public static string allsrvrcmds_desc { - get { - return ResourceManager.GetString("allsrvrcmds_desc", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to `;asc "module name" [enable/disable]`. - /// - public static string allsrvrcmds_summary { - get { - return ResourceManager.GetString("allsrvrcmds_summary", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to allsrvrcmds asc. - /// - public static string allsrvrcmds_text { - get { - return ResourceManager.GetString("allsrvrcmds_text", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Sets permissions for all modules at the server level.. + /// Looks up a localized string similar to Enable or disable all modules for your server.. /// public static string allsrvrmdls_desc { get { @@ -357,34 +276,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Sets permission for all commands from a module for a specific user.. - /// - public static string allusrcmds_desc { - get { - return ResourceManager.GetString("allusrcmds_desc", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to `;auc Searches disable @Someone`. - /// - public static string allusrcmds_summary { - get { - return ResourceManager.GetString("allusrcmds_summary", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to allusrcmds auc. - /// - public static string allusrcmds_text { - get { - return ResourceManager.GetString("allusrcmds_text", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Sets permission for all modules for a specific user.. + /// Looks up a localized string similar to Enable or disable all modules for a specific user.. /// public static string allusrmdls_desc { get { @@ -420,7 +312,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `~aq aquarion evol`. + /// Looks up a localized string similar to `~ani aquarion evol`. /// public static string ani_summary { get { @@ -438,7 +330,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Sends a message to all servers' general channel bot is connected to.**Bot Owner Only!**. + /// Looks up a localized string similar to Sends a message to all servers' general channel bot is connected to.. /// public static string announce_desc { get { @@ -465,7 +357,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Adds a role, or list of roles separated by whitespace(use quotations for multiword roles) to the list of self-assignable roles. **Needs Manage Roles Permissions.**. + /// Looks up a localized string similar to Adds a role, or list of roles separated by whitespace(use quotations for multiword roles) to the list of self-assignable roles.. /// public static string asar_desc { get { @@ -519,7 +411,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Automaticaly assigns a specified role to every user who joins the server. **Needs Manage Roles Permissions.**. + /// Looks up a localized string similar to Automaticaly assigns a specified role to every user who joins the server. . /// public static string autoassignrole_desc { get { @@ -627,7 +519,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Bans a user by id or name with an optional message. **Needs Ban Permissions.**. + /// Looks up a localized string similar to Bans a user by id or name with an optional message.. /// public static string ban_desc { get { diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index 8a376095..b6fc2550 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -301,7 +301,7 @@ addplaying adpl - Adds a specified string to the list of playing strings to rotate. Supported placeholders: %servers%, %users%, %playing%, %queued%, %trivia% **Bot Owner Only!** + Adds a specified string to the list of playing strings to rotate. Supported placeholders: %servers%, %users%, %playing%, %queued% `.adpl` @@ -382,7 +382,7 @@ asar - Adds a role, or list of roles separated by whitespace(use quotations for multiword roles) to the list of self-assignable roles. **Needs Manage Roles Permissions.** + Adds a role, or list of roles separated by whitespace(use quotations for multiword roles) to the list of self-assignable roles. `.asar Gamer` @@ -436,7 +436,7 @@ addcustreact acr - Add a custom reaction. Guide here: <https://github.com/Kwoth/NadekoBot/wiki/Custom-Reactions> **Bot Owner Only!** + Add a custom reaction. Guide here: <https://github.com/Kwoth/NadekoBot/wiki/Custom-Reactions> `.acr "hello" Hi there %user%` @@ -481,7 +481,7 @@ autoassignrole aar - Automaticaly assigns a specified role to every user who joins the server. **Needs Manage Roles Permissions.** + Automaticaly assigns a specified role to every user who joins the server. `.aar` to disable, `.aar Role Name` to enable @@ -589,7 +589,7 @@ ban b - Bans a user by id or name with an optional message. **Needs Ban Permissions.** + Bans a user by id or name with an optional message. `.b "@some Guy" Your behaviour is toxic.` @@ -805,7 +805,7 @@ announce - Sends a message to all servers' general channel bot is connected to.**Bot Owner Only!** + Sends a message to all servers' general channel bot is connected to. `.announce Useless spam` @@ -1174,56 +1174,29 @@ allsrvrmdls asm - Sets permissions for all modules at the server level. + Enable or disable all modules for your server. `;asm [enable/disable]` - - allsrvrcmds asc - - - Sets permissions for all commands from a certain module at the server level. - - - `;asc "module name" [enable/disable]` - allchnlmdls acm - Sets permissions for all modules at the channel level. + Enable or disable all modules in a specified channel. - `;acm [enable/disable] SomeChannel` - - - allchnlcmds acc - - - Sets permissions for all commands from a certain module at the channel level. - - - `;acc "module name" [enable/disable] SomeChannel` + `;acm enable #SomeChannel` allrolemdls arm - Sets permissions for all modules at the role level. + Enable or disable all modules for a specific role. `;arm [enable/disable] MyRole` - - allrolecmds acmdcds - - - Sets permissions for all commands from a certain module at the role level. - - - `;arc "module name" [enable/disable] MyRole` - ubl @@ -1279,7 +1252,7 @@ `;cmdcd "some cmd" 5` - allcmdcooldowns + allcmdcooldowns acmdcds Shows a list of all commands and their respective cooldowns. @@ -1291,10 +1264,10 @@ . - Adds a new quote with the specified name (single word) and message (no limit). + Adds a new quote with the specified name and message (no limit). - `.. abc My message` + `.. abc sayhi Hi` .. @@ -2131,7 +2104,7 @@ Queries anilist for an anime and shows the first result. - `~aq aquarion evol` + `~ani aquarion evol` imdb @@ -2646,17 +2619,8 @@ listperms lp - - Sets permission for all commands from a module for a specific user. - - - `;auc Searches disable @Someone` - - - allusrcmds auc - - Sets permission for all modules for a specific user. + Enable or disable all modules for a specific user. `;aum enable @someone` diff --git a/src/NadekoBot/project.json b/src/NadekoBot/project.json index 9ae6cbdd..c3a8b3b9 100644 --- a/src/NadekoBot/project.json +++ b/src/NadekoBot/project.json @@ -7,7 +7,7 @@ "emitEntryPoint": true, "allowUnsafe": true, "compile": { - "exclude": [ "_Models", "_Classes", "_Modules" ], + "exclude": [ ], }, "copyToOutput": { "include": [ "data" ], From df31285ed1eb302062bdf08df2daa0ad09c4abcd Mon Sep 17 00:00:00 2001 From: Kwoth Date: Wed, 5 Oct 2016 01:57:28 +0200 Subject: [PATCH 26/74] some fixes, strings --- .../Administration/Commands/LogCommand.cs | 68 ++++----- .../Searches/Commands/UnitConversion.cs | 22 --- .../Resources/CommandStrings.Designer.cs | 136 ++++++------------ src/NadekoBot/Resources/CommandStrings.resx | 52 +++---- src/NadekoBot/Services/CommandHandler.cs | 30 ++-- .../Services/Database/Models/LogSetting.cs | 1 - 6 files changed, 106 insertions(+), 203 deletions(-) diff --git a/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs b/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs index b7be6999..3ce63622 100644 --- a/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs +++ b/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs @@ -529,41 +529,41 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync($"`Logging will no longer ignore {channel.Name} ({channel.Id}) channel.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] - [RequireContext(ContextType.Guild)] - [OwnerOnly] - public async Task LogAdd(IUserMessage msg, [Remainder] string eventName) - { - var channel = (ITextChannel)msg.Channel; - //eventName = eventName?.Replace(" ","").ToLowerInvariant(); + //[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + //[RequireContext(ContextType.Guild)] + //[OwnerOnly] + //public async Task LogAdd(IUserMessage msg, [Remainder] string eventName) + //{ + // var channel = (ITextChannel)msg.Channel; + // //eventName = eventName?.Replace(" ","").ToLowerInvariant(); - switch (eventName.ToLowerInvariant()) - { - case "messagereceived": - case "messageupdated": - case "messagedeleted": - case "userjoined": - case "userleft": - case "userbanned": - case "userunbanned": - case "channelcreated": - case "channeldestroyed": - case "channelupdated": - using (var uow = DbHandler.UnitOfWork()) - { - var logSetting = uow.GuildConfigs.For(channel.Guild.Id).LogSetting; - GuildLogSettings.AddOrUpdate(channel.Guild.Id, (id) => logSetting, (id, old) => logSetting); - var prop = logSetting.GetType().GetProperty(eventName); - prop.SetValue(logSetting, true); - await uow.CompleteAsync().ConfigureAwait(false); - } - await channel.SendMessageAsync($"`Now logging {eventName} event.`").ConfigureAwait(false); - break; - default: - await channel.SendMessageAsync($"`Event \"{eventName}\" not found.`").ConfigureAwait(false); - break; - } - } + // switch (eventName.ToLowerInvariant()) + // { + // case "messagereceived": + // case "messageupdated": + // case "messagedeleted": + // case "userjoined": + // case "userleft": + // case "userbanned": + // case "userunbanned": + // case "channelcreated": + // case "channeldestroyed": + // case "channelupdated": + // using (var uow = DbHandler.UnitOfWork()) + // { + // var logSetting = uow.GuildConfigs.For(channel.Guild.Id).LogSetting; + // GuildLogSettings.AddOrUpdate(channel.Guild.Id, (id) => logSetting, (id, old) => logSetting); + // var prop = logSetting.GetType().GetProperty(eventName); + // prop.SetValue(logSetting, true); + // await uow.CompleteAsync().ConfigureAwait(false); + // } + // await channel.SendMessageAsync($"`Now logging {eventName} event.`").ConfigureAwait(false); + // break; + // default: + // await channel.SendMessageAsync($"`Event \"{eventName}\" not found.`").ConfigureAwait(false); + // break; + // } + //} //[LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias] //[RequireContext(ContextType.Guild)] diff --git a/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs b/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs index e4f19cba..6c3f28b1 100644 --- a/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs +++ b/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs @@ -94,27 +94,6 @@ namespace NadekoBot.Modules.Searches } public List Units { get; set; } - - - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] - [RequireContext(ContextType.Guild)] - public async Task ConvertListE(IUserMessage msg) //extended and bugged list - { - var channel = msg.Channel as IGuildChannel; - - var sb = new StringBuilder("Units that can be used by the converter: \n"); - var res = Units.GroupBy(x => x.UnitType); - foreach (var group in res) - { - sb.AppendLine($"{group.Key}: ```xl"); - foreach (var el in group) - { - sb.Append($" [{string.Join(",", el.Triggers)}] "); - } - sb.AppendLine("```"); - } - await msg.ReplyLong(sb.ToString(), breakOn: new[] { "```xl", "\n" }); - } [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] [RequireContext(ContextType.Guild)] public async Task ConvertList(IUserMessage msg) @@ -176,7 +155,6 @@ namespace NadekoBot.Modules.Searches } else { - //I just love currency if (originUnit.UnitType == "currency") { res = (value * targetUnit.Modifier) / originUnit.Modifier; diff --git a/src/NadekoBot/Resources/CommandStrings.Designer.cs b/src/NadekoBot/Resources/CommandStrings.Designer.cs index 13886cc4..2df71b44 100644 --- a/src/NadekoBot/Resources/CommandStrings.Designer.cs +++ b/src/NadekoBot/Resources/CommandStrings.Designer.cs @@ -141,7 +141,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Adds a new quote with the specified name and message (no limit).. + /// Looks up a localized string similar to Adds a new quote with the specified name and message.. /// public static string addquote_desc { get { @@ -150,7 +150,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `.. abc sayhi Hi`. + /// Looks up a localized string similar to `.. sayhi Hi`. /// public static string addquote_summary { get { @@ -1031,60 +1031,6 @@ namespace NadekoBot.Resources { } } - /// - /// Looks up a localized string similar to Checks if a certain user is streaming on the beam platform.. - /// - public static string checkbeam_desc { - get { - return ResourceManager.GetString("checkbeam_desc", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to `~chbm SomeStreamer`. - /// - public static string checkbeam_summary { - get { - return ResourceManager.GetString("checkbeam_summary", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to checkbeam chbm. - /// - public static string checkbeam_text { - get { - return ResourceManager.GetString("checkbeam_text", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Checks if a certain user is streaming on the hitbox platform.. - /// - public static string checkhitbox_desc { - get { - return ResourceManager.GetString("checkhitbox_desc", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to `~chhb SomeStreamer`. - /// - public static string checkhitbox_summary { - get { - return ResourceManager.GetString("checkhitbox_summary", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to checkhitbox chhb. - /// - public static string checkhitbox_text { - get { - return ResourceManager.GetString("checkhitbox_text", resourceCulture); - } - } - /// /// Looks up a localized string similar to Checks your userspecific permissions on this channel.. /// @@ -1113,29 +1059,29 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Checks if a certain user is streaming on the twitch platform.. + /// Looks up a localized string similar to Checks if a user is online on a certain streaming platform.. /// - public static string checktwitch_desc { + public static string checkstream_desc { get { - return ResourceManager.GetString("checktwitch_desc", resourceCulture); + return ResourceManager.GetString("checkstream_desc", resourceCulture); } } /// - /// Looks up a localized string similar to `~chtw SomeStreamer`. + /// Looks up a localized string similar to `~cs twitch MyFavStreamer`. /// - public static string checktwitch_summary { + public static string checkstream_summary { get { - return ResourceManager.GetString("checktwitch_summary", resourceCulture); + return ResourceManager.GetString("checkstream_summary", resourceCulture); } } /// - /// Looks up a localized string similar to checktwitch chtw. + /// Looks up a localized string similar to checkstream cs. /// - public static string checktwitch_text { + public static string checkstream_text { get { - return ResourceManager.GetString("checktwitch_text", resourceCulture); + return ResourceManager.GetString("checkstream_text", resourceCulture); } } @@ -3840,7 +3786,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Toggles logging in this channel. Logs every message sent/deleted/edited on the server. **Bot Owner Only!**. + /// Looks up a localized string similar to Logs server activity in this channel.. /// public static string logserver_desc { get { @@ -4443,7 +4389,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `~osu top5 Name`. + /// Looks up a localized string similar to `~osu5 Name`. /// public static string osu5_summary { get { @@ -4470,7 +4416,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `~osu b https://osu.ppy.sh/s/127712`. + /// Looks up a localized string similar to `~osub https://osu.ppy.sh/s/127712`. /// public static string osub_summary { get { @@ -6620,33 +6566,6 @@ namespace NadekoBot.Resources { } } - /// - /// Looks up a localized string similar to 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.. - /// - public static string t_desc { - get { - return ResourceManager.GetString("t_desc", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to `>t nohint` or `>t 5 nohint`. - /// - public static string t_summary { - get { - return ResourceManager.GetString("t_summary", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to trivia t. - /// - public static string t_text { - get { - return ResourceManager.GetString("t_text", resourceCulture); - } - } - /// /// Looks up a localized string similar to Takes a certain amount of flowers from someone. **Bot Owner Only!**. /// @@ -6809,6 +6728,33 @@ namespace NadekoBot.Resources { } } + /// + /// Looks up a localized string similar to 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.. + /// + public static string trivia_desc { + get { + return ResourceManager.GetString("trivia_desc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to `>t nohint` or `>t 5 nohint`. + /// + public static string trivia_summary { + get { + return ResourceManager.GetString("trivia_summary", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to trivia t. + /// + public static string trivia_text { + get { + return ResourceManager.GetString("trivia_text", resourceCulture); + } + } + /// /// Looks up a localized string similar to Notifies this channel when a certain user starts streaming.. /// diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index b6fc2550..3ab99e2d 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -238,7 +238,7 @@ logserver - Toggles logging in this channel. Logs every message sent/deleted/edited on the server. **Bot Owner Only!** + Logs server activity in this channel. `.logserver` @@ -1264,10 +1264,10 @@ . - Adds a new quote with the specified name and message (no limit). + Adds a new quote with the specified name and message. - `.. abc sayhi Hi` + `.. sayhi Hi` .. @@ -1467,13 +1467,13 @@ `$lb` - + 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 nohint` or `>t 5 nohint` @@ -1935,33 +1935,6 @@ `~beam SomeStreamer` - - checkhitbox chhb - - - Checks if a certain user is streaming on the hitbox platform. - - - `~chhb SomeStreamer` - - - checktwitch chtw - - - Checks if a certain user is streaming on the twitch platform. - - - `~chtw SomeStreamer` - - - checkbeam chbm - - - Checks if a certain user is streaming on the beam platform. - - - `~chbm SomeStreamer` - removestream rms @@ -2032,7 +2005,7 @@ Shows information about an osu beatmap. - `~osu b https://osu.ppy.sh/s/127712` + `~osub https://osu.ppy.sh/s/127712` osu5 @@ -2041,7 +2014,7 @@ Displays a user's top 5 plays. - `~osu top5 Name` + `~osu5 Name` pokemon poke @@ -2646,4 +2619,13 @@ removeperm rp + + Checks if a user is online on a certain streaming platform. + + + `~cs twitch MyFavStreamer` + + + checkstream cs + \ No newline at end of file diff --git a/src/NadekoBot/Services/CommandHandler.cs b/src/NadekoBot/Services/CommandHandler.cs index 979da273..6a9ac026 100644 --- a/src/NadekoBot/Services/CommandHandler.cs +++ b/src/NadekoBot/Services/CommandHandler.cs @@ -45,16 +45,6 @@ namespace NadekoBot.Services var guild = (msg.Channel as ITextChannel)?.Guild; - BlacklistItem blacklistedItem; - if ((blacklistedItem = Permissions.BlacklistCommands.BlacklistedItems.FirstOrDefault(bi => - (bi.Type == BlacklistItem.BlacklistType.Server && bi.ItemId == guild?.Id) || - (bi.Type == BlacklistItem.BlacklistType.Channel && bi.ItemId == msg.Channel.Id) || - (bi.Type == BlacklistItem.BlacklistType.User && bi.ItemId == usrMsg.Author.Id))) != null) - { - _log.Warn("Attempt was made to run a command by a blacklisted {0}, id: {1}", blacklistedItem.Type, blacklistedItem.ItemId); - return; - } - if (guild != null && guild.OwnerId != usrMsg.Author.Id) { if (Permissions.FilterCommands.InviteFilteringChannels.Contains(usrMsg.Channel.Id) || @@ -73,12 +63,11 @@ namespace NadekoBot.Services } } } - } - if (guild != null && guild.OwnerId != usrMsg.Author.Id) - { + + var filteredWords = Permissions.FilterCommands.FilteredWordsForChannel(usrMsg.Channel.Id, guild.Id).Concat(Permissions.FilterCommands.FilteredWordsForServer(guild.Id)); var wordsInMessage = usrMsg.Content.ToLowerInvariant().Split(' '); - if (filteredWords.Any(w=>wordsInMessage.Contains(w))) + if (filteredWords.Any(w => wordsInMessage.Contains(w))) { try { @@ -90,6 +79,15 @@ namespace NadekoBot.Services _log.Warn("I do not have permission to filter words in channel with id " + usrMsg.Channel.Id, ex); } } + + BlacklistItem blacklistedItem; + if ((blacklistedItem = Permissions.BlacklistCommands.BlacklistedItems.FirstOrDefault(bi => + (bi.Type == BlacklistItem.BlacklistType.Server && bi.ItemId == guild?.Id) || + (bi.Type == BlacklistItem.BlacklistType.Channel && bi.ItemId == msg.Channel.Id) || + (bi.Type == BlacklistItem.BlacklistType.User && bi.ItemId == usrMsg.Author.Id))) != null) + { + return; + } } try @@ -221,7 +219,7 @@ namespace NadekoBot.Services if (guild != null) { int index; - if (!rootPerm.AsEnumerable().CheckPermissions(message, cmd.Name, cmd.Module.Name, out index)) + if (!rootPerm.AsEnumerable().CheckPermissions(message, cmd.Text, cmd.Module.Name, out index)) { var returnMsg = $"Permission number #{index + 1} **{rootPerm.GetAt(index).GetCommand()}** is preventing this action."; return new Tuple(cmd, SearchResult.FromError(CommandError.Exception, returnMsg)); @@ -232,7 +230,7 @@ namespace NadekoBot.Services { if (!((IGuildUser)user).Roles.Any(r => r.Name.Trim().ToLowerInvariant() == permRole)) { - return new Tuple(cmd, SearchResult.FromError(CommandError.Exception, $"You need a **{permRole}** role in order to use permission commands.")); + return new Tuple(cmd, SearchResult.FromError(CommandError.Exception, $"You need the **{permRole}** role in order to use permission commands.")); } } } diff --git a/src/NadekoBot/Services/Database/Models/LogSetting.cs b/src/NadekoBot/Services/Database/Models/LogSetting.cs index a02cfcbc..1aeb1dfa 100644 --- a/src/NadekoBot/Services/Database/Models/LogSetting.cs +++ b/src/NadekoBot/Services/Database/Models/LogSetting.cs @@ -12,7 +12,6 @@ namespace NadekoBot.Services.Database.Models public ulong ChannelId { get; set; } public HashSet IgnoredChannels { get; set; } - public bool MessageReceived { get; set; } = true; public bool MessageUpdated { get; set; } = true; public bool MessageDeleted { get; set; } = true; From 21aabcc1146c4296a27ad346baeb25ca8b4766f1 Mon Sep 17 00:00:00 2001 From: Nitix Date: Wed, 5 Oct 2016 01:57:35 +0200 Subject: [PATCH 27/74] Add migration command --- ...0161004233426_MigrationVersion.Designer.cs | 710 +++++++++++++++++ .../20161004233426_MigrationVersion.cs | 25 + .../20161004233637_HelpString.Designer.cs | 712 ++++++++++++++++++ .../Migrations/20161004233637_HelpString.cs | 24 + .../NadekoSqliteContextModelSnapshot.cs | 4 + .../Administration/Commands/Migration.cs | 220 ++++++ .../Resources/CommandStrings.Designer.cs | 27 + src/NadekoBot/Resources/CommandStrings.resx | 9 + .../Services/Database/Models/BotConfig.cs | 5 + 9 files changed, 1736 insertions(+) create mode 100644 src/NadekoBot/Migrations/20161004233426_MigrationVersion.Designer.cs create mode 100644 src/NadekoBot/Migrations/20161004233426_MigrationVersion.cs create mode 100644 src/NadekoBot/Migrations/20161004233637_HelpString.Designer.cs create mode 100644 src/NadekoBot/Migrations/20161004233637_HelpString.cs create mode 100644 src/NadekoBot/Modules/Administration/Commands/Migration.cs diff --git a/src/NadekoBot/Migrations/20161004233426_MigrationVersion.Designer.cs b/src/NadekoBot/Migrations/20161004233426_MigrationVersion.Designer.cs new file mode 100644 index 00000000..d3b201ac --- /dev/null +++ b/src/NadekoBot/Migrations/20161004233426_MigrationVersion.Designer.cs @@ -0,0 +1,710 @@ +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using NadekoBot.Services.Database.Impl; + +namespace NadekoBot.Migrations +{ + [DbContext(typeof(NadekoSqliteContext))] + [Migration("20161004233426_MigrationVersion")] + partial class MigrationVersion + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { + modelBuilder + .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ItemId"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("BlacklistItem"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BufferSize"); + + b.Property("CurrencyGenerationChance"); + + b.Property("CurrencyGenerationCooldown"); + + b.Property("CurrencyName"); + + b.Property("CurrencyPluralName"); + + b.Property("CurrencySign"); + + b.Property("DontJoinServers"); + + b.Property("ForwardMessages"); + + b.Property("ForwardToAllOwners"); + + b.Property("MigrationVersion"); + + b.Property("RemindMessageFormat"); + + b.Property("RotatingStatuses"); + + b.HasKey("Id"); + + 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("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("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.ConvertUnit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("InternalTrigger"); + + b.Property("Modifier"); + + b.Property("UnitType"); + + b.HasKey("Id"); + + b.ToTable("ConversionUnits"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Currency"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("Name"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Donators"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("EightBallResponses"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildConfigId"); + + b.Property("GuildConfigId1"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.HasIndex("GuildConfigId1"); + + b.ToTable("FilterChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildConfigId"); + + b.Property("Word"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FilteredWord"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("LastStatus"); + + b.Property("Type"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FollowedStream"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoAssignRoleId"); + + b.Property("AutoDeleteByeMessages"); + + b.Property("AutoDeleteGreetMessages"); + + b.Property("AutoDeleteGreetMessagesTimer"); + + b.Property("AutoDeleteSelfAssignedRoleMessages"); + + b.Property("ByeMessageChannelId"); + + b.Property("ChannelByeMessageText"); + + b.Property("ChannelGreetMessageText"); + + b.Property("DefaultMusicVolume"); + + b.Property("DeleteMessageOnCommand"); + + b.Property("DmGreetMessageText"); + + b.Property("ExclusiveSelfAssignedRoles"); + + b.Property("FilterInvites"); + + b.Property("FilterWords"); + + b.Property("GenerateCurrencyChannelId"); + + b.Property("GreetMessageChannelId"); + + b.Property("GuildId"); + + b.Property("LogSettingId"); + + b.Property("PermissionRole"); + + b.Property("RootPermissionId"); + + b.Property("SendChannelByeMessage"); + + b.Property("SendChannelGreetMessage"); + + b.Property("SendDmGreetMessage"); + + b.Property("VerbosePermissions"); + + b.Property("VoicePlusTextEnabled"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.HasIndex("LogSettingId"); + + b.HasIndex("RootPermissionId"); + + b.ToTable("GuildConfigs"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredLogChannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredVoicePresenceCHannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelCreated"); + + b.Property("ChannelDestroyed"); + + b.Property("ChannelId"); + + b.Property("ChannelUpdated"); + + b.Property("IsLogging"); + + b.Property("LogUserPresence"); + + b.Property("LogVoicePresence"); + + b.Property("MessageDeleted"); + + b.Property("MessageReceived"); + + b.Property("MessageUpdated"); + + b.Property("UserBanned"); + + b.Property("UserJoined"); + + b.Property("UserLeft"); + + b.Property("UserPresenceChannelId"); + + b.Property("UserUnbanned"); + + b.Property("UserUpdated"); + + b.Property("VoicePresenceChannelId"); + + b.HasKey("Id"); + + b.ToTable("LogSettings"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ModuleName"); + + b.Property("Prefix"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("ModulePrefixes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("AuthorId"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.ToTable("MusicPlaylists"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + 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.Services.Database.Models.PlayingStatus", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Status"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("PlayingStatus"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + 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.Services.Database.Models.Quote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("AuthorName") + .IsRequired(); + + b.Property("GuildId"); + + b.Property("Keyword") + .IsRequired(); + + b.Property("Text") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("Quotes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Icon"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("RaceAnimals"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("IsPrivate"); + + b.Property("Message"); + + b.Property("ServerId"); + + b.Property("UserId"); + + b.Property("When"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildId"); + + b.Property("Interval"); + + b.Property("Message"); + + b.HasKey("Id"); + + b.HasIndex("ChannelId") + .IsUnique(); + + b.ToTable("Repeaters"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildId", "RoleId") + .IsUnique(); + + b.ToTable("SelfAssignableRoles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.ToTable("TypingArticles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("Blacklist") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + { + b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + .WithMany("Bases") + .HasForeignKey("ClashWarId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("EightBallResponses") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FilterInvitesChannelIds") + .HasForeignKey("GuildConfigId"); + + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FilterWordsChannelIds") + .HasForeignKey("GuildConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FilteredWords") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FollowedStreams") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany() + .HasForeignKey("LogSettingId"); + + b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + .WithMany() + .HasForeignKey("RootPermissionId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredVoicePresenceChannelIds") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig", "BotConfig") + .WithMany("ModulePrefixes") + .HasForeignKey("BotConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + .WithOne("Previous") + .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RotatingStatusMessages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + { + b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + .WithMany("Songs") + .HasForeignKey("MusicPlaylistId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RaceAnimals") + .HasForeignKey("BotConfigId"); + }); + } + } +} diff --git a/src/NadekoBot/Migrations/20161004233426_MigrationVersion.cs b/src/NadekoBot/Migrations/20161004233426_MigrationVersion.cs new file mode 100644 index 00000000..a5017255 --- /dev/null +++ b/src/NadekoBot/Migrations/20161004233426_MigrationVersion.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace NadekoBot.Migrations +{ + public partial class MigrationVersion : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "MigrationVersion", + table: "BotConfig", + nullable: false, + defaultValue: 0); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "MigrationVersion", + table: "BotConfig"); + } + } +} diff --git a/src/NadekoBot/Migrations/20161004233637_HelpString.Designer.cs b/src/NadekoBot/Migrations/20161004233637_HelpString.Designer.cs new file mode 100644 index 00000000..17d81a59 --- /dev/null +++ b/src/NadekoBot/Migrations/20161004233637_HelpString.Designer.cs @@ -0,0 +1,712 @@ +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using NadekoBot.Services.Database.Impl; + +namespace NadekoBot.Migrations +{ + [DbContext(typeof(NadekoSqliteContext))] + [Migration("20161004233637_HelpString")] + partial class HelpString + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { + modelBuilder + .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ItemId"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("BlacklistItem"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BufferSize"); + + b.Property("CurrencyGenerationChance"); + + b.Property("CurrencyGenerationCooldown"); + + b.Property("CurrencyName"); + + b.Property("CurrencyPluralName"); + + b.Property("CurrencySign"); + + b.Property("DontJoinServers"); + + b.Property("ForwardMessages"); + + b.Property("ForwardToAllOwners"); + + b.Property("HelpString"); + + b.Property("MigrationVersion"); + + b.Property("RemindMessageFormat"); + + b.Property("RotatingStatuses"); + + b.HasKey("Id"); + + 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("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("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.ConvertUnit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("InternalTrigger"); + + b.Property("Modifier"); + + b.Property("UnitType"); + + b.HasKey("Id"); + + b.ToTable("ConversionUnits"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Currency"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("Name"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Donators"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("EightBallResponses"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildConfigId"); + + b.Property("GuildConfigId1"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.HasIndex("GuildConfigId1"); + + b.ToTable("FilterChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildConfigId"); + + b.Property("Word"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FilteredWord"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("LastStatus"); + + b.Property("Type"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FollowedStream"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoAssignRoleId"); + + b.Property("AutoDeleteByeMessages"); + + b.Property("AutoDeleteGreetMessages"); + + b.Property("AutoDeleteGreetMessagesTimer"); + + b.Property("AutoDeleteSelfAssignedRoleMessages"); + + b.Property("ByeMessageChannelId"); + + b.Property("ChannelByeMessageText"); + + b.Property("ChannelGreetMessageText"); + + b.Property("DefaultMusicVolume"); + + b.Property("DeleteMessageOnCommand"); + + b.Property("DmGreetMessageText"); + + b.Property("ExclusiveSelfAssignedRoles"); + + b.Property("FilterInvites"); + + b.Property("FilterWords"); + + b.Property("GenerateCurrencyChannelId"); + + b.Property("GreetMessageChannelId"); + + b.Property("GuildId"); + + b.Property("LogSettingId"); + + b.Property("PermissionRole"); + + b.Property("RootPermissionId"); + + b.Property("SendChannelByeMessage"); + + b.Property("SendChannelGreetMessage"); + + b.Property("SendDmGreetMessage"); + + b.Property("VerbosePermissions"); + + b.Property("VoicePlusTextEnabled"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.HasIndex("LogSettingId"); + + b.HasIndex("RootPermissionId"); + + b.ToTable("GuildConfigs"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredLogChannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredVoicePresenceCHannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelCreated"); + + b.Property("ChannelDestroyed"); + + b.Property("ChannelId"); + + b.Property("ChannelUpdated"); + + b.Property("IsLogging"); + + b.Property("LogUserPresence"); + + b.Property("LogVoicePresence"); + + b.Property("MessageDeleted"); + + b.Property("MessageReceived"); + + b.Property("MessageUpdated"); + + b.Property("UserBanned"); + + b.Property("UserJoined"); + + b.Property("UserLeft"); + + b.Property("UserPresenceChannelId"); + + b.Property("UserUnbanned"); + + b.Property("UserUpdated"); + + b.Property("VoicePresenceChannelId"); + + b.HasKey("Id"); + + b.ToTable("LogSettings"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ModuleName"); + + b.Property("Prefix"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("ModulePrefixes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("AuthorId"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.ToTable("MusicPlaylists"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + 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.Services.Database.Models.PlayingStatus", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Status"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("PlayingStatus"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + 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.Services.Database.Models.Quote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("AuthorName") + .IsRequired(); + + b.Property("GuildId"); + + b.Property("Keyword") + .IsRequired(); + + b.Property("Text") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("Quotes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Icon"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("RaceAnimals"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("IsPrivate"); + + b.Property("Message"); + + b.Property("ServerId"); + + b.Property("UserId"); + + b.Property("When"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildId"); + + b.Property("Interval"); + + b.Property("Message"); + + b.HasKey("Id"); + + b.HasIndex("ChannelId") + .IsUnique(); + + b.ToTable("Repeaters"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildId", "RoleId") + .IsUnique(); + + b.ToTable("SelfAssignableRoles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.ToTable("TypingArticles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("Blacklist") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + { + b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + .WithMany("Bases") + .HasForeignKey("ClashWarId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("EightBallResponses") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FilterInvitesChannelIds") + .HasForeignKey("GuildConfigId"); + + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FilterWordsChannelIds") + .HasForeignKey("GuildConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FilteredWords") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FollowedStreams") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany() + .HasForeignKey("LogSettingId"); + + b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + .WithMany() + .HasForeignKey("RootPermissionId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredVoicePresenceChannelIds") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig", "BotConfig") + .WithMany("ModulePrefixes") + .HasForeignKey("BotConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + .WithOne("Previous") + .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RotatingStatusMessages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + { + b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + .WithMany("Songs") + .HasForeignKey("MusicPlaylistId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RaceAnimals") + .HasForeignKey("BotConfigId"); + }); + } + } +} diff --git a/src/NadekoBot/Migrations/20161004233637_HelpString.cs b/src/NadekoBot/Migrations/20161004233637_HelpString.cs new file mode 100644 index 00000000..9a4322e3 --- /dev/null +++ b/src/NadekoBot/Migrations/20161004233637_HelpString.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace NadekoBot.Migrations +{ + public partial class HelpString : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "HelpString", + table: "BotConfig", + nullable: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "HelpString", + table: "BotConfig"); + } + } +} diff --git a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs index 932e67dd..63a46553 100644 --- a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs +++ b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs @@ -56,6 +56,10 @@ namespace NadekoBot.Migrations b.Property("ForwardToAllOwners"); + b.Property("HelpString"); + + b.Property("MigrationVersion"); + b.Property("RemindMessageFormat"); b.Property("RotatingStatuses"); diff --git a/src/NadekoBot/Modules/Administration/Commands/Migration.cs b/src/NadekoBot/Modules/Administration/Commands/Migration.cs new file mode 100644 index 00000000..ad8d0168 --- /dev/null +++ b/src/NadekoBot/Modules/Administration/Commands/Migration.cs @@ -0,0 +1,220 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using Discord; +using Discord.Commands; +using NadekoBot.Attributes; +using NadekoBot.Services; +using NadekoBot.Services.Database.Models; +using Newtonsoft.Json; +using NLog; + +namespace NadekoBot.Modules.Administration +{ + public partial class Administration + { + [Group] + public class Migration + { + private const int CURRENT_VERSION = 1; + + private Logger _log { get; } + + public Migration() + { + _log = LogManager.GetCurrentClassLogger(); + } + + [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [OwnerOnly] + public async Task MigrateData(IUserMessage umsg) + { + var channel = (ITextChannel) umsg.Channel; + + var version = 0; + using (var uow = DbHandler.UnitOfWork()) + { + version = uow.BotConfig.GetOrCreate().MigrationVersion; + } + try + { + for (var i = version; i < CURRENT_VERSION; i++) + { + switch (i) + { + case 0: + Migrate0_9To1_0(); + break; + } + } + await umsg.Channel.SendMessageAsync("Migration done.").ConfigureAwait(false); + } + catch (MigrationException) + { + await umsg.Channel.SendMessageAsync("Error while migrating, check logs for more informations").ConfigureAwait(false); + } + } + + private void Migrate0_9To1_0() + { + Config0_9 oldData; + try + { + oldData = JsonConvert.DeserializeObject(File.ReadAllText("./data/config.json")); + } + catch (FileNotFoundException) + { + _log.Warn("config.json not found, assuming not needed"); + using (var uow = DbHandler.UnitOfWork()) + { + var botConfig = uow.BotConfig.GetOrCreate(); + botConfig.MigrationVersion = 1; + uow.CompleteAsync().ConfigureAwait(false); + } + return; + } + catch (Exception) + { + _log.Error("Unknow error while deserializing file config.json, pls check its integrity, aborting migration"); + throw new MigrationException(); + } + using (var uow = DbHandler.UnitOfWork()) + { + var botConfig = uow.BotConfig.GetOrCreate(); + + //Basic + botConfig.DontJoinServers = oldData.DontJoinServers; + botConfig.ForwardMessages = oldData.ForwardMessages; + botConfig.ForwardToAllOwners = oldData.ForwardToAllOwners; + botConfig.BufferSize = (ulong) oldData.BufferSize; + botConfig.RemindMessageFormat = oldData.RemindMessageFormat; + botConfig.CurrencySign = oldData.CurrencySign; + botConfig.CurrencyName = oldData.CurrencyName; + botConfig.DMHelpString = oldData.DMHelpString; + botConfig.HelpString = oldData.HelpString; + + //messages + botConfig.RotatingStatuses = oldData.IsRotatingStatus; + var messages = new List(); + + oldData.RotatingStatuses.ForEach(i => messages.Add(new PlayingStatus { Status = i })); + botConfig.RotatingStatusMessages = messages; + + //races + var races = new List(); + oldData.RaceAnimals.ForEach(i => races.Add(new RaceAnimal() { Icon = i, Name = i })); + botConfig.RaceAnimals = races; + + //Prefix + var prefix = new List + { + new ModulePrefix() + { + ModuleName = "Administration", + Prefix = oldData.CommandPrefixes.Administration + }, + new ModulePrefix() + { + ModuleName = "Searches", + Prefix = oldData.CommandPrefixes.Searches + }, + new ModulePrefix() {ModuleName = "NSFW", Prefix = oldData.CommandPrefixes.NSFW}, + new ModulePrefix() + { + ModuleName = "Conversations", + Prefix = oldData.CommandPrefixes.Conversations + }, + new ModulePrefix() + { + ModuleName = "ClashOfClans", + Prefix = oldData.CommandPrefixes.ClashOfClans + }, + new ModulePrefix() {ModuleName = "Help", Prefix = oldData.CommandPrefixes.Help}, + new ModulePrefix() {ModuleName = "Music", Prefix = oldData.CommandPrefixes.Music}, + new ModulePrefix() {ModuleName = "Trello", Prefix = oldData.CommandPrefixes.Trello}, + new ModulePrefix() {ModuleName = "Games", Prefix = oldData.CommandPrefixes.Games}, + new ModulePrefix() + { + ModuleName = "Gambling", + Prefix = oldData.CommandPrefixes.Gambling + }, + new ModulePrefix() + { + ModuleName = "Permissions", + Prefix = oldData.CommandPrefixes.Permissions + }, + new ModulePrefix() + { + ModuleName = "Programming", + Prefix = oldData.CommandPrefixes.Programming + }, + new ModulePrefix() {ModuleName = "Pokemon", Prefix = oldData.CommandPrefixes.Pokemon}, + new ModulePrefix() {ModuleName = "Utility", Prefix = oldData.CommandPrefixes.Utility} + }; + botConfig.ModulePrefixes = prefix; + + //Blacklist + var blacklist = oldData.ServerBlacklist.Select(server => new BlacklistItem() {ItemId = server, Type = BlacklistItem.BlacklistType.Server}).ToList(); + blacklist.AddRange(oldData.ChannelBlacklist.Select(channel => new BlacklistItem() {ItemId = channel, Type = BlacklistItem.BlacklistType.Channel})); + blacklist.AddRange(oldData.UserBlacklist.Select(user => new BlacklistItem() {ItemId = user, Type = BlacklistItem.BlacklistType.User})); + botConfig.Blacklist = new HashSet(blacklist); + + //Eightball + botConfig.EightBallResponses = oldData._8BallResponses.Select(response => new EightBallResponse() {Text = response}).ToList(); + + //NOW save it + botConfig.MigrationVersion = 1; + uow.CompleteAsync(); + } + } + + private class MigrationException : Exception + { + } + + protected 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; } + } + + protected 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; } + } + + } + } +} diff --git a/src/NadekoBot/Resources/CommandStrings.Designer.cs b/src/NadekoBot/Resources/CommandStrings.Designer.cs index 13886cc4..f8627116 100644 --- a/src/NadekoBot/Resources/CommandStrings.Designer.cs +++ b/src/NadekoBot/Resources/CommandStrings.Designer.cs @@ -4136,6 +4136,33 @@ namespace NadekoBot.Resources { } } + /// + /// Looks up a localized string similar to Migrate data from old bot configuration. + /// + public static string migratedata_desc { + get { + return ResourceManager.GetString("migratedata_desc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to `.migratedata`. + /// + public static string migratedata_summary { + get { + return ResourceManager.GetString("migratedata_summary", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to migratedata. + /// + public static string migratedata_text { + get { + return ResourceManager.GetString("migratedata_text", resourceCulture); + } + } + /// /// Looks up a localized string similar to List all bot modules.. /// diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index b6fc2550..63ea6c8c 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -2646,4 +2646,13 @@ removeperm rp + + Migrate data from old bot configuration + + + `.migratedata` + + + migratedata + \ No newline at end of file diff --git a/src/NadekoBot/Services/Database/Models/BotConfig.cs b/src/NadekoBot/Services/Database/Models/BotConfig.cs index b8c08404..51c52aea 100644 --- a/src/NadekoBot/Services/Database/Models/BotConfig.cs +++ b/src/NadekoBot/Services/Database/Models/BotConfig.cs @@ -33,6 +33,11 @@ namespace NadekoBot.Services.Database.Models public List EightBallResponses { get; set; } = new List(); public List RaceAnimals { get; set; } = new List(); + + public string DMHelpString; + public string HelpString { get; set; } + + public int MigrationVersion { get; set; } } public class PlayingStatus :DbEntity From b43e0dd21904797e83f8b73e005a737b941df3b8 Mon Sep 17 00:00:00 2001 From: Nitix Date: Wed, 5 Oct 2016 02:33:24 +0200 Subject: [PATCH 28/74] (BotConfig) add missing getter and setter --- src/NadekoBot/Services/Database/Models/BotConfig.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NadekoBot/Services/Database/Models/BotConfig.cs b/src/NadekoBot/Services/Database/Models/BotConfig.cs index 51c52aea..c66a98cb 100644 --- a/src/NadekoBot/Services/Database/Models/BotConfig.cs +++ b/src/NadekoBot/Services/Database/Models/BotConfig.cs @@ -34,7 +34,7 @@ namespace NadekoBot.Services.Database.Models public List EightBallResponses { get; set; } = new List(); public List RaceAnimals { get; set; } = new List(); - public string DMHelpString; + public string DMHelpString { get; set; } public string HelpString { get; set; } public int MigrationVersion { get; set; } From e8c5401b15e62b44f5763559da151d4148cdc581 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Wed, 5 Oct 2016 04:03:57 +0200 Subject: [PATCH 29/74] Fixed up the pr --- .../Administration/Commands/Migration.cs | 62 ++----------------- .../Administration/Commands/Migration/0_9..cs | 48 ++++++++++++++ .../Commands/Migration/MigrationException.cs | 13 ++++ 3 files changed, 67 insertions(+), 56 deletions(-) create mode 100644 src/NadekoBot/Modules/Administration/Commands/Migration/0_9..cs create mode 100644 src/NadekoBot/Modules/Administration/Commands/Migration/MigrationException.cs diff --git a/src/NadekoBot/Modules/Administration/Commands/Migration.cs b/src/NadekoBot/Modules/Administration/Commands/Migration.cs index ad8d0168..d6898502 100644 --- a/src/NadekoBot/Modules/Administration/Commands/Migration.cs +++ b/src/NadekoBot/Modules/Administration/Commands/Migration.cs @@ -11,6 +11,7 @@ using NadekoBot.Services; using NadekoBot.Services.Database.Models; using Newtonsoft.Json; using NLog; +using NadekoBot.Modules.Administration.Commands.Migration; namespace NadekoBot.Modules.Administration { @@ -46,7 +47,7 @@ namespace NadekoBot.Modules.Administration switch (i) { case 0: - Migrate0_9To1_0(); + await Migrate0_9To1_0(); break; } } @@ -54,11 +55,11 @@ namespace NadekoBot.Modules.Administration } catch (MigrationException) { - await umsg.Channel.SendMessageAsync("Error while migrating, check logs for more informations").ConfigureAwait(false); + await umsg.Channel.SendMessageAsync(":warning: Error while migrating, check logs for more informations.").ConfigureAwait(false); } } - private void Migrate0_9To1_0() + private async Task Migrate0_9To1_0() { Config0_9 oldData; try @@ -67,13 +68,7 @@ namespace NadekoBot.Modules.Administration } catch (FileNotFoundException) { - _log.Warn("config.json not found, assuming not needed"); - using (var uow = DbHandler.UnitOfWork()) - { - var botConfig = uow.BotConfig.GetOrCreate(); - botConfig.MigrationVersion = 1; - uow.CompleteAsync().ConfigureAwait(false); - } + _log.Warn("config.json not found"); return; } catch (Exception) @@ -167,54 +162,9 @@ namespace NadekoBot.Modules.Administration //NOW save it botConfig.MigrationVersion = 1; - uow.CompleteAsync(); + await uow.CompleteAsync().ConfigureAwait(false); } } - - private class MigrationException : Exception - { - } - - protected 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; } - } - - protected 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; } - } - } } } diff --git a/src/NadekoBot/Modules/Administration/Commands/Migration/0_9..cs b/src/NadekoBot/Modules/Administration/Commands/Migration/0_9..cs new file mode 100644 index 00000000..87a18f9b --- /dev/null +++ b/src/NadekoBot/Modules/Administration/Commands/Migration/0_9..cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NadekoBot.Modules.Administration.Commands.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; } + } +} \ No newline at end of file diff --git a/src/NadekoBot/Modules/Administration/Commands/Migration/MigrationException.cs b/src/NadekoBot/Modules/Administration/Commands/Migration/MigrationException.cs new file mode 100644 index 00000000..1b26d161 --- /dev/null +++ b/src/NadekoBot/Modules/Administration/Commands/Migration/MigrationException.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NadekoBot.Modules.Administration.Commands.Migration +{ + public class MigrationException : Exception + { + + } +} From fbf06ede237d5c4844a399b8ee6f446d824c6934 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Wed, 5 Oct 2016 05:09:44 +0200 Subject: [PATCH 30/74] Changed attribute names, changed CommandStrings.resx keys --- .../{LocalizedAlias.cs => Aliases.cs} | 4 +- src/NadekoBot/Attributes/Description.cs | 14 + src/NadekoBot/Attributes/LocalizedCommand.cs | 15 - .../Attributes/LocalizedDescription.cs | 14 - src/NadekoBot/Attributes/LocalizedSummary.cs | 14 - src/NadekoBot/Attributes/NadekoCommand.cs | 15 + src/NadekoBot/Attributes/Usage.cs | 14 + .../20161002021256_first.Designer.cs | 648 --------- .../20161003012137_blacklist.Designer.cs | 650 --------- .../Migrations/20161003012137_blacklist.cs | 26 - .../20161003170208_filtering.Designer.cs | 708 --------- .../Migrations/20161003170208_filtering.cs | 103 -- ...0161004233426_MigrationVersion.Designer.cs | 710 ---------- .../20161004233426_MigrationVersion.cs | 25 - .../Migrations/20161004233637_HelpString.cs | 24 - ...er.cs => 20161005030440_first.Designer.cs} | 8 +- ...21256_first.cs => 20161005030440_first.cs} | 77 +- .../NadekoSqliteContextModelSnapshot.cs | 4 +- .../Modules/Administration/Administration.cs | 68 +- .../Commands/AutoAssignRoleCommands.cs | 2 +- .../Commands/CrossServerTextChannel.cs | 6 +- .../Administration/Commands/LogCommand.cs | 8 +- .../Commands/MessageRepeater.cs | 6 +- .../Administration/Commands/Migration.cs | 2 +- .../Commands/PlayingRotateCommands.cs | 8 +- .../Commands/RatelimitCommand.cs | 2 +- .../Commands/SelfAssignedRolesCommand.cs | 12 +- .../Administration/Commands/SelfCommands.cs | 2 +- .../Commands/ServerGreetCommands.cs | 16 +- .../Commands/VoicePlusTextCommands.cs | 4 +- .../Modules/ClashOfClans/ClashOfClans.cs | 18 +- .../Modules/Gambling/Commands/AnimalRacing.cs | 4 +- .../Gambling/Commands/DiceRollCommand.cs | 12 +- .../Modules/Gambling/Commands/DrawCommand.cs | 4 +- .../Gambling/Commands/FlipCoinCommand.cs | 4 +- src/NadekoBot/Modules/Gambling/Gambling.cs | 18 +- .../Modules/Games/Commands/LeetCommands.cs | 2 +- .../Games/Commands/PlantAndPickCommands.cs | 6 +- .../Modules/Games/Commands/PollCommands.cs | 4 +- .../Games/Commands/SpeedTypingCommands.cs | 6 +- .../Modules/Games/Commands/TriviaCommands.cs | 6 +- src/NadekoBot/Modules/Games/Games.cs | 8 +- src/NadekoBot/Modules/Help/Help.cs | 16 +- src/NadekoBot/Modules/Music/Music.cs | 64 +- src/NadekoBot/Modules/NSFW/NSFW.cs | 16 +- .../Permissions/Commands/BlacklistCommands.cs | 6 +- .../Permissions/Commands/FilterCommands.cs | 12 +- .../Modules/Permissions/Permissions.cs | 34 +- src/NadekoBot/Modules/Pokemon/Pokemon.cs | 2 +- .../Searches/Commands/AnimeSearchCommands.cs | 4 +- .../Modules/Searches/Commands/CalcCommand.cs | 4 +- .../Modules/Searches/Commands/JokeCommands.cs | 10 +- .../Modules/Searches/Commands/LoLCommands.cs | 2 +- .../Searches/Commands/MemegenCommands.cs | 4 +- .../Modules/Searches/Commands/OsuCommands.cs | 6 +- .../Commands/PokemonSearchCommands.cs | 4 +- .../Commands/StreamNotificationCommands.cs | 12 +- .../Searches/Commands/UnitConversion.cs | 4 +- src/NadekoBot/Modules/Searches/Searches.cs | 40 +- .../Modules/Translator/Translator.cs | 4 +- .../Modules/Utility/Commands/InfoCommands.cs | 6 +- .../Modules/Utility/Commands/QuoteCommands.cs | 8 +- .../Modules/Utility/Commands/Remind.cs | 4 +- src/NadekoBot/Modules/Utility/Utility.cs | 18 +- src/NadekoBot/Resources/CommandStrings.resx | 1261 ++++++++--------- 65 files changed, 1006 insertions(+), 3836 deletions(-) rename src/NadekoBot/Attributes/{LocalizedAlias.cs => Aliases.cs} (52%) create mode 100644 src/NadekoBot/Attributes/Description.cs delete mode 100644 src/NadekoBot/Attributes/LocalizedCommand.cs delete mode 100644 src/NadekoBot/Attributes/LocalizedDescription.cs delete mode 100644 src/NadekoBot/Attributes/LocalizedSummary.cs create mode 100644 src/NadekoBot/Attributes/NadekoCommand.cs create mode 100644 src/NadekoBot/Attributes/Usage.cs delete mode 100644 src/NadekoBot/Migrations/20161002021256_first.Designer.cs delete mode 100644 src/NadekoBot/Migrations/20161003012137_blacklist.Designer.cs delete mode 100644 src/NadekoBot/Migrations/20161003012137_blacklist.cs delete mode 100644 src/NadekoBot/Migrations/20161003170208_filtering.Designer.cs delete mode 100644 src/NadekoBot/Migrations/20161003170208_filtering.cs delete mode 100644 src/NadekoBot/Migrations/20161004233426_MigrationVersion.Designer.cs delete mode 100644 src/NadekoBot/Migrations/20161004233426_MigrationVersion.cs delete mode 100644 src/NadekoBot/Migrations/20161004233637_HelpString.cs rename src/NadekoBot/Migrations/{20161004233637_HelpString.Designer.cs => 20161005030440_first.Designer.cs} (99%) rename src/NadekoBot/Migrations/{20161002021256_first.cs => 20161005030440_first.cs} (89%) diff --git a/src/NadekoBot/Attributes/LocalizedAlias.cs b/src/NadekoBot/Attributes/Aliases.cs similarity index 52% rename from src/NadekoBot/Attributes/LocalizedAlias.cs rename to src/NadekoBot/Attributes/Aliases.cs index 97f808aa..ee6e18ad 100644 --- a/src/NadekoBot/Attributes/LocalizedAlias.cs +++ b/src/NadekoBot/Attributes/Aliases.cs @@ -9,9 +9,9 @@ using System.Threading.Tasks; namespace NadekoBot.Attributes { - public class LocalizedAliasAttribute : AliasAttribute + public class Aliases : AliasAttribute { - public LocalizedAliasAttribute([CallerMemberName] string memberName = "") : base(Localization.LoadCommandString(memberName.ToLowerInvariant() + "_text").Split(' ').Skip(1).ToArray()) + public Aliases([CallerMemberName] string memberName = "") : base(Localization.LoadCommandString(memberName.ToLowerInvariant() + "_cmd").Split(' ').Skip(1).ToArray()) { } } diff --git a/src/NadekoBot/Attributes/Description.cs b/src/NadekoBot/Attributes/Description.cs new file mode 100644 index 00000000..a6f32c74 --- /dev/null +++ b/src/NadekoBot/Attributes/Description.cs @@ -0,0 +1,14 @@ +using Discord.Commands; +using NadekoBot.Services; +using System.Runtime.CompilerServices; + +namespace NadekoBot.Attributes +{ + public class Description : SummaryAttribute + { + public Description([CallerMemberName] string memberName="") : base(Localization.LoadCommandString(memberName.ToLowerInvariant() + "_desc")) + { + + } + } +} diff --git a/src/NadekoBot/Attributes/LocalizedCommand.cs b/src/NadekoBot/Attributes/LocalizedCommand.cs deleted file mode 100644 index dcb96537..00000000 --- a/src/NadekoBot/Attributes/LocalizedCommand.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Discord.Commands; -using NadekoBot.Services; -using System.Linq; -using System.Runtime.CompilerServices; - -namespace NadekoBot.Attributes -{ - public class LocalizedCommandAttribute : CommandAttribute - { - public LocalizedCommandAttribute([CallerMemberName] string memberName="") : base(Localization.LoadCommandString(memberName.ToLowerInvariant() + "_text").Split(' ')[0]) - { - - } - } -} diff --git a/src/NadekoBot/Attributes/LocalizedDescription.cs b/src/NadekoBot/Attributes/LocalizedDescription.cs deleted file mode 100644 index e05ec7c0..00000000 --- a/src/NadekoBot/Attributes/LocalizedDescription.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Discord.Commands; -using NadekoBot.Services; -using System.Runtime.CompilerServices; - -namespace NadekoBot.Attributes -{ - public class LocalizedRemarksAttribute : RemarksAttribute - { - public LocalizedRemarksAttribute([CallerMemberName] string memberName="") : base(Localization.LoadCommandString(memberName.ToLowerInvariant()+"_desc")) - { - - } - } -} diff --git a/src/NadekoBot/Attributes/LocalizedSummary.cs b/src/NadekoBot/Attributes/LocalizedSummary.cs deleted file mode 100644 index 9ded83bc..00000000 --- a/src/NadekoBot/Attributes/LocalizedSummary.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Discord.Commands; -using NadekoBot.Services; -using System.Runtime.CompilerServices; - -namespace NadekoBot.Attributes -{ - public class LocalizedSummaryAttribute : SummaryAttribute - { - public LocalizedSummaryAttribute([CallerMemberName] string memberName="") : base(Localization.LoadCommandString(memberName.ToLowerInvariant() + "_summary")) - { - - } - } -} diff --git a/src/NadekoBot/Attributes/NadekoCommand.cs b/src/NadekoBot/Attributes/NadekoCommand.cs new file mode 100644 index 00000000..ab473cbb --- /dev/null +++ b/src/NadekoBot/Attributes/NadekoCommand.cs @@ -0,0 +1,15 @@ +using Discord.Commands; +using NadekoBot.Services; +using System.Linq; +using System.Runtime.CompilerServices; + +namespace NadekoBot.Attributes +{ + public class NadekoCommand : CommandAttribute + { + public NadekoCommand([CallerMemberName] string memberName="") : base(Localization.LoadCommandString(memberName.ToLowerInvariant() + "_cmd").Split(' ')[0]) + { + + } + } +} diff --git a/src/NadekoBot/Attributes/Usage.cs b/src/NadekoBot/Attributes/Usage.cs new file mode 100644 index 00000000..b3e18519 --- /dev/null +++ b/src/NadekoBot/Attributes/Usage.cs @@ -0,0 +1,14 @@ +using Discord.Commands; +using NadekoBot.Services; +using System.Runtime.CompilerServices; + +namespace NadekoBot.Attributes +{ + public class Usage : RemarksAttribute + { + public Usage([CallerMemberName] string memberName="") : base(Localization.LoadCommandString(memberName.ToLowerInvariant()+"_usage")) + { + + } + } +} diff --git a/src/NadekoBot/Migrations/20161002021256_first.Designer.cs b/src/NadekoBot/Migrations/20161002021256_first.Designer.cs deleted file mode 100644 index 544da87d..00000000 --- a/src/NadekoBot/Migrations/20161002021256_first.Designer.cs +++ /dev/null @@ -1,648 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database.Impl; - -namespace NadekoBot.Migrations -{ - [DbContext(typeof(NadekoSqliteContext))] - [Migration("20161002021256_first")] - partial class first - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("ItemId"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("BlacklistItem"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BufferSize"); - - b.Property("CurrencyGenerationChance"); - - b.Property("CurrencyGenerationCooldown"); - - b.Property("CurrencyName"); - - b.Property("CurrencyPluralName"); - - b.Property("CurrencySign"); - - b.Property("DontJoinServers"); - - b.Property("ForwardMessages"); - - b.Property("ForwardToAllOwners"); - - b.Property("RemindMessageFormat"); - - b.Property("RotatingStatuses"); - - b.HasKey("Id"); - - 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("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("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.ConvertUnit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("InternalTrigger"); - - b.Property("Modifier"); - - b.Property("UnitType"); - - b.HasKey("Id"); - - b.ToTable("ConversionUnits"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Amount"); - - b.Property("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("Currency"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Amount"); - - b.Property("Name"); - - b.Property("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("Donators"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Text"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("EightBallResponses"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("GuildConfigId"); - - b.Property("GuildId"); - - b.Property("LastStatus"); - - b.Property("Type"); - - b.Property("Username"); - - b.HasKey("Id"); - - b.HasIndex("GuildConfigId"); - - b.ToTable("FollowedStream"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AutoAssignRoleId"); - - b.Property("AutoDeleteByeMessages"); - - b.Property("AutoDeleteGreetMessages"); - - b.Property("AutoDeleteGreetMessagesTimer"); - - b.Property("AutoDeleteSelfAssignedRoleMessages"); - - b.Property("ByeMessageChannelId"); - - b.Property("ChannelByeMessageText"); - - b.Property("ChannelGreetMessageText"); - - b.Property("DefaultMusicVolume"); - - b.Property("DeleteMessageOnCommand"); - - b.Property("DmGreetMessageText"); - - b.Property("ExclusiveSelfAssignedRoles"); - - b.Property("GenerateCurrencyChannelId"); - - b.Property("GreetMessageChannelId"); - - b.Property("GuildId"); - - b.Property("LogSettingId"); - - b.Property("PermissionRole"); - - b.Property("RootPermissionId"); - - b.Property("SendChannelByeMessage"); - - b.Property("SendChannelGreetMessage"); - - b.Property("SendDmGreetMessage"); - - b.Property("VerbosePermissions"); - - b.Property("VoicePlusTextEnabled"); - - b.HasKey("Id"); - - b.HasIndex("GuildId") - .IsUnique(); - - b.HasIndex("LogSettingId"); - - b.HasIndex("RootPermissionId"); - - b.ToTable("GuildConfigs"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("LogSettingId"); - - b.HasKey("Id"); - - b.HasIndex("LogSettingId"); - - b.ToTable("IgnoredLogChannels"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("LogSettingId"); - - b.HasKey("Id"); - - b.HasIndex("LogSettingId"); - - b.ToTable("IgnoredVoicePresenceCHannels"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelCreated"); - - b.Property("ChannelDestroyed"); - - b.Property("ChannelId"); - - b.Property("ChannelUpdated"); - - b.Property("IsLogging"); - - b.Property("LogUserPresence"); - - b.Property("LogVoicePresence"); - - b.Property("MessageDeleted"); - - b.Property("MessageReceived"); - - b.Property("MessageUpdated"); - - b.Property("UserBanned"); - - b.Property("UserJoined"); - - b.Property("UserLeft"); - - b.Property("UserPresenceChannelId"); - - b.Property("UserUnbanned"); - - b.Property("UserUpdated"); - - b.Property("VoicePresenceChannelId"); - - b.HasKey("Id"); - - b.ToTable("LogSettings"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("ModuleName"); - - b.Property("Prefix"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("ModulePrefixes"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Author"); - - b.Property("AuthorId"); - - b.Property("Name"); - - b.HasKey("Id"); - - b.ToTable("MusicPlaylists"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - 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.Services.Database.Models.PlayingStatus", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Status"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("PlayingStatus"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - 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.Services.Database.Models.Quote", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AuthorId"); - - b.Property("AuthorName") - .IsRequired(); - - b.Property("GuildId"); - - b.Property("Keyword") - .IsRequired(); - - b.Property("Text") - .IsRequired(); - - b.HasKey("Id"); - - b.ToTable("Quotes"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Icon"); - - b.Property("Name"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("RaceAnimals"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("IsPrivate"); - - b.Property("Message"); - - b.Property("ServerId"); - - b.Property("UserId"); - - b.Property("When"); - - b.HasKey("Id"); - - b.ToTable("Reminders"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("GuildId"); - - b.Property("Interval"); - - b.Property("Message"); - - b.HasKey("Id"); - - b.HasIndex("ChannelId") - .IsUnique(); - - b.ToTable("Repeaters"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("GuildId"); - - b.Property("RoleId"); - - b.HasKey("Id"); - - b.HasIndex("GuildId", "RoleId") - .IsUnique(); - - b.ToTable("SelfAssignableRoles"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Author"); - - b.Property("Text"); - - b.HasKey("Id"); - - b.ToTable("TypingArticles"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("Blacklist") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => - { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") - .WithMany("Bases") - .HasForeignKey("ClashWarId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("EightBallResponses") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => - { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") - .WithMany("FollowedStreams") - .HasForeignKey("GuildConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany() - .HasForeignKey("LogSettingId"); - - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") - .WithMany() - .HasForeignKey("RootPermissionId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany("IgnoredChannels") - .HasForeignKey("LogSettingId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany("IgnoredVoicePresenceChannelIds") - .HasForeignKey("LogSettingId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig", "BotConfig") - .WithMany("ModulePrefixes") - .HasForeignKey("BotConfigId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => - { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") - .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("RotatingStatusMessages") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => - { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") - .WithMany("Songs") - .HasForeignKey("MusicPlaylistId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("RaceAnimals") - .HasForeignKey("BotConfigId"); - }); - } - } -} diff --git a/src/NadekoBot/Migrations/20161003012137_blacklist.Designer.cs b/src/NadekoBot/Migrations/20161003012137_blacklist.Designer.cs deleted file mode 100644 index 5bdecdb6..00000000 --- a/src/NadekoBot/Migrations/20161003012137_blacklist.Designer.cs +++ /dev/null @@ -1,650 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database.Impl; - -namespace NadekoBot.Migrations -{ - [DbContext(typeof(NadekoSqliteContext))] - [Migration("20161003012137_blacklist")] - partial class blacklist - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("ItemId"); - - b.Property("Type"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("BlacklistItem"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BufferSize"); - - b.Property("CurrencyGenerationChance"); - - b.Property("CurrencyGenerationCooldown"); - - b.Property("CurrencyName"); - - b.Property("CurrencyPluralName"); - - b.Property("CurrencySign"); - - b.Property("DontJoinServers"); - - b.Property("ForwardMessages"); - - b.Property("ForwardToAllOwners"); - - b.Property("RemindMessageFormat"); - - b.Property("RotatingStatuses"); - - b.HasKey("Id"); - - 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("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("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.ConvertUnit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("InternalTrigger"); - - b.Property("Modifier"); - - b.Property("UnitType"); - - b.HasKey("Id"); - - b.ToTable("ConversionUnits"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Amount"); - - b.Property("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("Currency"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Amount"); - - b.Property("Name"); - - b.Property("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("Donators"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Text"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("EightBallResponses"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("GuildConfigId"); - - b.Property("GuildId"); - - b.Property("LastStatus"); - - b.Property("Type"); - - b.Property("Username"); - - b.HasKey("Id"); - - b.HasIndex("GuildConfigId"); - - b.ToTable("FollowedStream"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AutoAssignRoleId"); - - b.Property("AutoDeleteByeMessages"); - - b.Property("AutoDeleteGreetMessages"); - - b.Property("AutoDeleteGreetMessagesTimer"); - - b.Property("AutoDeleteSelfAssignedRoleMessages"); - - b.Property("ByeMessageChannelId"); - - b.Property("ChannelByeMessageText"); - - b.Property("ChannelGreetMessageText"); - - b.Property("DefaultMusicVolume"); - - b.Property("DeleteMessageOnCommand"); - - b.Property("DmGreetMessageText"); - - b.Property("ExclusiveSelfAssignedRoles"); - - b.Property("GenerateCurrencyChannelId"); - - b.Property("GreetMessageChannelId"); - - b.Property("GuildId"); - - b.Property("LogSettingId"); - - b.Property("PermissionRole"); - - b.Property("RootPermissionId"); - - b.Property("SendChannelByeMessage"); - - b.Property("SendChannelGreetMessage"); - - b.Property("SendDmGreetMessage"); - - b.Property("VerbosePermissions"); - - b.Property("VoicePlusTextEnabled"); - - b.HasKey("Id"); - - b.HasIndex("GuildId") - .IsUnique(); - - b.HasIndex("LogSettingId"); - - b.HasIndex("RootPermissionId"); - - b.ToTable("GuildConfigs"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("LogSettingId"); - - b.HasKey("Id"); - - b.HasIndex("LogSettingId"); - - b.ToTable("IgnoredLogChannels"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("LogSettingId"); - - b.HasKey("Id"); - - b.HasIndex("LogSettingId"); - - b.ToTable("IgnoredVoicePresenceCHannels"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelCreated"); - - b.Property("ChannelDestroyed"); - - b.Property("ChannelId"); - - b.Property("ChannelUpdated"); - - b.Property("IsLogging"); - - b.Property("LogUserPresence"); - - b.Property("LogVoicePresence"); - - b.Property("MessageDeleted"); - - b.Property("MessageReceived"); - - b.Property("MessageUpdated"); - - b.Property("UserBanned"); - - b.Property("UserJoined"); - - b.Property("UserLeft"); - - b.Property("UserPresenceChannelId"); - - b.Property("UserUnbanned"); - - b.Property("UserUpdated"); - - b.Property("VoicePresenceChannelId"); - - b.HasKey("Id"); - - b.ToTable("LogSettings"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("ModuleName"); - - b.Property("Prefix"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("ModulePrefixes"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Author"); - - b.Property("AuthorId"); - - b.Property("Name"); - - b.HasKey("Id"); - - b.ToTable("MusicPlaylists"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - 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.Services.Database.Models.PlayingStatus", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Status"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("PlayingStatus"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - 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.Services.Database.Models.Quote", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AuthorId"); - - b.Property("AuthorName") - .IsRequired(); - - b.Property("GuildId"); - - b.Property("Keyword") - .IsRequired(); - - b.Property("Text") - .IsRequired(); - - b.HasKey("Id"); - - b.ToTable("Quotes"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Icon"); - - b.Property("Name"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("RaceAnimals"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("IsPrivate"); - - b.Property("Message"); - - b.Property("ServerId"); - - b.Property("UserId"); - - b.Property("When"); - - b.HasKey("Id"); - - b.ToTable("Reminders"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("GuildId"); - - b.Property("Interval"); - - b.Property("Message"); - - b.HasKey("Id"); - - b.HasIndex("ChannelId") - .IsUnique(); - - b.ToTable("Repeaters"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("GuildId"); - - b.Property("RoleId"); - - b.HasKey("Id"); - - b.HasIndex("GuildId", "RoleId") - .IsUnique(); - - b.ToTable("SelfAssignableRoles"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Author"); - - b.Property("Text"); - - b.HasKey("Id"); - - b.ToTable("TypingArticles"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("Blacklist") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => - { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") - .WithMany("Bases") - .HasForeignKey("ClashWarId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("EightBallResponses") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => - { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") - .WithMany("FollowedStreams") - .HasForeignKey("GuildConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany() - .HasForeignKey("LogSettingId"); - - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") - .WithMany() - .HasForeignKey("RootPermissionId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany("IgnoredChannels") - .HasForeignKey("LogSettingId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany("IgnoredVoicePresenceChannelIds") - .HasForeignKey("LogSettingId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig", "BotConfig") - .WithMany("ModulePrefixes") - .HasForeignKey("BotConfigId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => - { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") - .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("RotatingStatusMessages") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => - { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") - .WithMany("Songs") - .HasForeignKey("MusicPlaylistId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("RaceAnimals") - .HasForeignKey("BotConfigId"); - }); - } - } -} diff --git a/src/NadekoBot/Migrations/20161003012137_blacklist.cs b/src/NadekoBot/Migrations/20161003012137_blacklist.cs deleted file mode 100644 index f3c24df2..00000000 --- a/src/NadekoBot/Migrations/20161003012137_blacklist.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database.Models; - -namespace NadekoBot.Migrations -{ - public partial class blacklist : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "Type", - table: "BlacklistItem", - nullable: false, - defaultValue: BlacklistItem.BlacklistType.Server); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "Type", - table: "BlacklistItem"); - } - } -} diff --git a/src/NadekoBot/Migrations/20161003170208_filtering.Designer.cs b/src/NadekoBot/Migrations/20161003170208_filtering.Designer.cs deleted file mode 100644 index 8d173fd5..00000000 --- a/src/NadekoBot/Migrations/20161003170208_filtering.Designer.cs +++ /dev/null @@ -1,708 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database.Impl; - -namespace NadekoBot.Migrations -{ - [DbContext(typeof(NadekoSqliteContext))] - [Migration("20161003170208_filtering")] - partial class filtering - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("ItemId"); - - b.Property("Type"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("BlacklistItem"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BufferSize"); - - b.Property("CurrencyGenerationChance"); - - b.Property("CurrencyGenerationCooldown"); - - b.Property("CurrencyName"); - - b.Property("CurrencyPluralName"); - - b.Property("CurrencySign"); - - b.Property("DontJoinServers"); - - b.Property("ForwardMessages"); - - b.Property("ForwardToAllOwners"); - - b.Property("RemindMessageFormat"); - - b.Property("RotatingStatuses"); - - b.HasKey("Id"); - - 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("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("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.ConvertUnit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("InternalTrigger"); - - b.Property("Modifier"); - - b.Property("UnitType"); - - b.HasKey("Id"); - - b.ToTable("ConversionUnits"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Amount"); - - b.Property("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("Currency"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Amount"); - - b.Property("Name"); - - b.Property("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("Donators"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Text"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("EightBallResponses"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("GuildConfigId"); - - b.Property("GuildConfigId1"); - - b.HasKey("Id"); - - b.HasIndex("GuildConfigId"); - - b.HasIndex("GuildConfigId1"); - - b.ToTable("FilterChannelId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("GuildConfigId"); - - b.Property("Word"); - - b.HasKey("Id"); - - b.HasIndex("GuildConfigId"); - - b.ToTable("FilteredWord"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("GuildConfigId"); - - b.Property("GuildId"); - - b.Property("LastStatus"); - - b.Property("Type"); - - b.Property("Username"); - - b.HasKey("Id"); - - b.HasIndex("GuildConfigId"); - - b.ToTable("FollowedStream"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AutoAssignRoleId"); - - b.Property("AutoDeleteByeMessages"); - - b.Property("AutoDeleteGreetMessages"); - - b.Property("AutoDeleteGreetMessagesTimer"); - - b.Property("AutoDeleteSelfAssignedRoleMessages"); - - b.Property("ByeMessageChannelId"); - - b.Property("ChannelByeMessageText"); - - b.Property("ChannelGreetMessageText"); - - b.Property("DefaultMusicVolume"); - - b.Property("DeleteMessageOnCommand"); - - b.Property("DmGreetMessageText"); - - b.Property("ExclusiveSelfAssignedRoles"); - - b.Property("FilterInvites"); - - b.Property("FilterWords"); - - b.Property("GenerateCurrencyChannelId"); - - b.Property("GreetMessageChannelId"); - - b.Property("GuildId"); - - b.Property("LogSettingId"); - - b.Property("PermissionRole"); - - b.Property("RootPermissionId"); - - b.Property("SendChannelByeMessage"); - - b.Property("SendChannelGreetMessage"); - - b.Property("SendDmGreetMessage"); - - b.Property("VerbosePermissions"); - - b.Property("VoicePlusTextEnabled"); - - b.HasKey("Id"); - - b.HasIndex("GuildId") - .IsUnique(); - - b.HasIndex("LogSettingId"); - - b.HasIndex("RootPermissionId"); - - b.ToTable("GuildConfigs"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("LogSettingId"); - - b.HasKey("Id"); - - b.HasIndex("LogSettingId"); - - b.ToTable("IgnoredLogChannels"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("LogSettingId"); - - b.HasKey("Id"); - - b.HasIndex("LogSettingId"); - - b.ToTable("IgnoredVoicePresenceCHannels"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelCreated"); - - b.Property("ChannelDestroyed"); - - b.Property("ChannelId"); - - b.Property("ChannelUpdated"); - - b.Property("IsLogging"); - - b.Property("LogUserPresence"); - - b.Property("LogVoicePresence"); - - b.Property("MessageDeleted"); - - b.Property("MessageReceived"); - - b.Property("MessageUpdated"); - - b.Property("UserBanned"); - - b.Property("UserJoined"); - - b.Property("UserLeft"); - - b.Property("UserPresenceChannelId"); - - b.Property("UserUnbanned"); - - b.Property("UserUpdated"); - - b.Property("VoicePresenceChannelId"); - - b.HasKey("Id"); - - b.ToTable("LogSettings"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("ModuleName"); - - b.Property("Prefix"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("ModulePrefixes"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Author"); - - b.Property("AuthorId"); - - b.Property("Name"); - - b.HasKey("Id"); - - b.ToTable("MusicPlaylists"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - 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.Services.Database.Models.PlayingStatus", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Status"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("PlayingStatus"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - 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.Services.Database.Models.Quote", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AuthorId"); - - b.Property("AuthorName") - .IsRequired(); - - b.Property("GuildId"); - - b.Property("Keyword") - .IsRequired(); - - b.Property("Text") - .IsRequired(); - - b.HasKey("Id"); - - b.ToTable("Quotes"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Icon"); - - b.Property("Name"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("RaceAnimals"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("IsPrivate"); - - b.Property("Message"); - - b.Property("ServerId"); - - b.Property("UserId"); - - b.Property("When"); - - b.HasKey("Id"); - - b.ToTable("Reminders"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("GuildId"); - - b.Property("Interval"); - - b.Property("Message"); - - b.HasKey("Id"); - - b.HasIndex("ChannelId") - .IsUnique(); - - b.ToTable("Repeaters"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("GuildId"); - - b.Property("RoleId"); - - b.HasKey("Id"); - - b.HasIndex("GuildId", "RoleId") - .IsUnique(); - - b.ToTable("SelfAssignableRoles"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Author"); - - b.Property("Text"); - - b.HasKey("Id"); - - b.ToTable("TypingArticles"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("Blacklist") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => - { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") - .WithMany("Bases") - .HasForeignKey("ClashWarId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("EightBallResponses") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => - { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") - .WithMany("FilterInvitesChannelIds") - .HasForeignKey("GuildConfigId"); - - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") - .WithMany("FilterWordsChannelIds") - .HasForeignKey("GuildConfigId1"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => - { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") - .WithMany("FilteredWords") - .HasForeignKey("GuildConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => - { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") - .WithMany("FollowedStreams") - .HasForeignKey("GuildConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany() - .HasForeignKey("LogSettingId"); - - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") - .WithMany() - .HasForeignKey("RootPermissionId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany("IgnoredChannels") - .HasForeignKey("LogSettingId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany("IgnoredVoicePresenceChannelIds") - .HasForeignKey("LogSettingId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig", "BotConfig") - .WithMany("ModulePrefixes") - .HasForeignKey("BotConfigId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => - { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") - .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("RotatingStatusMessages") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => - { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") - .WithMany("Songs") - .HasForeignKey("MusicPlaylistId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("RaceAnimals") - .HasForeignKey("BotConfigId"); - }); - } - } -} diff --git a/src/NadekoBot/Migrations/20161003170208_filtering.cs b/src/NadekoBot/Migrations/20161003170208_filtering.cs deleted file mode 100644 index 64e2d5e9..00000000 --- a/src/NadekoBot/Migrations/20161003170208_filtering.cs +++ /dev/null @@ -1,103 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace NadekoBot.Migrations -{ - public partial class filtering : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "FilterChannelId", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - ChannelId = table.Column(nullable: false), - GuildConfigId = table.Column(nullable: true), - GuildConfigId1 = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_FilterChannelId", x => x.Id); - table.ForeignKey( - name: "FK_FilterChannelId_GuildConfigs_GuildConfigId", - column: x => x.GuildConfigId, - principalTable: "GuildConfigs", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "FK_FilterChannelId_GuildConfigs_GuildConfigId1", - column: x => x.GuildConfigId1, - principalTable: "GuildConfigs", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "FilteredWord", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Autoincrement", true), - GuildConfigId = table.Column(nullable: true), - Word = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_FilteredWord", x => x.Id); - table.ForeignKey( - name: "FK_FilteredWord_GuildConfigs_GuildConfigId", - column: x => x.GuildConfigId, - principalTable: "GuildConfigs", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.AddColumn( - name: "FilterInvites", - table: "GuildConfigs", - nullable: false, - defaultValue: false); - - migrationBuilder.AddColumn( - name: "FilterWords", - table: "GuildConfigs", - nullable: false, - defaultValue: false); - - migrationBuilder.CreateIndex( - name: "IX_FilterChannelId_GuildConfigId", - table: "FilterChannelId", - column: "GuildConfigId"); - - migrationBuilder.CreateIndex( - name: "IX_FilterChannelId_GuildConfigId1", - table: "FilterChannelId", - column: "GuildConfigId1"); - - migrationBuilder.CreateIndex( - name: "IX_FilteredWord_GuildConfigId", - table: "FilteredWord", - column: "GuildConfigId"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "FilterInvites", - table: "GuildConfigs"); - - migrationBuilder.DropColumn( - name: "FilterWords", - table: "GuildConfigs"); - - migrationBuilder.DropTable( - name: "FilterChannelId"); - - migrationBuilder.DropTable( - name: "FilteredWord"); - } - } -} diff --git a/src/NadekoBot/Migrations/20161004233426_MigrationVersion.Designer.cs b/src/NadekoBot/Migrations/20161004233426_MigrationVersion.Designer.cs deleted file mode 100644 index d3b201ac..00000000 --- a/src/NadekoBot/Migrations/20161004233426_MigrationVersion.Designer.cs +++ /dev/null @@ -1,710 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using NadekoBot.Services.Database.Impl; - -namespace NadekoBot.Migrations -{ - [DbContext(typeof(NadekoSqliteContext))] - [Migration("20161004233426_MigrationVersion")] - partial class MigrationVersion - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { - modelBuilder - .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("ItemId"); - - b.Property("Type"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("BlacklistItem"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BufferSize"); - - b.Property("CurrencyGenerationChance"); - - b.Property("CurrencyGenerationCooldown"); - - b.Property("CurrencyName"); - - b.Property("CurrencyPluralName"); - - b.Property("CurrencySign"); - - b.Property("DontJoinServers"); - - b.Property("ForwardMessages"); - - b.Property("ForwardToAllOwners"); - - b.Property("MigrationVersion"); - - b.Property("RemindMessageFormat"); - - b.Property("RotatingStatuses"); - - b.HasKey("Id"); - - 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("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("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.ConvertUnit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("InternalTrigger"); - - b.Property("Modifier"); - - b.Property("UnitType"); - - b.HasKey("Id"); - - b.ToTable("ConversionUnits"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Amount"); - - b.Property("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("Currency"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Amount"); - - b.Property("Name"); - - b.Property("UserId"); - - b.HasKey("Id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("Donators"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Text"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("EightBallResponses"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("GuildConfigId"); - - b.Property("GuildConfigId1"); - - b.HasKey("Id"); - - b.HasIndex("GuildConfigId"); - - b.HasIndex("GuildConfigId1"); - - b.ToTable("FilterChannelId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("GuildConfigId"); - - b.Property("Word"); - - b.HasKey("Id"); - - b.HasIndex("GuildConfigId"); - - b.ToTable("FilteredWord"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("GuildConfigId"); - - b.Property("GuildId"); - - b.Property("LastStatus"); - - b.Property("Type"); - - b.Property("Username"); - - b.HasKey("Id"); - - b.HasIndex("GuildConfigId"); - - b.ToTable("FollowedStream"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AutoAssignRoleId"); - - b.Property("AutoDeleteByeMessages"); - - b.Property("AutoDeleteGreetMessages"); - - b.Property("AutoDeleteGreetMessagesTimer"); - - b.Property("AutoDeleteSelfAssignedRoleMessages"); - - b.Property("ByeMessageChannelId"); - - b.Property("ChannelByeMessageText"); - - b.Property("ChannelGreetMessageText"); - - b.Property("DefaultMusicVolume"); - - b.Property("DeleteMessageOnCommand"); - - b.Property("DmGreetMessageText"); - - b.Property("ExclusiveSelfAssignedRoles"); - - b.Property("FilterInvites"); - - b.Property("FilterWords"); - - b.Property("GenerateCurrencyChannelId"); - - b.Property("GreetMessageChannelId"); - - b.Property("GuildId"); - - b.Property("LogSettingId"); - - b.Property("PermissionRole"); - - b.Property("RootPermissionId"); - - b.Property("SendChannelByeMessage"); - - b.Property("SendChannelGreetMessage"); - - b.Property("SendDmGreetMessage"); - - b.Property("VerbosePermissions"); - - b.Property("VoicePlusTextEnabled"); - - b.HasKey("Id"); - - b.HasIndex("GuildId") - .IsUnique(); - - b.HasIndex("LogSettingId"); - - b.HasIndex("RootPermissionId"); - - b.ToTable("GuildConfigs"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("LogSettingId"); - - b.HasKey("Id"); - - b.HasIndex("LogSettingId"); - - b.ToTable("IgnoredLogChannels"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("LogSettingId"); - - b.HasKey("Id"); - - b.HasIndex("LogSettingId"); - - b.ToTable("IgnoredVoicePresenceCHannels"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelCreated"); - - b.Property("ChannelDestroyed"); - - b.Property("ChannelId"); - - b.Property("ChannelUpdated"); - - b.Property("IsLogging"); - - b.Property("LogUserPresence"); - - b.Property("LogVoicePresence"); - - b.Property("MessageDeleted"); - - b.Property("MessageReceived"); - - b.Property("MessageUpdated"); - - b.Property("UserBanned"); - - b.Property("UserJoined"); - - b.Property("UserLeft"); - - b.Property("UserPresenceChannelId"); - - b.Property("UserUnbanned"); - - b.Property("UserUpdated"); - - b.Property("VoicePresenceChannelId"); - - b.HasKey("Id"); - - b.ToTable("LogSettings"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("ModuleName"); - - b.Property("Prefix"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("ModulePrefixes"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Author"); - - b.Property("AuthorId"); - - b.Property("Name"); - - b.HasKey("Id"); - - b.ToTable("MusicPlaylists"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - 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.Services.Database.Models.PlayingStatus", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Status"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("PlayingStatus"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - 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.Services.Database.Models.Quote", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("AuthorId"); - - b.Property("AuthorName") - .IsRequired(); - - b.Property("GuildId"); - - b.Property("Keyword") - .IsRequired(); - - b.Property("Text") - .IsRequired(); - - b.HasKey("Id"); - - b.ToTable("Quotes"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("BotConfigId"); - - b.Property("Icon"); - - b.Property("Name"); - - b.HasKey("Id"); - - b.HasIndex("BotConfigId"); - - b.ToTable("RaceAnimals"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("IsPrivate"); - - b.Property("Message"); - - b.Property("ServerId"); - - b.Property("UserId"); - - b.Property("When"); - - b.HasKey("Id"); - - b.ToTable("Reminders"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("ChannelId"); - - b.Property("GuildId"); - - b.Property("Interval"); - - b.Property("Message"); - - b.HasKey("Id"); - - b.HasIndex("ChannelId") - .IsUnique(); - - b.ToTable("Repeaters"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("GuildId"); - - b.Property("RoleId"); - - b.HasKey("Id"); - - b.HasIndex("GuildId", "RoleId") - .IsUnique(); - - b.ToTable("SelfAssignableRoles"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Author"); - - b.Property("Text"); - - b.HasKey("Id"); - - b.ToTable("TypingArticles"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("Blacklist") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => - { - b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") - .WithMany("Bases") - .HasForeignKey("ClashWarId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("EightBallResponses") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => - { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") - .WithMany("FilterInvitesChannelIds") - .HasForeignKey("GuildConfigId"); - - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") - .WithMany("FilterWordsChannelIds") - .HasForeignKey("GuildConfigId1"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => - { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") - .WithMany("FilteredWords") - .HasForeignKey("GuildConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => - { - b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") - .WithMany("FollowedStreams") - .HasForeignKey("GuildConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany() - .HasForeignKey("LogSettingId"); - - b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") - .WithMany() - .HasForeignKey("RootPermissionId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany("IgnoredChannels") - .HasForeignKey("LogSettingId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => - { - b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") - .WithMany("IgnoredVoicePresenceChannelIds") - .HasForeignKey("LogSettingId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig", "BotConfig") - .WithMany("ModulePrefixes") - .HasForeignKey("BotConfigId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => - { - b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") - .WithOne("Previous") - .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("RotatingStatusMessages") - .HasForeignKey("BotConfigId"); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => - { - b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") - .WithMany("Songs") - .HasForeignKey("MusicPlaylistId") - .OnDelete(DeleteBehavior.Cascade); - }); - - modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => - { - b.HasOne("NadekoBot.Services.Database.Models.BotConfig") - .WithMany("RaceAnimals") - .HasForeignKey("BotConfigId"); - }); - } - } -} diff --git a/src/NadekoBot/Migrations/20161004233426_MigrationVersion.cs b/src/NadekoBot/Migrations/20161004233426_MigrationVersion.cs deleted file mode 100644 index a5017255..00000000 --- a/src/NadekoBot/Migrations/20161004233426_MigrationVersion.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace NadekoBot.Migrations -{ - public partial class MigrationVersion : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "MigrationVersion", - table: "BotConfig", - nullable: false, - defaultValue: 0); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "MigrationVersion", - table: "BotConfig"); - } - } -} diff --git a/src/NadekoBot/Migrations/20161004233637_HelpString.cs b/src/NadekoBot/Migrations/20161004233637_HelpString.cs deleted file mode 100644 index 9a4322e3..00000000 --- a/src/NadekoBot/Migrations/20161004233637_HelpString.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using Microsoft.EntityFrameworkCore.Migrations; - -namespace NadekoBot.Migrations -{ - public partial class HelpString : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "HelpString", - table: "BotConfig", - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "HelpString", - table: "BotConfig"); - } - } -} diff --git a/src/NadekoBot/Migrations/20161004233637_HelpString.Designer.cs b/src/NadekoBot/Migrations/20161005030440_first.Designer.cs similarity index 99% rename from src/NadekoBot/Migrations/20161004233637_HelpString.Designer.cs rename to src/NadekoBot/Migrations/20161005030440_first.Designer.cs index 17d81a59..1f862568 100644 --- a/src/NadekoBot/Migrations/20161004233637_HelpString.Designer.cs +++ b/src/NadekoBot/Migrations/20161005030440_first.Designer.cs @@ -8,8 +8,8 @@ using NadekoBot.Services.Database.Impl; namespace NadekoBot.Migrations { [DbContext(typeof(NadekoSqliteContext))] - [Migration("20161004233637_HelpString")] - partial class HelpString + [Migration("20161005030440_first")] + partial class first { protected override void BuildTargetModel(ModelBuilder modelBuilder) { @@ -51,6 +51,8 @@ namespace NadekoBot.Migrations b.Property("CurrencySign"); + b.Property("DMHelpString"); + b.Property("DontJoinServers"); b.Property("ForwardMessages"); @@ -362,8 +364,6 @@ namespace NadekoBot.Migrations b.Property("MessageDeleted"); - b.Property("MessageReceived"); - b.Property("MessageUpdated"); b.Property("UserBanned"); diff --git a/src/NadekoBot/Migrations/20161002021256_first.cs b/src/NadekoBot/Migrations/20161005030440_first.cs similarity index 89% rename from src/NadekoBot/Migrations/20161002021256_first.cs rename to src/NadekoBot/Migrations/20161005030440_first.cs index 7c62a1a9..0b8325dc 100644 --- a/src/NadekoBot/Migrations/20161002021256_first.cs +++ b/src/NadekoBot/Migrations/20161005030440_first.cs @@ -20,9 +20,12 @@ namespace NadekoBot.Migrations CurrencyName = table.Column(nullable: true), CurrencyPluralName = table.Column(nullable: true), CurrencySign = table.Column(nullable: true), + DMHelpString = table.Column(nullable: true), DontJoinServers = table.Column(nullable: false), ForwardMessages = table.Column(nullable: false), ForwardToAllOwners = table.Column(nullable: false), + HelpString = table.Column(nullable: true), + MigrationVersion = table.Column(nullable: false), RemindMessageFormat = table.Column(nullable: true), RotatingStatuses = table.Column(nullable: false) }, @@ -107,7 +110,6 @@ namespace NadekoBot.Migrations LogUserPresence = table.Column(nullable: false), LogVoicePresence = table.Column(nullable: false), MessageDeleted = table.Column(nullable: false), - MessageReceived = table.Column(nullable: false), MessageUpdated = table.Column(nullable: false), UserBanned = table.Column(nullable: false), UserJoined = table.Column(nullable: false), @@ -247,7 +249,8 @@ namespace NadekoBot.Migrations Id = table.Column(nullable: false) .Annotation("Autoincrement", true), BotConfigId = table.Column(nullable: true), - ItemId = table.Column(nullable: false) + ItemId = table.Column(nullable: false), + Type = table.Column(nullable: false) }, constraints: table => { @@ -447,6 +450,8 @@ namespace NadekoBot.Migrations DeleteMessageOnCommand = table.Column(nullable: false), DmGreetMessageText = table.Column(nullable: true), ExclusiveSelfAssignedRoles = table.Column(nullable: false), + FilterInvites = table.Column(nullable: false), + FilterWords = table.Column(nullable: false), GenerateCurrencyChannelId = table.Column(nullable: true), GreetMessageChannelId = table.Column(nullable: false), GuildId = table.Column(nullable: false), @@ -476,6 +481,53 @@ namespace NadekoBot.Migrations onDelete: ReferentialAction.Restrict); }); + migrationBuilder.CreateTable( + name: "FilterChannelId", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + ChannelId = table.Column(nullable: false), + GuildConfigId = table.Column(nullable: true), + GuildConfigId1 = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_FilterChannelId", x => x.Id); + table.ForeignKey( + name: "FK_FilterChannelId_GuildConfigs_GuildConfigId", + column: x => x.GuildConfigId, + principalTable: "GuildConfigs", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_FilterChannelId_GuildConfigs_GuildConfigId1", + column: x => x.GuildConfigId1, + principalTable: "GuildConfigs", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "FilteredWord", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + GuildConfigId = table.Column(nullable: true), + Word = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_FilteredWord", x => x.Id); + table.ForeignKey( + name: "FK_FilteredWord_GuildConfigs_GuildConfigId", + column: x => x.GuildConfigId, + principalTable: "GuildConfigs", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + migrationBuilder.CreateTable( name: "FollowedStream", columns: table => new @@ -527,6 +579,21 @@ namespace NadekoBot.Migrations table: "EightBallResponses", column: "BotConfigId"); + migrationBuilder.CreateIndex( + name: "IX_FilterChannelId_GuildConfigId", + table: "FilterChannelId", + column: "GuildConfigId"); + + migrationBuilder.CreateIndex( + name: "IX_FilterChannelId_GuildConfigId1", + table: "FilterChannelId", + column: "GuildConfigId1"); + + migrationBuilder.CreateIndex( + name: "IX_FilteredWord_GuildConfigId", + table: "FilteredWord", + column: "GuildConfigId"); + migrationBuilder.CreateIndex( name: "IX_FollowedStream_GuildConfigId", table: "FollowedStream", @@ -617,6 +684,12 @@ namespace NadekoBot.Migrations migrationBuilder.DropTable( name: "EightBallResponses"); + migrationBuilder.DropTable( + name: "FilterChannelId"); + + migrationBuilder.DropTable( + name: "FilteredWord"); + migrationBuilder.DropTable( name: "FollowedStream"); diff --git a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs index 63a46553..050244e0 100644 --- a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs +++ b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs @@ -50,6 +50,8 @@ namespace NadekoBot.Migrations b.Property("CurrencySign"); + b.Property("DMHelpString"); + b.Property("DontJoinServers"); b.Property("ForwardMessages"); @@ -361,8 +363,6 @@ namespace NadekoBot.Migrations b.Property("MessageDeleted"); - b.Property("MessageReceived"); - b.Property("MessageUpdated"); b.Property("UserBanned"); diff --git a/src/NadekoBot/Modules/Administration/Administration.cs b/src/NadekoBot/Modules/Administration/Administration.cs index e82aa16f..c48ab530 100644 --- a/src/NadekoBot/Modules/Administration/Administration.cs +++ b/src/NadekoBot/Modules/Administration/Administration.cs @@ -50,7 +50,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task Restart(IUserMessage umsg) @@ -65,7 +65,7 @@ namespace NadekoBot.Modules.Administration Environment.Exit(0); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.Administrator)] public async Task Delmsgoncmd(IUserMessage umsg) @@ -85,7 +85,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("❗`Stopped automatic deletion of successfull command invokations.`"); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] public async Task Setrole(IUserMessage umsg, IGuildUser usr, [Remainder] IRole role) @@ -103,7 +103,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] public async Task Removerole(IUserMessage umsg, IGuildUser usr, [Remainder] IRole role) @@ -120,7 +120,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] public async Task RenameRole(IUserMessage umsg, IRole roleToEdit, string newname) @@ -142,7 +142,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] public async Task RemoveAllRoles(IUserMessage umsg, [Remainder] IGuildUser user) @@ -160,7 +160,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] public async Task CreateRole(IUserMessage umsg, [Remainder] string roleName = null) @@ -181,7 +181,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] public async Task RoleColor(IUserMessage umsg, params string[] args) @@ -219,7 +219,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.BanMembers)] public async Task Ban(IUserMessage umsg, IGuildUser user) @@ -246,7 +246,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.BanMembers)] public async Task Softban(IUserMessage umsg, IGuildUser user, [Remainder] string msg = null) @@ -272,7 +272,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Kick(IUserMessage umsg, IGuildUser user, [Remainder] string msg = null) { @@ -300,7 +300,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.MuteMembers)] public async Task Mute(IUserMessage umsg, params IGuildUser[] users) @@ -323,7 +323,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.MuteMembers)] public async Task Unmute(IUserMessage umsg, params IGuildUser[] users) @@ -346,7 +346,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.DeafenMembers)] public async Task Deafen(IUserMessage umsg, params IGuildUser[] users) @@ -369,7 +369,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.DeafenMembers)] public async Task UnDeafen(IUserMessage umsg, params IGuildUser[] users) @@ -392,7 +392,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageChannels)] public async Task DelVoiChanl(IUserMessage umsg, [Remainder] IVoiceChannel voiceChannel) @@ -401,7 +401,7 @@ namespace NadekoBot.Modules.Administration await umsg.Channel.SendMessageAsync($"Removed channel **{voiceChannel.Name}**.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageChannels)] public async Task CreatVoiChanl(IUserMessage umsg, [Remainder] string channelName) @@ -411,7 +411,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync($"Created voice channel **{ch.Name}**, id `{ch.Id}`.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageChannels)] public async Task DelTxtChanl(IUserMessage umsg, [Remainder] ITextChannel channel) @@ -420,7 +420,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync($"Removed text channel **{channel.Name}**, id `{channel.Id}`.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageChannels)] public async Task CreaTxtChanl(IUserMessage umsg, [Remainder] string channelName) @@ -430,7 +430,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync($"Added text channel **{txtCh.Name}**, id `{txtCh.Id}`.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageChannels)] public async Task SetTopic(IUserMessage umsg, [Remainder] string topic = null) @@ -441,7 +441,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync(":ok: **New channel topic set.**").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageChannels)] public async Task SetChanlName(IUserMessage umsg, [Remainder] string name) @@ -454,7 +454,7 @@ namespace NadekoBot.Modules.Administration //delets her own messages, no perm required - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Prune(IUserMessage umsg) { @@ -467,7 +467,7 @@ namespace NadekoBot.Modules.Administration } // prune x - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(ChannelPermission.ManageMessages)] public async Task Prune(IUserMessage msg, int count) @@ -486,7 +486,7 @@ namespace NadekoBot.Modules.Administration } //prune @user [x] - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(ChannelPermission.ManageMessages)] public async Task Prune(IUserMessage msg, IGuildUser user, int count = 100) @@ -497,7 +497,7 @@ namespace NadekoBot.Modules.Administration await msg.Channel.DeleteMessagesAsync(enumerable); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task Die(IUserMessage umsg) @@ -509,7 +509,7 @@ namespace NadekoBot.Modules.Administration Environment.Exit(0); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task Setname(IUserMessage umsg, [Remainder] string newName) @@ -523,7 +523,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync($"Successfully changed name to {newName}").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task NewAvatar(IUserMessage umsg, [Remainder] string img = null) @@ -548,7 +548,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("New avatar set.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task SetGame(IUserMessage umsg, [Remainder] string game = null) @@ -562,7 +562,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("New game set.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task Send(IUserMessage umsg, string where, [Remainder] string msg = null) @@ -607,7 +607,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task Announce(IUserMessage umsg, [Remainder] string message) @@ -623,7 +623,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync(":ok:").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task SaveChat(IUserMessage umsg, int cnt) @@ -656,7 +656,7 @@ namespace NadekoBot.Modules.Administration } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.MentionEveryone)] public async Task MentionRole(IUserMessage umsg, params IRole[] roles) @@ -681,7 +681,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync(send).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Donators(IUserMessage umsg) { @@ -697,7 +697,7 @@ namespace NadekoBot.Modules.Administration } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Donadd(IUserMessage umsg, IUser donator, int amount) { diff --git a/src/NadekoBot/Modules/Administration/Commands/AutoAssignRoleCommands.cs b/src/NadekoBot/Modules/Administration/Commands/AutoAssignRoleCommands.cs index b5aedcf4..968f9dd9 100644 --- a/src/NadekoBot/Modules/Administration/Commands/AutoAssignRoleCommands.cs +++ b/src/NadekoBot/Modules/Administration/Commands/AutoAssignRoleCommands.cs @@ -42,7 +42,7 @@ namespace NadekoBot.Modules.Administration }; } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] public async Task AutoAssignRole(IUserMessage umsg, [Remainder] IRole role = null) diff --git a/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs b/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs index 693fbe39..9c830023 100644 --- a/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs +++ b/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs @@ -56,7 +56,7 @@ namespace NadekoBot.Modules.Administration public static readonly ConcurrentDictionary> Subscribers = new ConcurrentDictionary>(); - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task Scsc(IUserMessage msg) @@ -71,7 +71,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageGuild)] public async Task Jcsc(IUserMessage imsg, int token) @@ -85,7 +85,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync(":ok:").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageGuild)] public async Task Lcsc(IUserMessage imsg) diff --git a/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs b/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs index 3ce63622..d9abdaa0 100644 --- a/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs +++ b/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs @@ -482,7 +482,7 @@ namespace NadekoBot.Modules.Administration return channel; } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task LogServer(IUserMessage msg) @@ -505,7 +505,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("`Logging disabled.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task LogIgnore(IUserMessage imsg) @@ -600,7 +600,7 @@ namespace NadekoBot.Modules.Administration // } //} - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task UserPresence(IUserMessage imsg) { @@ -622,7 +622,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync($"`Stopped logging user presence updates.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task VoicePresence(IUserMessage imsg) { diff --git a/src/NadekoBot/Modules/Administration/Commands/MessageRepeater.cs b/src/NadekoBot/Modules/Administration/Commands/MessageRepeater.cs index 7902102c..9e7ffa61 100644 --- a/src/NadekoBot/Modules/Administration/Commands/MessageRepeater.cs +++ b/src/NadekoBot/Modules/Administration/Commands/MessageRepeater.cs @@ -73,7 +73,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageMessages)] public async Task RepeatInvoke(IUserMessage imsg) @@ -90,7 +90,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("🔄 " + rep.Repeater.Message).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Repeat(IUserMessage imsg) { @@ -110,7 +110,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("`No message is repeating.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Repeat(IUserMessage imsg, int minutes, [Remainder] string message) { diff --git a/src/NadekoBot/Modules/Administration/Commands/Migration.cs b/src/NadekoBot/Modules/Administration/Commands/Migration.cs index d6898502..4a297e6e 100644 --- a/src/NadekoBot/Modules/Administration/Commands/Migration.cs +++ b/src/NadekoBot/Modules/Administration/Commands/Migration.cs @@ -29,7 +29,7 @@ namespace NadekoBot.Modules.Administration _log = LogManager.GetCurrentClassLogger(); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [OwnerOnly] public async Task MigrateData(IUserMessage umsg) { diff --git a/src/NadekoBot/Modules/Administration/Commands/PlayingRotateCommands.cs b/src/NadekoBot/Modules/Administration/Commands/PlayingRotateCommands.cs index d482a256..ab8721e8 100644 --- a/src/NadekoBot/Modules/Administration/Commands/PlayingRotateCommands.cs +++ b/src/NadekoBot/Modules/Administration/Commands/PlayingRotateCommands.cs @@ -85,7 +85,7 @@ namespace NadekoBot.Modules.Administration {"%queued%", () => Music.Music.MusicPlayers.Sum(kvp => kvp.Value.Playlist.Count).ToString()} }; - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task RotatePlaying(IUserMessage umsg) @@ -106,7 +106,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("`Rotating playing status disabled.`"); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task AddPlaying(IUserMessage umsg, [Remainder] string status) @@ -123,7 +123,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("`Added.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task ListPlaying(IUserMessage umsg) @@ -146,7 +146,7 @@ namespace NadekoBot.Modules.Administration } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task RemovePlaying(IUserMessage umsg, int index) diff --git a/src/NadekoBot/Modules/Administration/Commands/RatelimitCommand.cs b/src/NadekoBot/Modules/Administration/Commands/RatelimitCommand.cs index ee612047..b7b11f64 100644 --- a/src/NadekoBot/Modules/Administration/Commands/RatelimitCommand.cs +++ b/src/NadekoBot/Modules/Administration/Commands/RatelimitCommand.cs @@ -84,7 +84,7 @@ namespace NadekoBot.Modules.Administration }; } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Slowmode(IUserMessage umsg, int msg = 1, int perSec = 5) { diff --git a/src/NadekoBot/Modules/Administration/Commands/SelfAssignedRolesCommand.cs b/src/NadekoBot/Modules/Administration/Commands/SelfAssignedRolesCommand.cs index 8ecfd242..d1a7dca3 100644 --- a/src/NadekoBot/Modules/Administration/Commands/SelfAssignedRolesCommand.cs +++ b/src/NadekoBot/Modules/Administration/Commands/SelfAssignedRolesCommand.cs @@ -19,7 +19,7 @@ namespace NadekoBot.Modules.Administration public class SelfAssignedRolesCommands { - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] public async Task Asar(IUserMessage umsg, [Remainder] IRole role) @@ -49,7 +49,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync(msg.ToString()).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] public async Task Rsar(IUserMessage umsg, [Remainder] IRole role) @@ -70,7 +70,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync($":ok:**{role.Name}** has been removed from the list of self-assignable roles").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Lsar(IUserMessage umsg) { @@ -105,7 +105,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync(msg.ToString() + "\n\n" + removeMsg.ToString()).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] public async Task Tesar(IUserMessage umsg) @@ -124,7 +124,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("Self assigned roles are now " + exl); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Iam(IUserMessage umsg, [Remainder] IRole role) { @@ -182,7 +182,7 @@ namespace NadekoBot.Modules.Administration } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Iamnot(IUserMessage umsg, [Remainder] IRole role) { diff --git a/src/NadekoBot/Modules/Administration/Commands/SelfCommands.cs b/src/NadekoBot/Modules/Administration/Commands/SelfCommands.cs index 78444817..87bf6860 100644 --- a/src/NadekoBot/Modules/Administration/Commands/SelfCommands.cs +++ b/src/NadekoBot/Modules/Administration/Commands/SelfCommands.cs @@ -19,7 +19,7 @@ namespace NadekoBot.Modules.Administration this._client = client; } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task Leave(IUserMessage umsg, [Remainder] string guildStr) diff --git a/src/NadekoBot/Modules/Administration/Commands/ServerGreetCommands.cs b/src/NadekoBot/Modules/Administration/Commands/ServerGreetCommands.cs index b462ebd5..c156c8e1 100644 --- a/src/NadekoBot/Modules/Administration/Commands/ServerGreetCommands.cs +++ b/src/NadekoBot/Modules/Administration/Commands/ServerGreetCommands.cs @@ -106,7 +106,7 @@ namespace NadekoBot.Modules.Administration return Task.CompletedTask; } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageGuild)] public async Task GreetDel(IUserMessage umsg) @@ -128,7 +128,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("`Automatic deletion of greet messages has been disabled.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageGuild)] public async Task Greet(IUserMessage umsg) @@ -151,7 +151,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("Greet announcements disabled.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageGuild)] public async Task GreetMsg(IUserMessage umsg, [Remainder] string text) @@ -180,7 +180,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("Enable greet messsages by typing `.greet`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageGuild)] public async Task GreetDm(IUserMessage umsg) @@ -202,7 +202,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("Greet announcements disabled.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageGuild)] public async Task GreetDmMsg(IUserMessage umsg, [Remainder] string text) @@ -231,7 +231,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("Enable DM greet messsages by typing `.greetdm`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageGuild)] public async Task Bye(IUserMessage umsg) @@ -254,7 +254,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("Bye announcements disabled.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageGuild)] public async Task ByeMsg(IUserMessage umsg, [Remainder] string text) @@ -283,7 +283,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync("Enable bye messsages by typing `.bye`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageGuild)] public async Task ByeDel(IUserMessage umsg) diff --git a/src/NadekoBot/Modules/Administration/Commands/VoicePlusTextCommands.cs b/src/NadekoBot/Modules/Administration/Commands/VoicePlusTextCommands.cs index e3a15e49..06f30700 100644 --- a/src/NadekoBot/Modules/Administration/Commands/VoicePlusTextCommands.cs +++ b/src/NadekoBot/Modules/Administration/Commands/VoicePlusTextCommands.cs @@ -97,7 +97,7 @@ namespace NadekoBot.Modules.Administration private string GetChannelName(string voiceName) => channelNameRegex.Replace(voiceName, "").Trim().Replace(" ", "-").TrimTo(90, true) + "-voice"; - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageRoles)] [RequirePermission(GuildPermission.ManageChannels)] @@ -138,7 +138,7 @@ namespace NadekoBot.Modules.Administration await channel.SendMessageAsync(ex.ToString()).ConfigureAwait(false); } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageChannels)] [RequirePermission(GuildPermission.ManageRoles)] diff --git a/src/NadekoBot/Modules/ClashOfClans/ClashOfClans.cs b/src/NadekoBot/Modules/ClashOfClans/ClashOfClans.cs index c643dd46..f817fe5c 100644 --- a/src/NadekoBot/Modules/ClashOfClans/ClashOfClans.cs +++ b/src/NadekoBot/Modules/ClashOfClans/ClashOfClans.cs @@ -51,7 +51,7 @@ namespace NadekoBot.Modules.ClashOfClans } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task CreateWar(IUserMessage umsg, int size, [Remainder] string enemyClan = null) { @@ -84,7 +84,7 @@ namespace NadekoBot.Modules.ClashOfClans await channel.SendMessageAsync($"❗🔰**CREATED CLAN WAR AGAINST {cw.ShortPrint()}**").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task StartWar(IUserMessage umsg, [Remainder] string number = null) { @@ -112,7 +112,7 @@ namespace NadekoBot.Modules.ClashOfClans SaveWar(war); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task ListWar(IUserMessage umsg, [Remainder] string number = null) { @@ -155,7 +155,7 @@ namespace NadekoBot.Modules.ClashOfClans await channel.SendMessageAsync(warsInfo.Item1[warsInfo.Item2].ToPrettyString()).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Claim(IUserMessage umsg, int number, int baseNumber, [Remainder] string other_name = null) { @@ -183,7 +183,7 @@ namespace NadekoBot.Modules.ClashOfClans } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task ClaimFinish1(IUserMessage umsg, int number, int baseNumber, [Remainder] string other_name = null) { @@ -191,7 +191,7 @@ namespace NadekoBot.Modules.ClashOfClans await FinishClaim(umsg, number, baseNumber, other_name, 1); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task ClaimFinish2(IUserMessage umsg, int number, int baseNumber, [Remainder] string other_name = null) { @@ -199,7 +199,7 @@ namespace NadekoBot.Modules.ClashOfClans await FinishClaim(umsg, number, baseNumber, other_name, 2); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task ClaimFinish(IUserMessage umsg, int number, int baseNumber, [Remainder] string other_name = null) { @@ -207,7 +207,7 @@ namespace NadekoBot.Modules.ClashOfClans await FinishClaim(umsg, number, baseNumber, other_name); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task EndWar(IUserMessage umsg, int number) { @@ -228,7 +228,7 @@ namespace NadekoBot.Modules.ClashOfClans warsInfo.Item1.RemoveAt(warsInfo.Item2); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Unclaim(IUserMessage umsg, int number, [Remainder] string otherName = null) { diff --git a/src/NadekoBot/Modules/Gambling/Commands/AnimalRacing.cs b/src/NadekoBot/Modules/Gambling/Commands/AnimalRacing.cs index 8e34016c..7b00bb4b 100644 --- a/src/NadekoBot/Modules/Gambling/Commands/AnimalRacing.cs +++ b/src/NadekoBot/Modules/Gambling/Commands/AnimalRacing.cs @@ -24,7 +24,7 @@ namespace NadekoBot.Modules.Gambling } public static ConcurrentDictionary AnimalRaces = new ConcurrentDictionary(); - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Race(IUserMessage umsg) { @@ -36,7 +36,7 @@ namespace NadekoBot.Modules.Gambling await channel.SendMessageAsync("🏁 `Failed starting a race. Another race is probably running.`"); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task JoinRace(IUserMessage umsg, int amount = 0) { diff --git a/src/NadekoBot/Modules/Gambling/Commands/DiceRollCommand.cs b/src/NadekoBot/Modules/Gambling/Commands/DiceRollCommand.cs index 9d0aa94d..d1e4aab6 100644 --- a/src/NadekoBot/Modules/Gambling/Commands/DiceRollCommand.cs +++ b/src/NadekoBot/Modules/Gambling/Commands/DiceRollCommand.cs @@ -21,7 +21,7 @@ namespace NadekoBot.Modules.Gambling { private Regex dndRegex { get; } = new Regex(@"(?\d+)d(?\d+)", RegexOptions.Compiled); - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Roll(IUserMessage umsg) { @@ -44,7 +44,7 @@ namespace NadekoBot.Modules.Gambling await channel.SendFileAsync(imageStream, "dice.png", $"{umsg.Author.Mention} rolled " + Format.Code(gen.ToString())).ConfigureAwait(false); } //todo merge into internallDndRoll and internalRoll - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [Priority(1)] public async Task Roll(IUserMessage umsg, string arg) @@ -75,7 +75,7 @@ namespace NadekoBot.Modules.Gambling } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [Priority(2)] public async Task Roll(IUserMessage umsg, int num) @@ -130,7 +130,7 @@ namespace NadekoBot.Modules.Gambling await channel.SendFileAsync(ms, "dice.png", $"{umsg.Author.Mention} rolled {values.Count} {(values.Count == 1 ? "die" : "dice")}. Total: **{values.Sum()}** Average: **{(values.Sum() / (1.0f * values.Count)).ToString("N2")}**").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Rolluo(IUserMessage umsg, string arg) { @@ -160,7 +160,7 @@ namespace NadekoBot.Modules.Gambling } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Rolluo(IUserMessage umsg, int num) { @@ -213,7 +213,7 @@ namespace NadekoBot.Modules.Gambling await channel.SendFileAsync(ms, "dice.png", $"{umsg.Author.Mention} rolled {values.Count} {(values.Count == 1 ? "die" : "dice")}. Total: **{values.Sum()}** Average: **{(values.Sum() / (1.0f * values.Count)).ToString("N2")}**").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task NRoll(IUserMessage umsg, [Remainder] string range) { diff --git a/src/NadekoBot/Modules/Gambling/Commands/DrawCommand.cs b/src/NadekoBot/Modules/Gambling/Commands/DrawCommand.cs index 9a455ac5..69649b78 100644 --- a/src/NadekoBot/Modules/Gambling/Commands/DrawCommand.cs +++ b/src/NadekoBot/Modules/Gambling/Commands/DrawCommand.cs @@ -18,7 +18,7 @@ namespace NadekoBot.Modules.Gambling private static readonly ConcurrentDictionary AllDecks = new ConcurrentDictionary(); private const string cardsPath = "data/images/cards"; - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Draw(IUserMessage msg) { @@ -50,7 +50,7 @@ namespace NadekoBot.Modules.Gambling } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Shuffle(IUserMessage imsg) { diff --git a/src/NadekoBot/Modules/Gambling/Commands/FlipCoinCommand.cs b/src/NadekoBot/Modules/Gambling/Commands/FlipCoinCommand.cs index 05096884..5fb0ddf4 100644 --- a/src/NadekoBot/Modules/Gambling/Commands/FlipCoinCommand.cs +++ b/src/NadekoBot/Modules/Gambling/Commands/FlipCoinCommand.cs @@ -19,7 +19,7 @@ namespace NadekoBot.Modules.Gambling private const string tailsPath = "data/images/coins/tails.png"; public FlipCoinCommands() { } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Flip(IUserMessage imsg, int count = 1) { @@ -47,7 +47,7 @@ namespace NadekoBot.Modules.Gambling await channel.SendFileAsync(imgs.Merge().ToStream(), $"{count} coins.png").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Betflip(IUserMessage umsg, int amount, string guess) { diff --git a/src/NadekoBot/Modules/Gambling/Gambling.cs b/src/NadekoBot/Modules/Gambling/Gambling.cs index d8296c98..b47c45ce 100644 --- a/src/NadekoBot/Modules/Gambling/Gambling.cs +++ b/src/NadekoBot/Modules/Gambling/Gambling.cs @@ -33,7 +33,7 @@ namespace NadekoBot.Modules.Gambling } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Raffle(IUserMessage umsg, [Remainder] IRole role = null) { @@ -47,7 +47,7 @@ namespace NadekoBot.Modules.Gambling await channel.SendMessageAsync($"**Raffled user:** {usr.Username} (id: {usr.Id})").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] public async Task Cash(IUserMessage umsg, [Remainder] IUser user = null) { var channel = umsg.Channel; @@ -64,7 +64,7 @@ namespace NadekoBot.Modules.Gambling await channel.SendMessageAsync($"{user.Username} has {amount} {config.CurrencySign}").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Give(IUserMessage umsg, long amount, [Remainder] IGuildUser receiver) { @@ -81,13 +81,13 @@ namespace NadekoBot.Modules.Gambling await channel.SendMessageAsync($"{umsg.Author.Mention} successfully sent {amount} {Gambling.CurrencyPluralName}s to {receiver.Mention}!").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public Task Award(IUserMessage umsg, long amount, [Remainder] IGuildUser usr) => Award(umsg, amount, usr.Id); - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task Award(IUserMessage umsg, long amount, [Remainder] ulong usrId) @@ -102,7 +102,7 @@ namespace NadekoBot.Modules.Gambling await channel.SendMessageAsync($"{umsg.Author.Mention} successfully awarded {amount} {Gambling.CurrencyName}s to <@{usrId}>!").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task Take(IUserMessage umsg, long amount, [Remainder] IGuildUser user) @@ -117,7 +117,7 @@ namespace NadekoBot.Modules.Gambling } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task Take(IUserMessage umsg, long amount, [Remainder] ulong usrId) @@ -131,7 +131,7 @@ namespace NadekoBot.Modules.Gambling await channel.SendMessageAsync($"{umsg.Author.Mention} successfully took {amount} {Gambling.CurrencyName}s from <@{usrId}>!").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task BetRoll(IUserMessage umsg, long amount) { @@ -181,7 +181,7 @@ namespace NadekoBot.Modules.Gambling await channel.SendMessageAsync(str).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Leaderboard(IUserMessage umsg) { diff --git a/src/NadekoBot/Modules/Games/Commands/LeetCommands.cs b/src/NadekoBot/Modules/Games/Commands/LeetCommands.cs index 4f0f85af..1a7657b4 100644 --- a/src/NadekoBot/Modules/Games/Commands/LeetCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/LeetCommands.cs @@ -12,7 +12,7 @@ namespace NadekoBot.Modules.Games { public partial class Games { - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Leet(IUserMessage umsg, int level, [Remainder] string text = null) { diff --git a/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs b/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs index d45382aa..1a2da238 100644 --- a/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs @@ -98,7 +98,7 @@ namespace NadekoBot.Modules.Games }); return Task.CompletedTask; } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Pick(IUserMessage imsg) { @@ -131,7 +131,7 @@ namespace NadekoBot.Modules.Games }); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Plant(IUserMessage imsg) { @@ -162,7 +162,7 @@ namespace NadekoBot.Modules.Games plantedFlowers.AddOrUpdate(channel.Id, new List() { msg }, (id, old) => { old.Add(msg); return old; }); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageMessages)] public async Task Gencurrency(IUserMessage imsg) diff --git a/src/NadekoBot/Modules/Games/Commands/PollCommands.cs b/src/NadekoBot/Modules/Games/Commands/PollCommands.cs index 0f2c31e5..c8318cc2 100644 --- a/src/NadekoBot/Modules/Games/Commands/PollCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/PollCommands.cs @@ -14,7 +14,7 @@ namespace NadekoBot.Modules.Games { public static ConcurrentDictionary ActivePolls = new ConcurrentDictionary(); - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Poll(IUserMessage umsg, [Remainder] string arg = null) { @@ -35,7 +35,7 @@ namespace NadekoBot.Modules.Games } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Pollend(IUserMessage umsg) { diff --git a/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs b/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs index 6e564b3c..0545386c 100644 --- a/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs @@ -139,7 +139,7 @@ namespace NadekoBot.Modules.Games RunningContests = new ConcurrentDictionary(); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task TypeStart(IUserMessage msg) { @@ -160,7 +160,7 @@ namespace NadekoBot.Modules.Games } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task TypeStop(IUserMessage imsg) { @@ -175,7 +175,7 @@ namespace NadekoBot.Modules.Games } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task Typeadd(IUserMessage imsg, [Remainder] string text) diff --git a/src/NadekoBot/Modules/Games/Commands/TriviaCommands.cs b/src/NadekoBot/Modules/Games/Commands/TriviaCommands.cs index 8556ac00..56fd3fc1 100644 --- a/src/NadekoBot/Modules/Games/Commands/TriviaCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/TriviaCommands.cs @@ -17,7 +17,7 @@ namespace NadekoBot.Modules.Games { public static ConcurrentDictionary RunningTrivias = new ConcurrentDictionary(); - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Trivia(IUserMessage umsg, params string[] args) { @@ -44,7 +44,7 @@ namespace NadekoBot.Modules.Games await channel.SendMessageAsync("Trivia game is already running on this server.\n" + trivia.CurrentQuestion).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Tl(IUserMessage umsg) { @@ -57,7 +57,7 @@ namespace NadekoBot.Modules.Games await channel.SendMessageAsync("No trivia is running on this server.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Tq(IUserMessage umsg) { diff --git a/src/NadekoBot/Modules/Games/Games.cs b/src/NadekoBot/Modules/Games/Games.cs index 0dbb4d58..81a3532d 100644 --- a/src/NadekoBot/Modules/Games/Games.cs +++ b/src/NadekoBot/Modules/Games/Games.cs @@ -27,7 +27,7 @@ namespace NadekoBot.Modules.Games { } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Choose(IUserMessage umsg, [Remainder] string list = null) { @@ -41,7 +41,7 @@ namespace NadekoBot.Modules.Games await channel.SendMessageAsync(listArr[rng.Next(0, listArr.Length)]).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task _8Ball(IUserMessage umsg, [Remainder] string question = null) { @@ -54,7 +54,7 @@ namespace NadekoBot.Modules.Games 🎱 `8Ball Answers` __**{_8BallResponses.Shuffle().FirstOrDefault()}**__").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Rps(IUserMessage umsg, string input) { @@ -104,7 +104,7 @@ namespace NadekoBot.Modules.Games await channel.SendMessageAsync(msg).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Linux(IUserMessage umsg, string guhnoo, string loonix) { diff --git a/src/NadekoBot/Modules/Help/Help.cs b/src/NadekoBot/Modules/Help/Help.cs index f4c2dbcc..5787d483 100644 --- a/src/NadekoBot/Modules/Help/Help.cs +++ b/src/NadekoBot/Modules/Help/Help.cs @@ -38,7 +38,7 @@ Nadeko Support Server: https://discord.gg/0ehQwTK2RBjAxzEY"; { } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] public async Task Modules(IUserMessage umsg) { @@ -46,7 +46,7 @@ Nadeko Support Server: https://discord.gg/0ehQwTK2RBjAxzEY"; .ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] public async Task Commands(IUserMessage umsg, [Remainder] string module = null) { var channel = umsg.Channel; @@ -76,7 +76,7 @@ Nadeko Support Server: https://discord.gg/0ehQwTK2RBjAxzEY"; await channel.SendMessageAsync($"`You can type \"{NadekoBot.ModulePrefixes[typeof(Help).Name]}h CommandName\" to see the help about that specific command.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] public async Task H(IUserMessage umsg, [Remainder] string comToFind = null) { var channel = umsg.Channel; @@ -100,11 +100,11 @@ Nadeko Support Server: https://discord.gg/0ehQwTK2RBjAxzEY"; if (alias != null) str += $" / `{ alias }`"; if (com != null) - await channel.SendMessageAsync(str + $@"{Environment.NewLine}**Desc:** {com.Remarks} -**Usage:** {com.Summary}").ConfigureAwait(false); + await channel.SendMessageAsync(str + $@"{Environment.NewLine}**Desc:** {com.Summary} +**Usage:** {com.Remarks}").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public Task Hgit(IUserMessage umsg) @@ -132,7 +132,7 @@ Nadeko Support Server: https://discord.gg/0ehQwTK2RBjAxzEY"; return Task.CompletedTask; } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Guide(IUserMessage umsg) { @@ -143,7 +143,7 @@ Nadeko Support Server: https://discord.gg/0ehQwTK2RBjAxzEY"; **Hosting Guides and docs can be found here**: ").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Donate(IUserMessage umsg) { diff --git a/src/NadekoBot/Modules/Music/Music.cs b/src/NadekoBot/Modules/Music/Music.cs index 926bc8e3..a3f94b79 100644 --- a/src/NadekoBot/Modules/Music/Music.cs +++ b/src/NadekoBot/Modules/Music/Music.cs @@ -36,7 +36,7 @@ namespace NadekoBot.Modules.Music _google = google; } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public Task Next(IUserMessage umsg) { @@ -49,7 +49,7 @@ namespace NadekoBot.Modules.Music return Task.CompletedTask; } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public Task Stop(IUserMessage umsg) { @@ -65,7 +65,7 @@ namespace NadekoBot.Modules.Music return Task.CompletedTask; } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public Task Destroy(IUserMessage umsg) { @@ -78,7 +78,7 @@ namespace NadekoBot.Modules.Music return Task.CompletedTask; } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Pause(IUserMessage umsg) { @@ -95,7 +95,7 @@ namespace NadekoBot.Modules.Music await channel.SendMessageAsync("🎵`Music Player unpaused.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Queue(IUserMessage umsg, [Remainder] string query) { @@ -109,7 +109,7 @@ namespace NadekoBot.Modules.Music } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task SoundCloudQueue(IUserMessage umsg, [Remainder] string query) { @@ -123,7 +123,7 @@ namespace NadekoBot.Modules.Music } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task ListQueue(IUserMessage umsg, int page = 1) { @@ -156,7 +156,7 @@ namespace NadekoBot.Modules.Music await channel.SendMessageAsync(toSend + string.Join("\n", musicPlayer.Playlist.Skip(startAt).Take(15).Select(v => $"`{number++}.` {v.PrettyName}"))).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task NowPlaying(IUserMessage umsg) { @@ -171,7 +171,7 @@ namespace NadekoBot.Modules.Music $"{currentSong.PrettyCurrentTime()}").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Volume(IUserMessage umsg, int val) { @@ -187,7 +187,7 @@ namespace NadekoBot.Modules.Music await channel.SendMessageAsync($"🎵 `Volume set to {volume}%`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Defvol(IUserMessage umsg, [Remainder] int val) { @@ -206,7 +206,7 @@ namespace NadekoBot.Modules.Music await channel.SendMessageAsync($"🎵 `Default volume set to {val}%`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public Task Mute(IUserMessage umsg) { @@ -220,7 +220,7 @@ namespace NadekoBot.Modules.Music return Task.CompletedTask; } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public Task Max(IUserMessage umsg) { @@ -234,7 +234,7 @@ namespace NadekoBot.Modules.Music return Task.CompletedTask; } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Shuffle(IUserMessage umsg) { @@ -254,7 +254,7 @@ namespace NadekoBot.Modules.Music await channel.SendMessageAsync("🎵 `Songs shuffled.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Playlist(IUserMessage umsg, [Remainder] string playlist) { @@ -296,7 +296,7 @@ namespace NadekoBot.Modules.Music await msg.ModifyAsync(m => m.Content = "🎵 `Playlist queue complete.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task SoundCloudPl(IUserMessage umsg, [Remainder] string pl) { @@ -333,7 +333,7 @@ namespace NadekoBot.Modules.Music } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task LocalPl(IUserMessage umsg, [Remainder] string directory) @@ -363,7 +363,7 @@ namespace NadekoBot.Modules.Music catch { } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Radio(IUserMessage umsg, string radio_link) { @@ -381,7 +381,7 @@ namespace NadekoBot.Modules.Music } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task Local(IUserMessage umsg, [Remainder] string path) @@ -394,7 +394,7 @@ namespace NadekoBot.Modules.Music } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Move(IUserMessage umsg) { @@ -406,7 +406,7 @@ namespace NadekoBot.Modules.Music await musicPlayer.MoveToVoiceChannel(voiceChannel); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Remove(IUserMessage umsg, int num) { @@ -426,7 +426,7 @@ namespace NadekoBot.Modules.Music await channel.SendMessageAsync($"🎵**Track {song.PrettyName} at position `#{num}` has been removed.**").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Remove(IUserMessage umsg, string all) { @@ -441,7 +441,7 @@ namespace NadekoBot.Modules.Music return; } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task MoveSong(IUserMessage umsg, [Remainder] string fromto) { @@ -477,7 +477,7 @@ namespace NadekoBot.Modules.Music } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task SetMaxQueue(IUserMessage umsg, uint size) { @@ -491,7 +491,7 @@ namespace NadekoBot.Modules.Music await channel.SendMessageAsync($"🎵 `Max queue set to {(size == 0 ? ("unlimited") : size + " tracks")}`"); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task ReptCurSong(IUserMessage umsg) { @@ -509,7 +509,7 @@ namespace NadekoBot.Modules.Music .ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task RepeatPl(IUserMessage umsg) { @@ -521,7 +521,7 @@ namespace NadekoBot.Modules.Music await channel.SendMessageAsync($"🎵🔁`Repeat playlist {(currentValue ? "enabled" : "disabled")}`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Save(IUserMessage umsg, [Remainder] string name) { @@ -557,7 +557,7 @@ namespace NadekoBot.Modules.Music await channel.SendMessageAsync(($"🎵 `Saved playlist as {name}.` `Id: {playlist.Id}`")).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Load(IUserMessage umsg, [Remainder] int id) { @@ -589,7 +589,7 @@ namespace NadekoBot.Modules.Music await msg.ModifyAsync(m => m.Content = $"`Done loading playlist {mpl.Name}.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Playlists(IUserMessage umsg, [Remainder] int num = 1) { @@ -611,7 +611,7 @@ namespace NadekoBot.Modules.Music } //todo only author or owner - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task DeletePlaylist(IUserMessage umsg, [Remainder] int id) { @@ -649,7 +649,7 @@ namespace NadekoBot.Modules.Music } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Goto(IUserMessage umsg, int time) { @@ -686,7 +686,7 @@ namespace NadekoBot.Modules.Music await channel.SendMessageAsync($"`Skipped to {minutes}:{seconds}`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task GetLink(IUserMessage umsg, int index = 0) { @@ -721,7 +721,7 @@ namespace NadekoBot.Modules.Music } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Autoplay(IUserMessage umsg) { diff --git a/src/NadekoBot/Modules/NSFW/NSFW.cs b/src/NadekoBot/Modules/NSFW/NSFW.cs index f64686d9..52a38ce7 100644 --- a/src/NadekoBot/Modules/NSFW/NSFW.cs +++ b/src/NadekoBot/Modules/NSFW/NSFW.cs @@ -22,7 +22,7 @@ namespace NadekoBot.Modules.NSFW { } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Hentai(IUserMessage umsg, [Remainder] string tag = null) { @@ -41,7 +41,7 @@ namespace NadekoBot.Modules.NSFW await channel.SendMessageAsync(String.Join("\n\n", links)).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Danbooru(IUserMessage umsg, [Remainder] string tag = null) { @@ -55,7 +55,7 @@ namespace NadekoBot.Modules.NSFW await channel.SendMessageAsync(link).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Gelbooru(IUserMessage umsg, [Remainder] string tag = null) { @@ -69,7 +69,7 @@ namespace NadekoBot.Modules.NSFW await channel.SendMessageAsync(link).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Rule34(IUserMessage umsg, [Remainder] string tag = null) { @@ -83,7 +83,7 @@ namespace NadekoBot.Modules.NSFW await channel.SendMessageAsync(link).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task E621(IUserMessage umsg, [Remainder] string tag = null) { @@ -97,7 +97,7 @@ namespace NadekoBot.Modules.NSFW await channel.SendMessageAsync(link).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Cp(IUserMessage umsg) { @@ -106,7 +106,7 @@ namespace NadekoBot.Modules.NSFW await channel.SendMessageAsync("http://i.imgur.com/MZkY1md.jpg").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Boobs(IUserMessage umsg) { @@ -126,7 +126,7 @@ namespace NadekoBot.Modules.NSFW } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Butts(IUserMessage umsg) { diff --git a/src/NadekoBot/Modules/Permissions/Commands/BlacklistCommands.cs b/src/NadekoBot/Modules/Permissions/Commands/BlacklistCommands.cs index de442bff..843347e0 100644 --- a/src/NadekoBot/Modules/Permissions/Commands/BlacklistCommands.cs +++ b/src/NadekoBot/Modules/Permissions/Commands/BlacklistCommands.cs @@ -35,17 +35,17 @@ namespace NadekoBot.Modules.Permissions } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [OwnerOnly] public Task UserBlacklist(IUserMessage imsg, AddRemove action, ulong id) => Blacklist(imsg, action, id, BlacklistType.User); - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [OwnerOnly] public Task ChannelBlacklist(IUserMessage imsg, AddRemove action, ulong id) => Blacklist(imsg, action, id, BlacklistType.Channel); - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [OwnerOnly] public Task ServerBlacklist(IUserMessage imsg, AddRemove action, ulong id) => Blacklist(imsg, action, id, BlacklistType.Server); diff --git a/src/NadekoBot/Modules/Permissions/Commands/FilterCommands.cs b/src/NadekoBot/Modules/Permissions/Commands/FilterCommands.cs index f8cf9ae6..96a4ff3f 100644 --- a/src/NadekoBot/Modules/Permissions/Commands/FilterCommands.cs +++ b/src/NadekoBot/Modules/Permissions/Commands/FilterCommands.cs @@ -63,7 +63,7 @@ namespace NadekoBot.Modules.Permissions } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task SrvrFilterInv(IUserMessage imsg) { @@ -89,7 +89,7 @@ namespace NadekoBot.Modules.Permissions } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task ChnlFilterInv(IUserMessage imsg) { @@ -122,7 +122,7 @@ namespace NadekoBot.Modules.Permissions } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task SrvrFilterWords(IUserMessage imsg) { @@ -148,7 +148,7 @@ namespace NadekoBot.Modules.Permissions } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task ChnlFilterWords(IUserMessage imsg) { @@ -181,7 +181,7 @@ namespace NadekoBot.Modules.Permissions } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task FilterWord(IUserMessage imsg, [Remainder] string word) { @@ -221,7 +221,7 @@ namespace NadekoBot.Modules.Permissions } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task LstFilterWords(IUserMessage imsg) { diff --git a/src/NadekoBot/Modules/Permissions/Permissions.cs b/src/NadekoBot/Modules/Permissions/Permissions.cs index 485d7f46..0dfdbd5d 100644 --- a/src/NadekoBot/Modules/Permissions/Permissions.cs +++ b/src/NadekoBot/Modules/Permissions/Permissions.cs @@ -21,7 +21,7 @@ namespace NadekoBot.Modules.Permissions { } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Verbose(IUserMessage msg, PermissionAction action) { @@ -37,7 +37,7 @@ namespace NadekoBot.Modules.Permissions await channel.SendMessageAsync("I will " + (action.Value ? "now" : "no longer") + " show permission warnings.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task PermRole(IUserMessage msg, [Remainder] IRole role = null) { @@ -59,7 +59,7 @@ namespace NadekoBot.Modules.Permissions await channel.SendMessageAsync($"Users now require **{role.Name}** role in order to edit permissions.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task ListPerms(IUserMessage msg) { @@ -80,7 +80,7 @@ namespace NadekoBot.Modules.Permissions await channel.SendMessageAsync(toSend).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task RemovePerm(IUserMessage imsg, int index) { @@ -122,7 +122,7 @@ namespace NadekoBot.Modules.Permissions } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task MovePerm(IUserMessage imsg, int from, int to) { @@ -160,7 +160,7 @@ namespace NadekoBot.Modules.Permissions await channel.SendMessageAsync("`Invalid index(es) specified.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task SrvrCmd(IUserMessage imsg, Command command, PermissionAction action) { @@ -183,7 +183,7 @@ namespace NadekoBot.Modules.Permissions await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{command.Text}` command on this server.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task SrvrMdl(IUserMessage imsg, Module module, PermissionAction action) { @@ -206,7 +206,7 @@ namespace NadekoBot.Modules.Permissions await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{module.Name}` module on this server.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task UsrCmd(IUserMessage imsg, Command command, PermissionAction action, [Remainder] IGuildUser user) { @@ -229,7 +229,7 @@ namespace NadekoBot.Modules.Permissions await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{command.Text}` command for `{user}` user.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task UsrMdl(IUserMessage imsg, Module module, PermissionAction action, [Remainder] IGuildUser user) { @@ -252,7 +252,7 @@ namespace NadekoBot.Modules.Permissions await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{module.Name}` module for `{user}` user.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task RoleCmd(IUserMessage imsg, Command command, PermissionAction action, [Remainder] IRole role) { @@ -275,7 +275,7 @@ namespace NadekoBot.Modules.Permissions await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{command.Text}` command for `{role}` role.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task RoleMdl(IUserMessage imsg, Module module, PermissionAction action, [Remainder] IRole role) { @@ -298,7 +298,7 @@ namespace NadekoBot.Modules.Permissions await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{module.Name}` module for `{role}` role.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task ChnlCmd(IUserMessage imsg, Command command, PermissionAction action, [Remainder] ITextChannel chnl) { @@ -326,7 +326,7 @@ namespace NadekoBot.Modules.Permissions await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{command.Text}` command for `{chnl}` channel.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task ChnlMdl(IUserMessage imsg, Module module, PermissionAction action, [Remainder] ITextChannel chnl) { @@ -349,7 +349,7 @@ namespace NadekoBot.Modules.Permissions await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{module.Name}` module for `{chnl}` channel.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task AllChnlMdls(IUserMessage imsg, PermissionAction action, [Remainder] ITextChannel chnl) { @@ -372,7 +372,7 @@ namespace NadekoBot.Modules.Permissions await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL MODULES` for `{chnl}` channel.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task AllRoleMdls(IUserMessage imsg, PermissionAction action, [Remainder] IRole role) { @@ -395,7 +395,7 @@ namespace NadekoBot.Modules.Permissions await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL MODULES` for `{role}` role.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task AllUsrMdls(IUserMessage imsg, PermissionAction action, [Remainder] IUser user) { @@ -418,7 +418,7 @@ namespace NadekoBot.Modules.Permissions await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL MODULES` for `{user}` user.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task AllSrvrMdls(IUserMessage imsg, PermissionAction action, [Remainder] IUser user) { diff --git a/src/NadekoBot/Modules/Pokemon/Pokemon.cs b/src/NadekoBot/Modules/Pokemon/Pokemon.cs index 1633252e..3504154a 100644 --- a/src/NadekoBot/Modules/Pokemon/Pokemon.cs +++ b/src/NadekoBot/Modules/Pokemon/Pokemon.cs @@ -15,7 +15,7 @@ namespace NadekoBot.Modules.Games } //todo Dragon should PR this in - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Poke(IUserMessage umsg) { diff --git a/src/NadekoBot/Modules/Searches/Commands/AnimeSearchCommands.cs b/src/NadekoBot/Modules/Searches/Commands/AnimeSearchCommands.cs index 15803201..27320f0d 100644 --- a/src/NadekoBot/Modules/Searches/Commands/AnimeSearchCommands.cs +++ b/src/NadekoBot/Modules/Searches/Commands/AnimeSearchCommands.cs @@ -29,7 +29,7 @@ namespace NadekoBot.Modules.Searches _log = LogManager.GetCurrentClassLogger(); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Anime(IUserMessage umsg, [Remainder] string query) { @@ -43,7 +43,7 @@ namespace NadekoBot.Modules.Searches await channel.SendMessageAsync(result.ToString() ?? "`No anime found.`").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Manga(IUserMessage umsg, [Remainder] string query) { diff --git a/src/NadekoBot/Modules/Searches/Commands/CalcCommand.cs b/src/NadekoBot/Modules/Searches/Commands/CalcCommand.cs index b1faf848..f9edac0c 100644 --- a/src/NadekoBot/Modules/Searches/Commands/CalcCommand.cs +++ b/src/NadekoBot/Modules/Searches/Commands/CalcCommand.cs @@ -14,7 +14,7 @@ namespace NadekoBot.Modules.Searches [Group] public partial class Searches { - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public static async Task Calculate(IUserMessage msg, [Remainder] string expression) { @@ -41,7 +41,7 @@ namespace NadekoBot.Modules.Searches } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task CalcOps(IUserMessage msg) { diff --git a/src/NadekoBot/Modules/Searches/Commands/JokeCommands.cs b/src/NadekoBot/Modules/Searches/Commands/JokeCommands.cs index 1df3fcea..b291aadd 100644 --- a/src/NadekoBot/Modules/Searches/Commands/JokeCommands.cs +++ b/src/NadekoBot/Modules/Searches/Commands/JokeCommands.cs @@ -42,7 +42,7 @@ namespace NadekoBot.Modules.Searches _log.Warn("data/magicitems.json is missing. Magic items are not loaded."); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Yomama(IUserMessage umsg) { @@ -54,7 +54,7 @@ namespace NadekoBot.Modules.Searches } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Randjoke(IUserMessage umsg) { @@ -66,7 +66,7 @@ namespace NadekoBot.Modules.Searches } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task ChuckNorris(IUserMessage umsg) { @@ -78,7 +78,7 @@ namespace NadekoBot.Modules.Searches } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task WowJoke(IUserMessage umsg) { @@ -90,7 +90,7 @@ namespace NadekoBot.Modules.Searches await channel.SendMessageAsync(wowJokes[new NadekoRandom().Next(0, wowJokes.Count)].ToString()); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task MagicItem(IUserMessage umsg) { diff --git a/src/NadekoBot/Modules/Searches/Commands/LoLCommands.cs b/src/NadekoBot/Modules/Searches/Commands/LoLCommands.cs index d667b270..2108878f 100644 --- a/src/NadekoBot/Modules/Searches/Commands/LoLCommands.cs +++ b/src/NadekoBot/Modules/Searches/Commands/LoLCommands.cs @@ -32,7 +32,7 @@ namespace NadekoBot.Modules.Searches "Doesn't matter what you ban really. Enemy will ban your main and you will lose." }; - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Lolban(IUserMessage umsg) { diff --git a/src/NadekoBot/Modules/Searches/Commands/MemegenCommands.cs b/src/NadekoBot/Modules/Searches/Commands/MemegenCommands.cs index ffccb71a..d35c37d2 100644 --- a/src/NadekoBot/Modules/Searches/Commands/MemegenCommands.cs +++ b/src/NadekoBot/Modules/Searches/Commands/MemegenCommands.cs @@ -15,7 +15,7 @@ namespace NadekoBot.Modules.Searches { public partial class Searches { - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Memelist(IUserMessage umsg) { @@ -29,7 +29,7 @@ namespace NadekoBot.Modules.Searches } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Memegen(IUserMessage umsg, string meme, string topText, string botText) { diff --git a/src/NadekoBot/Modules/Searches/Commands/OsuCommands.cs b/src/NadekoBot/Modules/Searches/Commands/OsuCommands.cs index 81afbe0e..d9bcbd39 100644 --- a/src/NadekoBot/Modules/Searches/Commands/OsuCommands.cs +++ b/src/NadekoBot/Modules/Searches/Commands/OsuCommands.cs @@ -25,7 +25,7 @@ namespace NadekoBot.Modules.Searches { _log = LogManager.GetCurrentClassLogger(); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Osu(IUserMessage umsg, string usr, [Remainder] string mode = null) { @@ -58,7 +58,7 @@ namespace NadekoBot.Modules.Searches } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Osub(IUserMessage umsg, [Remainder] string map) { @@ -95,7 +95,7 @@ namespace NadekoBot.Modules.Searches } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Osu5(IUserMessage umsg, string user, [Remainder] string mode) { diff --git a/src/NadekoBot/Modules/Searches/Commands/PokemonSearchCommands.cs b/src/NadekoBot/Modules/Searches/Commands/PokemonSearchCommands.cs index 55885f7c..efb7ee93 100644 --- a/src/NadekoBot/Modules/Searches/Commands/PokemonSearchCommands.cs +++ b/src/NadekoBot/Modules/Searches/Commands/PokemonSearchCommands.cs @@ -38,7 +38,7 @@ namespace NadekoBot.Modules.Searches _log.Warn(PokemonAbilitiesFile + " is missing. Pokemon abilities not loaded."); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Pokemon(IUserMessage umsg, [Remainder] string pokemon = null) { @@ -59,7 +59,7 @@ namespace NadekoBot.Modules.Searches await channel.SendMessageAsync("`No pokemon found.`"); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task PokemonAbility(IUserMessage umsg, [Remainder] string ability = null) { diff --git a/src/NadekoBot/Modules/Searches/Commands/StreamNotificationCommands.cs b/src/NadekoBot/Modules/Searches/Commands/StreamNotificationCommands.cs index 7b250624..3aa6b5a4 100644 --- a/src/NadekoBot/Modules/Searches/Commands/StreamNotificationCommands.cs +++ b/src/NadekoBot/Modules/Searches/Commands/StreamNotificationCommands.cs @@ -132,28 +132,28 @@ namespace NadekoBot.Modules.Searches return new Tuple(false, "0"); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageMessages)] public async Task Hitbox(IUserMessage msg, [Remainder] string username) => await TrackStream((ITextChannel)msg.Channel, username, FollowedStream.FollowedStreamType.Hitbox) .ConfigureAwait(false); - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageMessages)] public async Task Twitch(IUserMessage msg, [Remainder] string username) => await TrackStream((ITextChannel)msg.Channel, username, FollowedStream.FollowedStreamType.Twitch) .ConfigureAwait(false); - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [RequirePermission(GuildPermission.ManageMessages)] public async Task Beam(IUserMessage msg, [Remainder] string username) => await TrackStream((ITextChannel)msg.Channel, username, FollowedStream.FollowedStreamType.Beam) .ConfigureAwait(false); - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task ListStreams(IUserMessage imsg) { @@ -179,7 +179,7 @@ namespace NadekoBot.Modules.Searches await channel.SendMessageAsync($"You are following **{streams.Count()}** streams on this server.\n\n" + text).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task RemoveStream(IUserMessage msg, [Remainder] string username) { @@ -207,7 +207,7 @@ namespace NadekoBot.Modules.Searches await channel.SendMessageAsync($":ok: Removed `{toRemove.Username}`'s stream ({toRemove.Type}) from notifications.").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task CheckStream(IUserMessage imsg, FollowedStream.FollowedStreamType platform, [Remainder] string username) { diff --git a/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs b/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs index 6c3f28b1..844ee5d0 100644 --- a/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs +++ b/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs @@ -94,7 +94,7 @@ namespace NadekoBot.Modules.Searches } public List Units { get; set; } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task ConvertList(IUserMessage msg) { @@ -108,7 +108,7 @@ namespace NadekoBot.Modules.Searches } await msg.ReplyLong(sb.ToString(), breakOn: new[] { "```xl\n", "\n" }); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] public async Task Convert(IUserMessage msg, string origin, string target, decimal value) { var originUnit = Units.Find(x => x.Triggers.Select(y => y.ToLowerInvariant()).Contains(origin.ToLowerInvariant())); diff --git a/src/NadekoBot/Modules/Searches/Searches.cs b/src/NadekoBot/Modules/Searches/Searches.cs index 06ab3933..47aeb05c 100644 --- a/src/NadekoBot/Modules/Searches/Searches.cs +++ b/src/NadekoBot/Modules/Searches/Searches.cs @@ -30,7 +30,7 @@ namespace NadekoBot.Modules.Searches _google = youtube; } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Weather(IUserMessage umsg, string city, string country) { @@ -51,7 +51,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 🌄 **Sunrise:** {obj["sunrise"]} 🌇 **Sunset:** {obj["sunset"]}").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Youtube(IUserMessage umsg, [Remainder] string query = null) { @@ -66,7 +66,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 await channel.SendMessageAsync(result).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Imdb(IUserMessage umsg, [Remainder] string query = null) { @@ -90,7 +90,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 await channel.SendMessageAsync(result.ToString()).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task RandomCat(IUserMessage umsg) { @@ -103,7 +103,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task RandomDog(IUserMessage umsg) { @@ -114,7 +114,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task I(IUserMessage umsg, [Remainder] string query = null) { @@ -144,7 +144,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Ir(IUserMessage umsg, [Remainder] string query = null) { @@ -176,7 +176,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Lmgtfy(IUserMessage umsg, [Remainder] string ffs = null) { @@ -190,7 +190,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 .ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Google(IUserMessage umsg, [Remainder] string terms = null) { @@ -204,7 +204,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 .ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Hearthstone(IUserMessage umsg, [Remainder] string name = null) { @@ -256,7 +256,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Ud(IUserMessage umsg, [Remainder] string query = null) { @@ -290,7 +290,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Hashtag(IUserMessage umsg, [Remainder] string query = null) { @@ -325,7 +325,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Catfact(IUserMessage umsg) { @@ -339,7 +339,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Revav(IUserMessage umsg, [Remainder] string arg = null) { @@ -356,7 +356,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 await channel.SendMessageAsync($"https://images.google.com/searchbyimage?image_url={usr.AvatarUrl}").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Revimg(IUserMessage umsg, [Remainder] string imageLink = null) { @@ -368,7 +368,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 await channel.SendMessageAsync($"https://images.google.com/searchbyimage?image_url={imageLink}").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Safebooru(IUserMessage umsg, [Remainder] string tag = null) { @@ -382,7 +382,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 await channel.SendMessageAsync(link).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Wiki(IUserMessage umsg, [Remainder] string query = null) { @@ -402,7 +402,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Clr(IUserMessage umsg, [Remainder] string color = null) { @@ -422,7 +422,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 await channel.SendFileAsync(img.ToStream(), $"{color}.png"); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Videocall(IUserMessage umsg, [Remainder] string arg = null) { @@ -445,7 +445,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Avatar(IUserMessage umsg, [Remainder] string mention = null) { diff --git a/src/NadekoBot/Modules/Translator/Translator.cs b/src/NadekoBot/Modules/Translator/Translator.cs index bc0d6c8d..d13cdb54 100644 --- a/src/NadekoBot/Modules/Translator/Translator.cs +++ b/src/NadekoBot/Modules/Translator/Translator.cs @@ -16,7 +16,7 @@ namespace NadekoBot.Modules.Translator { } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Translate(IUserMessage umsg, string langs, [Remainder] string text = null) { @@ -44,7 +44,7 @@ namespace NadekoBot.Modules.Translator } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Translangs(IUserMessage umsg) { diff --git a/src/NadekoBot/Modules/Utility/Commands/InfoCommands.cs b/src/NadekoBot/Modules/Utility/Commands/InfoCommands.cs index 1e4683e6..f80fc294 100644 --- a/src/NadekoBot/Modules/Utility/Commands/InfoCommands.cs +++ b/src/NadekoBot/Modules/Utility/Commands/InfoCommands.cs @@ -12,7 +12,7 @@ namespace NadekoBot.Modules.Utility { partial class Utility : DiscordModule { - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task ServerInfo(IUserMessage msg, string guild = null) { @@ -47,7 +47,7 @@ namespace NadekoBot.Modules.Utility await msg.Reply(sb.ToString()).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task ChannelInfo(IUserMessage msg, ITextChannel channel = null) { @@ -63,7 +63,7 @@ namespace NadekoBot.Modules.Utility await msg.Reply(toReturn).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task UserInfo(IUserMessage msg, IGuildUser usr = null) { diff --git a/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs b/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs index 83f48972..dd4b3353 100644 --- a/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs +++ b/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs @@ -14,7 +14,7 @@ namespace NadekoBot.Modules.Utility { public partial class Utility { - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task ShowQuote(IUserMessage umsg, [Remainder] string keyword) { @@ -37,7 +37,7 @@ namespace NadekoBot.Modules.Utility await channel.SendMessageAsync("📣 " + quote.Text); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task AddQuote(IUserMessage umsg, string keyword, [Remainder] string text) { @@ -63,7 +63,7 @@ namespace NadekoBot.Modules.Utility } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task DeleteQuote(IUserMessage umsg, [Remainder] string keyword) { @@ -90,7 +90,7 @@ namespace NadekoBot.Modules.Utility await channel.SendMessageAsync("`Deleted a random quote.`"); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task DelAllQuotes(IUserMessage umsg, string keyword) { diff --git a/src/NadekoBot/Modules/Utility/Commands/Remind.cs b/src/NadekoBot/Modules/Utility/Commands/Remind.cs index 57759952..e01c8a78 100644 --- a/src/NadekoBot/Modules/Utility/Commands/Remind.cs +++ b/src/NadekoBot/Modules/Utility/Commands/Remind.cs @@ -92,7 +92,7 @@ namespace NadekoBot.Modules.Utility } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Remind(IUserMessage umsg, string meorchannel, string timeStr, [Remainder] string message) { @@ -184,7 +184,7 @@ namespace NadekoBot.Modules.Utility await StartReminder(rem); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] public async Task RemindTemplate(IUserMessage umsg, [Remainder] string arg) diff --git a/src/NadekoBot/Modules/Utility/Utility.cs b/src/NadekoBot/Modules/Utility/Utility.cs index 56589a75..1a009a2c 100644 --- a/src/NadekoBot/Modules/Utility/Utility.cs +++ b/src/NadekoBot/Modules/Utility/Utility.cs @@ -23,7 +23,7 @@ namespace NadekoBot.Modules.Utility } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task WhosPlaying(IUserMessage umsg, [Remainder] string game = null) { @@ -43,7 +43,7 @@ namespace NadekoBot.Modules.Utility await channel.SendMessageAsync("```xl\n" + string.Join("\n", arr.GroupBy(item => (i++) / 3).Select(ig => string.Concat(ig.Select(el => $"• {el,-35}")))) + "\n```").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task InRole(IUserMessage umsg, [Remainder] string roles = null) { @@ -76,7 +76,7 @@ namespace NadekoBot.Modules.Utility await channel.SendMessageAsync(send).ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task CheckMyPerms(IUserMessage msg) { @@ -93,7 +93,7 @@ namespace NadekoBot.Modules.Utility await msg.Reply(builder.ToString()); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task UserId(IUserMessage msg, IGuildUser target = null) { @@ -101,20 +101,20 @@ namespace NadekoBot.Modules.Utility await msg.Reply($"Id of the user { usr.Username } is { usr.Id }").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] public async Task ChannelId(IUserMessage msg) { await msg.Reply($"This Channel's ID is {msg.Channel.Id}").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task ServerId(IUserMessage msg) { await msg.Reply($"This server's ID is {((ITextChannel)msg.Channel).Guild.Id}").ConfigureAwait(false); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Roles(IUserMessage msg, IGuildUser target = null) { @@ -130,7 +130,7 @@ namespace NadekoBot.Modules.Utility } } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task ChannelTopic(IUserMessage umsg) { @@ -143,7 +143,7 @@ namespace NadekoBot.Modules.Utility await channel.SendMessageAsync("`Topic:` " + topic); } - [LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Stats(IUserMessage umsg) { diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index eda33425..fd73691b 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -117,2524 +117,2515 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + h help Either shows a help for a single command, or PMs you help link if no arguments are specified. - + `-h !m q` or just `-h` - + hgit - Generates the commandlist.md file. **Bot Owner Only!** + Generates the commandlist.md file. - + `-hgit` - + donate Instructions for helping the project! - + `-donate` or `~donate` - + modules mdls List all bot modules. - + `-modules` or `.modules` - + commands cmds List all of the bot's commands from a certain module. - + `-commands` or `.commands` - + greetdel - Toggles automatic deletion of greet messages. **Needs Manage Server Permissions.** + Toggles automatic deletion of greet messages. - + `.greetdel` - + greet - Toggles anouncements on the current channel when someone joins the server. **Needs Manage Server Permissions.** + Toggles anouncements on the current channel when someone joins the server. - + `.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. **Needs Manage Server Permissions.** + 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. - + `.greetmsg Welcome, %user%.` - + bye Toggles anouncements on the current channel when someone leaves the server. - + `.bye` - + byemsg - Sets a new leave announcement message. Type %user% if you want to mention the new member. Using it with no message will show the current bye message. **Needs Manage Server Permissions.** + Sets a new leave announcement message. Type %user% if you want to mention the new member. Using it with no message will show the current bye message. - + `.byemsg %user% has left.` - + byedel - Toggles automatic deletion of bye messages. **Needs Manage Server Permissions.** + Toggles automatic deletion of bye messages. - + `.byedel` - + greetdm - Toggles whether the greet messages will be sent in a DM (This is separate from greet - you can have both, any or neither enabled). **Needs Manage Server Permissions.** + Toggles whether the greet messages will be sent in a DM (This is separate from greet - you can have both, any or neither enabled). - + `.greetdm` - + spmom - Toggles whether mentions of other offline users on your server will send a pm to them. **Needs Manage Server Permissions.** + Toggles whether mentions of other offline users on your server will send a pm to them. - + `.spmom` - + logserver Logs server activity in this channel. - + `.logserver` - + logignore - Toggles whether the .logserver command ignores this channel. Useful if you have hidden admin channel and public log channel. **Bot Owner Only!** + Toggles whether the .logserver command ignores this channel. Useful if you have hidden admin channel and public log channel. - + `.logignore` - + userpresence - Starts logging to this channel when someone from the server goes online/offline/idle. **Needs Manage Server Permissions.** + Starts logging to this channel when someone from the server goes online/offline/idle. - + `.userpresence` - + voicepresence - Toggles logging to this channel whenever someone joins or leaves a voice channel you are in right now. **Needs Manage Server Permissions.** + Toggles logging to this channel whenever someone joins or leaves a voice channel you are in right now. - + `.voicerpresence` - + repeatinvoke repinv - Immediately shows the repeat message and restarts the timer. **Needs Manage Messages Permissions.** + Immediately shows the repeat message and restarts the timer. - + `.repinv` - + repeat - Repeat a message every X minutes. If no parameters are specified, repeat is disabled. **Needs Manage Messages Permissions.** + Repeat a message every X minutes. If no parameters are specified, repeat is disabled. - + `.repeat 5 Hello there` - + rotateplaying ropl - Toggles rotation of playing status of the dynamic strings you specified earlier. **Bot Owner Only!** + Toggles rotation of playing status of the dynamic strings you specified earlier. - + `.ropl` - + addplaying adpl Adds a specified string to the list of playing strings to rotate. Supported placeholders: %servers%, %users%, %playing%, %queued% - + `.adpl` - + listplaying lipl - Lists all playing statuses with their corresponding number. **Bot Owner Only!** + Lists all playing statuses with their corresponding number. - + `.lipl` - + removeplaying rmlp repl - Removes a playing string on a given number. **Bot Owner Only!** + Removes a playing string on a given number. - + `.rmpl` - + slowmode - Toggles slow mode. When ON, users will be able to send only 1 message every 5 seconds. **Needs Manage Messages Permissions.** + Toggles slow mode. When ON, users will be able to send only 1 message every 5 seconds. - + `.slowmode` - + cleanvplust cv+t Deletes all text channels ending in `-voice` for which voicechannels are not found. **Use at your own risk. Needs Manage Roles and Manage Channels Permissions.** - + `.cleanv+t` - + voice+text v+t - Creates a text channel for each voice channel only users in that voice channel can see.If you are server owner, keep in mind you will see them all the time regardless. **Needs Manage Roles and Manage Channels Permissions.** + Creates a text channel for each voice channel only users in that voice channel can see.If you are server owner, keep in mind you will see them all the time regardless. - + `.voice+text` - + scsc - Starts an instance of cross server channel. You will get a token as a DM that other people will use to tune in to the same instance. **Bot Owner Only.** + Starts an instance of cross server channel. You will get a token as a DM that other people will use to tune in to the same instance. - + `.scsc` - + jcsc - Joins current channel to an instance of cross server channel using the token. **Needs Manage Server Permissions.** + Joins current channel to an instance of cross server channel using the token. - + `.jcsc` - + lcsc - Leaves Cross server channel instance from this channel. **Needs Manage Server Permissions.** + Leaves Cross server channel instance from this channel. - + `.lcsc` - + asar Adds a role, or list of roles separated by whitespace(use quotations for multiword roles) to the list of self-assignable roles. - + `.asar Gamer` - + rsar Removes a specified role from the list of self-assignable roles. - + `.rsar` - + lsar Lists all self-assignable roles. - + `.lsar` - + togglexclsar tesar toggle whether the self-assigned roles should be exclusive - + `.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 role to you that you choose. Role must be on a list of self-assignable roles. - + `.iamn Gamer` - + addcustreact acr Add a custom reaction. Guide here: <https://github.com/Kwoth/NadekoBot/wiki/Custom-Reactions> - + `.acr "hello" Hi there %user%` - + listcustreact lcr Lists custom reactions (paginated with 30 commands per page). Use 'all' instead of page number to get all custom reactions DM-ed to you. - + `.lcr 1` - + showcustreact scr Shows all possible responses from a single custom reaction. - + `.scr %mention% bb` - + editcustreact ecr - Edits a custom reaction, arguments are custom reactions name, index to change, and a (multiword) message **Bot Owner Only** + Edits a custom reaction, arguments are custom reactions name, index to change, and a (multiword) message. - + `.ecr "%mention% disguise" 2 Test 123` - + delcustreact dcr - Deletes a custom reaction with given name (and index). **Bot Owner Only.** + Deletes a custom reaction with given name (and index). - + `.dcr index` - + autoassignrole aar Automaticaly assigns a specified role to every user who joins the server. - + `.aar` to disable, `.aar Role Name` to enable - + leave - Makes Nadeko leave the server. Either name or id required. **Bot Owner Only!** + Makes Nadeko leave the server. Either name or id required. - + `.leave 123123123331` - + listincidents lin - List all UNREAD incidents and flags them as read. **Needs Manage Server Permissions.** + List all UNREAD incidents and flags them as read. - + `.lin` - + listallincidents lain - Sends you a file containing all incidents and flags them as read. **Needs Manage Server Permissions.** + Sends you a file containing all incidents and flags them as read. - + `.lain` - + delmsgoncmd Toggles the automatic deletion of user's successful command message to prevent chat flood. **Server Manager Only.** - + `.delmsgoncmd` - + restart - Restarts the bot. Might not work. **Bot Owner Only** + Restarts the bot. Might not work. - + `.restart` - + setrole sr - Sets a role for a given user. **Needs Manage Roles Permissions.** + Sets a role for a given user. - + `.sr @User Guest` - + removerole rr - Removes a role from a given user. **Needs Manage Roles Permissions.** + Removes a role from a given user. - + `.rr @User Admin` - + renamerole renr Renames a role. Roles you are renaming must be lower than bot's highest role. **Manage Roles Permissions.** - + `.renr "First role" SecondRole` - + removeallroles rar - Removes all roles from a mentioned user. **Needs Manage Roles Permissions.** + Removes all roles from a mentioned user. - + `.rar @User` - + createrole cr - Creates a role with a given name. **Needs Manage Roles Permissions.** + Creates a role with a given name. - + `.cr Awesome Role` - + rolecolor rc - Set a role's color to the hex or 0-255 rgb color value provided. **Needs Manage Roles Permissions.** + Set a role's color to the hex or 0-255 rgb color value provided. - + `.rc Admin 255 200 100` or `.rc Admin ffba55` - + ban b Bans a user by id or name with an optional message. - + `.b "@some Guy" Your behaviour is toxic.` - + softban sb - Bans and then unbans a user by id or name with an optional message. **Needs Ban Permissions.** + Bans and then unbans a user by id or name with an optional message. - + `.sb "@some Guy" Your behaviour is toxic.` - + kick k - Kicks a mentioned user. **Needs Kick Permissions.** + Kicks a mentioned user. - + `.k "@some Guy" Your behaviour is toxic.` - + mute min Sets the music volume to 0% - + `!!min` - + unmute - Unmutes mentioned user or users. **Needs Mute Permissions.** + Unmutes mentioned user or users. - + `.unmute "@Someguy"` or `.unmute "@Someguy" "@Someguy"` - + deafen deaf - Deafens mentioned user or users. **Needs Deafen Permissions.** + Deafens mentioned user or users. - + `.deaf "@Someguy"` or `.deaf "@Someguy" "@Someguy"` - + undeafen undef - Undeafens mentioned user or users. **Needs Deafen Permissions.** + Undeafens mentioned user or users. - + `.undef "@Someguy"` or `.undef "@Someguy" "@Someguy"` - + delvoichanl dvch - Deletes a voice channel with a given name. **Needs Manage Channel Permissions.** + Deletes a voice channel with a given name. - + `.dvch VoiceChannelName` - + creatvoichanl cvch - Creates a new voice channel with a given name. **Needs Manage Channel Permissions.** + Creates a new voice channel with a given name. - + `.cvch VoiceChannelName` - + deltxtchanl dtch - Deletes a text channel with a given name. **Needs Manage Channel Permissions.** + Deletes a text channel with a given name. - + `.dtch TextChannelName` - + creatxtchanl ctch - Creates a new text channel with a given name. **Needs Manage Channel Permissions.** + Creates a new text channel with a given name. - + `.ctch TextChannelName` - + settopic st - Sets a topic on the current channel. **Needs Manage Channel Permissions.** + Sets a topic on the current channel. - + `.st My new topic` - + setchanlname schn - Changed the name of the current channel. **Needs Manage Channel Permissions.** + Changed the name of the current channel. - + `.schn NewName` - + heap - Shows allocated memory - **Bot Owner Only!** + Shows allocated memory - - + `.heap` - + prune clr - `.prune` removes all nadeko's messages in the last 100 messages.`.prune X` removes last X 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 'Someone's' messages in the channel. **Needs Manage Messages Permissions** + `.prune` removes all nadeko's messages in the last 100 messages.`.prune X` removes last X 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 'Someone's' messages in the channel. - + `.prune` or `.prune 5` or `.prune @Someone` or `.prune @Someone X` - + die Works only for the owner. Shuts the bot down. - + `@NadekoBot die` - + setname newnm - Give the bot a new name. **Bot Owner Only!** + Give the bot a new name. - + `.newnm BotName` - + newavatar setavatar - Sets a new avatar image for the NadekoBot. Argument is a direct link to an image. **Bot Owner Only!** + Sets a new avatar image for the NadekoBot. Argument is a direct link to an image. - + `.setavatar http://i.imgur.com/xTG3a1I.jpg` - + setgame - Sets the bots game. **Bot Owner Only!** + Sets the bots game. - + `.setgame Playing with kwoth` - + send - Send a message to someone on a different server through the bot. **Bot Owner Only!** + Send a message to someone on a different server through the bot. - + `.send sid - + mentionrole menro Mentions every person from the provided role or roles (separated by a ',') on this server. Requires you to have mention everyone permission. - + `.menro RoleName` - + unstuck - Clears the message queue. **Bot Owner Only!** + Clears the message queue. - + `.unstuck` - + donators List of lovely people who donated to keep this project alive. - + `.donators` - + donadd Add a donator to the database. **Kwoth Only** - + `.donadd Donate Amount` - + announce Sends a message to all servers' general channel bot is connected to. - + `.announce Useless spam` - + savechat - Saves a number of messages to a text file and sends it to you. **Bot Owner Only** + Saves a number of messages to a text file and sends it to you. - + `.savechat 150` - + 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 Start now!` - + remindmsg - 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!** + 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. - + `.remindmsg do something else` - + serverinfo sinfo Shows info about the server the bot is on. If no channel 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` - + whosplaying Shows a list of users who are playing the specified game. - + `.whoplays Overwatch` - + inrole Lists every person from the provided role or roles (separated by a ',') on this server. If the list is too long for 1 message, you must have Manage Messages permission. - + `.inrole Role` - + checkmyperms Checks your userspecific permissions on this channel. - + `.checkmyperms` - + stats Shows some basic stats for Nadeko. - + `.stats` - + dysyd Shows some basic stats for Nadeko. - + `.dysyd` - + 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 all roles on this server or a single user if specified. - + `.roles` - + channeltopic ct Sends current channel's topic as a message. - + `.ct` - + chnlfilterinv cfi Enables or disables automatic deleting of invites on the channel.If no channel supplied, it will default to current one. Use ALL to apply to all existing channels at once. - + `;cfi enable #general-chat` - + srvrfilterinv sfi Enables or disables automatic deleting of invites on the server. - + `;sfi disable` - + chnlfilterwords cfw Enables or disables automatic deleting of messages containing banned words on the channel.If no channel supplied, it will default to current one. Use ALL to apply to all existing channels at once. - + `;cfw enable #general-chat` - + fw Adds or removes (if it exists) a word from the list of filtered words - + `;fw poop` - + rmvfilterword rw Removes the word from the list of filtered words - + `;rw poop` - + lstfilterwords lfw Shows a list of filtered words - + `;lfw` - + srvrfilterwords sfw Enables or disables automatic deleting of messages containing forbidden words on the server. - + `;sfw disable` - + permrole pr Sets a role which can change permissions. Or supply no parameters to find out the current one. Default one is 'Nadeko'. - + `;pr role` - + rolepermscopy rpc Copies BOT PERMISSIONS (not discord permissions) from one role to another. - + `;rpc Some Role ~ Some other role` - + chnlpermscopy cpc Copies BOT PERMISSIONS (not discord permissions) from one channel to another. - + `;cpc Some Channel ~ Some other channel` - + usrpermscopy upc Copies BOT PERMISSIONS (not discord permissions) from one role to another. - + `;upc @SomeUser ~ @SomeOtherUser` - + verbose v Sets whether to show when a command/module is blocked. - + `;verbose true` - + srvrperms sp Shows banned permissions for this server. - + `;sp` - + roleperms rp Shows banned permissions for a certain role. No argument means for everyone. - + `;rp AwesomeRole` - + chnlperms cp Shows banned permissions for a certain channel. No argument means for this channel. - + `;cp #dev` - + userperms up Shows banned permissions for a certain user. No argument means for yourself. - + `;up Kwoth` - + srvrmdl sm Sets a module's permission at the server level. - + `;sm "module name" enable` - + srvrcmd sc Sets a command's permission at the server level. - + `;sc "command name" disable` - + rolemdl rm Sets a module's permission at the role level. - + `;rm "module name" enable MyRole` - + rolecmd rc Sets a command's permission at the role level. - + `;rc "command name" disable MyRole` - + chnlmdl cm Sets a module's permission at the channel level. - + `;cm "module name" enable SomeChannel` - + chnlcmd cc Sets a command's permission at the channel level. - + `;cc "command name" enable SomeChannel` - + usrmdl um Sets a module's permission at the user level. - + `;um "module name" enable SomeUsername` - + usrcmd uc Sets a command's permission at the user level. - + `;uc "command name" enable SomeUsername` - + allsrvrmdls asm Enable or disable all modules for your server. - + `;asm [enable/disable]` - + allchnlmdls acm Enable or disable all modules in a specified channel. - + `;acm enable #SomeChannel` - + allrolemdls arm Enable or disable all modules for a specific role. - + `;arm [enable/disable] MyRole` - + ubl - Blacklists a mentioned user. **Bot Owner Only!** + Blacklists a mentioned user. - + `;ubl [user_mention]` - + uubl - Unblacklists a mentioned user. **Bot Owner Only!** + Unblacklists a mentioned user. - + `;uubl [user_mention]` - + cbl Blacklists a mentioned channel (#general for example). - + `;cbl #some_channel` - + cubl Unblacklists a mentioned channel (#general for example). - + `;cubl #some_channel` - + sbl - Blacklists a server by a name or id (#general for example). **BOT OWNER ONLY** + Blacklists a server by a name or id (#general for example). - + `;sbl [servername/serverid]` - + cmdcooldown cmdcd - Sets a cooldown per user for a command. Set 0 to clear. **Needs Manager Messages Permissions** + Sets a cooldown per user for a command. Set 0 to clear. - + `;cmdcd "some cmd" 5` - + allcmdcooldowns acmdcds Shows a list of all commands and their respective cooldowns. - + `;acmdcds` - + . Adds a new quote with the specified name and message. - + `.. sayhi Hi` - + .. Shows a random quote with a specified name. - + `... abc` - + deletequote delq Deletes all quotes with the specified keyword. You have to either be bot owner or the creator of the quote to delete it. - + `.delq abc` - + rip Shows a grave image of someone with a start year - + `@NadekoBot rip @Someone 2000` - + do you love me Replies with positive answer only to the bot owner. - + `@NadekoBot do you love me` - + how are you Replies positive only if bot owner is online. - + `@NadekoBot how are you` - + fire Shows a unicode fire message. Optional parameter [x] tells her how many times to repeat the fire. - + `@NadekoBot fire [x]` - - dump - - - Dumps all of the invites it can to dump.txt.** Owner Only.** - - - `@NadekoBot dump` - - + draw Draws a card from the deck.If you supply number [x], she draws up to 5 cards from the deck. - + `$draw [x]` - + shuffle sh Shuffles the current playlist. - + `!!sh` - + flip Flips coin(s) - heads or tails, and shows an image. - + `$flip` or `$flip 3` - + betflip bf Bet to guess will the result be heads or tails. Guessing award you double flowers you've bet. - + `$bf 5 heads` or `$bf 3 t` - + 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. - + `$roll` or `$roll 7` or `$roll 3d5` - + 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` - + race Starts a new animal race. - + `$race` - + joinrace jr Joins a new race. You can specify an amount of flowers for betting (optional). You will get YourBet*(participants-1) back if you win. - + `$jr` or `$jr 5` - + raffle Prints a name and ID of a random user from the online list from the (optional) role. - + `$raffle` or `$raffle RoleName` - + give Give someone a certain amount of NadekoFlowers - + `$give 1 "@SomeGuy"` - + award - Gives someone a certain amount of flowers. **Bot Owner Only!** + Gives someone a certain amount of flowers. - + `$award 100 @person` - + take - Takes a certain amount of flowers from someone. **Bot Owner Only!** + Takes a certain amount of flowers from someone. - + `$take 1 "@someguy"` - + betroll br Bets a certain amount of NadekoFlowers and rolls a dice. Rolling over 66 yields x2 flowers, over 90 - x3 and 100 x10. - + `$br 5` - + leaderboard lb Displays bot currency leaderboard - + `$lb` - + 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 nohint` or `>t 5 nohint` - + tl Shows a current trivia leaderboard. - + `>tl` - + tq Quits current trivia after current question. - + `>tq` - + 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. Owner only. + Adds a new article to the typing contest. - + `>typeadd wordswords` - + poll - Creates a poll, only person who has manage server permission can do it. **Needs Manage Server Permissions** + Creates a poll, only person who has manage server permission can do it. - + `>poll Question?;Answer1;Answ 2;A_3` - + pollend Stops active poll on this server and prints the results in this channel. - + `>pollend` - + pick Picks a flower planted in this channel. - + `>pick` - + plant Spend a flower to plant it in this channel. (If bot is restarted or crashes, flower will be lost) - + `>plant` - + gencurrency gc Toggles currency generation on this channel. Every posted message will have 2% chance to spawn a NadekoFlower. Requires Manage Messages permission. - + `>gc` - + leet Converts a text to leetspeak with 6 (1-6) severity levels - + `>leet 3 Hello` - + choose Chooses a thing from a list of things - + `>choose Get up;Sleep;Sleep more` - + 8ball Ask the 8ball a yes/no question. - + `>8ball should i do something` - + rps Play a game of rocket paperclip scissors with Nadeko. - + `>rps scissors` - + linux Prints a customizable Linux interjection - + `>linux Spyware Windows` - + next n Goes to the next song in the queue. You have to be in the same voice channel as the bot. - + `!!n` - + stop s Stops the music and clears the playlist. Stays in the channel. - + `!!s` - + 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` - + 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` - + soundcloudqueue sq Queue a soundcloud song using keywords. Bot will join your voice channel.**You must be in a voice channel**. - + `!!sq Dream Of Venice` - + listqueue lq Lists 15 currently queued songs per page. Default page is 1. - + `!!lq` or `!!lq 2` - + nowplaying np Shows the song currently playing. - + `!!np` - + volume vol Sets the music volume 0-100% - + `!!vol 50` - + defvol dv Sets the default music volume when music playback is started (0-100). Persists through restarts. - + `!!dv 80` - + max Sets the music volume to 100%. - + `!!max` - + half Sets the music volume to 50%. - + `!!half` - + playlist pl Queues up to 500 songs from a youtube playlist specified by a link, or keywords. - + `!!pl playlist link or name` - + soundcloudpl scpl Queue a soundcloud playlist using a link. - + `!!scpl soundcloudseturl` - + localplaylst lopl - Queues all songs from a directory. **Bot Owner Only!** + Queues all songs from a directory. - + `!!lopl C:/music/classical` - + radio ra Queues a radio stream from a link. It can be a direct mp3 radio stream, .m3u, .pls .asx or .xspf (Usage Video: <https://streamable.com/al54>) - + `!!ra radio link here` - + local lo - Queues a local file by specifying a full path. **Bot Owner Only!** + Queues a local file by specifying a full path. - + `!!lo C:/music/mysong.mp3` - + move mv Moves the bot to your voice channel. (works only if music is already playing) - + `!!mv` - + remove rm Remove a song by its # in the queue, or 'all' to remove whole queue. - + `!!rm 5` - + 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` - + cleanup - Cleans up hanging voice connections. **Bot Owner Only!** + Cleans up hanging voice connections. - + `!!cleanup` - + reptcursong rcs Toggles repeat of current song. - + `!!rcs` - + rpeatplaylst rpl Toggles repeat of all songs in the queue (every song that finishes is added to the end of the queue). - + `!!rpl` - + save Saves a playlist under a certain name. Name must be no longer than 20 characters and mustn't contain dashes. - + `!!save classical1` - + load Loads a playlist under a certain name. - + `!!load classical-1` - + playlists pls Lists all playlists. Paginated. 20 per page. Default page is 0. - + `!!pls 1` - + deleteplaylist delpls Deletes a saved playlist. Only if you made it or if you are the bot owner. - + `!!delpls animu-5` - + goto Goes to a specific time in seconds in a song. - + `!!goto 30` - + getlink gl Shows a link to the song in the queue by index, or the currently playing song by default. - + `!!gl` - + autoplay ap Toggles autoplay - When the song is finished, automatically queue a related youtube song. (Works only for youtube songs and when queue is empty) - + `!!ap` - + lolchamp Shows League Of Legends champion statistics. If there are spaces/apostrophes or in the name - omit them. Optional second parameter is a role. - + `~lolchamp Riven` or `~lolchamp Annie sup` - + lolban Shows top banned champions ordered by ban rate. - + `~lolban` - + hitbox hb Notifies this channel when a certain user starts streaming. - + `~hitbox SomeStreamer` - + twitch tw Notifies this channel when a certain user starts streaming. - + `~twitch SomeStreamer` - + beam bm Notifies this channel when a certain user starts streaming. - + `~beam SomeStreamer` - + removestream rms Removes notifications of a certain streamer on this channel. - + `~rms SomeGuy` - + liststreams ls Lists all streams you are following on this server. - + `~ls` - + convert Convert quantities from>to. - + `~convert m>km 1000` - + convertlist List of the convertable dimensions and currencies. - + - + wowjoke Get one of Kwoth's penultimate WoW jokes. - + `~wowjoke` - + calculate calc Evaluate a mathematical expression. - + `~calc 1+1` - + osu Shows osu stats for a player. - + `~osu Name` or `~osu Name taiko` - + osub Shows information about an osu beatmap. - + `~osub https://osu.ppy.sh/s/127712` - + osu5 Displays a user's top 5 plays. - + `~osu5 Name` - + pokemon poke Searches for a pokemon. - + `~poke Sylveon` - + pokemonability pokeab Searches for a pokemon ability. - + `~pokeab "water gun"` - + memelist Pulls a list of memes you can use with `~memegen` from http://memegen.link/templates/ - + `~memelist` - + memegen Generates a meme from memelist with top and bottom text. - + `~memegen biw "gets iced coffee" "in the winter"` - + weather we Shows weather data for a specified city and a country. BOTH ARE REQUIRED. Use country abbrevations. - + `~we Moscow RF` - + youtube yt Searches youtubes and shows the first result - + `~yt query` - + ani anime aq Queries anilist for an anime and shows the first result. - + `~ani aquarion evol` - + imdb Queries imdb for movies or series, show first result. - + `~imdb Batman vs Superman` - + manga mang mq Queries anilist for a manga and shows the first result. - + `~mq Shingeki no kyojin` - + randomcat meow Shows a random cat image. - + `~meow` - + randomdog woof Shows a random dog image. - + `~woof` - + img i Pulls the first image found using a search parameter. Use ~ir for different results. - + `~i cute kitten` - + ir Pulls a random image using a search parameter. - + `~ir cute kitten` - + lmgtfy Google something for an idiot. - + `~lmgtfy query` - + google g Get a google search link for some terms. - + `~google query` - + hearthstone hs Searches for a Hearthstone card and shows its image. Takes a while to complete. - + `~hs Ysera` - + urbandict ud Searches Urban Dictionary for a word. - + `~ud Pineapple` - + # Searches Tagdef.com for a hashtag. - + `~# ff` - + catfact Shows a random catfact from <http://catfacts-api.appspot.com/api/facts> - + `~catfact` - + yomama ym Shows a random joke from <http://api.yomomma.info/> - + `~ym` - + randjoke rj Shows a random joke from <http://tambal.azurewebsites.net/joke/random> - + `~rj` - + chucknorris cn Shows a random chucknorris joke from <http://tambal.azurewebsites.net/joke/random> - + `~cn` - + magicitem mi Shows a random magicitem from <https://1d4chan.org/wiki/List_of_/tg/%27s_magic_items> - + `~mi` - + revav Returns a google reverse image search for someone's avatar. - + `~revav "@SomeGuy"` - + revimg Returns a google reverse image search for an image from a link. - + `~revimg Image link` - + safebooru Shows a random image from safebooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) - + `~safebooru yuri+kissing` - + wikipedia wiki Gives you back a wikipedia link - + `~wiki query` - + clr prune Shows you what color corresponds to that hex. - + `~clr 00ff00` - + videocall Creates a private <http://www.appear.in> video call link for you and other mentioned people. The link is sent to mentioned people via a private message. - + `~videocall "@SomeGuy"` - + av avatar Shows a mentioned person's avatar. - + `~av "@SomeGuy"` - + hentai Shows a random NSFW hentai image from gelbooru and danbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) - + `~hentai yuri+kissing` - + danbooru Shows a random hentai image from danbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) - + `~danbooru yuri+kissing` - + gelbooru Shows a random hentai image from gelbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) - + `~gelbooru yuri+kissing` - + rule34 Shows a random image from rule34.xx with a given tag. Tag is optional but preffered. (multiple tags are appended with +) - + `~rule34 yuri+kissing` - + e621 Shows a random hentai image from e621.net with a given tag. Tag is optional but preffered. Use spaces for multiple tags. - + `~e621 yuri kissing` - + cp We all know where this will lead you to. - + `~cp` - + boobs Real adult content. - + `~boobs` - + butts ass butt Real adult content. - + `~butts` or `~ass` - + createwar cw Creates a new war by specifying a size (>10 and multiple of 5) and enemy clan name. - + `,cw 15 The Enemy Clan` - + startwar sw Starts a war with a given number. - + `,sw 15` - + listwar lw Shows the active war claims by a number. Shows all wars in a short way if no number is specified. - + `,lw [war_number] or ,lw` - + claim call c Claims a certain base from a certain war. You can supply a name in the third optional argument to claim in someone else's place. - + `,call [war_number] [base_number] [optional_other_name]` - + claimfinish cf cf3 claimfinish3 Finish your claim with 3 stars if you destroyed a base. Optional second argument finishes for someone else. - + `,cf [war_number] [optional_other_name]` - + claimfinish2 cf2 Finish your claim with 2 stars if you destroyed a base. Optional second argument finishes for someone else. - + `,cf [war_number] [optional_other_name]` - + claimfinish1 cf1 Finish your claim with 1 stars if you destroyed a base. Optional second argument finishes for someone else. - + `,cf [war_number] [optional_other_name]` - + unclaim ucall uc Removes your claim from a certain war. Optional second argument denotes a person in whose place to unclaim - + `,uc [war_number] [optional_other_name]` - + endwar ew Ends the war with a given index. - + `,ew [war_number]` - + 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` - + heal Heals someone. Revives those who fainted. Costs a NadekoFlower - + `>heal @someone` - + type Get the poketype of the target. - + `>type @someone` - + settype Set your poketype. Costs a NadekoFlower. - + `>settype fire` - + translate trans Translates from>to text. From the given language to the destiation language. - + `~trans en>fr Hello` - + translangs List the valid languages for translation. - + `~translangs` or `~translangs language` - + bind - Bind a trello bot to a single channel. You will receive notifications from your board when something is added or edited. **Bot Owner Only!** + Bind a trello bot to a single channel. You will receive notifications from your board when something is added or edited. - + `trello bind [board_id]` - + unbind - Unbinds a bot from the channel and board. **Bot Owner Only!** + Unbinds a bot from the channel and board. - + `trello unbind` - + lists list - Lists all lists, yo ;) **Bot Owner Only!** + Lists all lists, yo ;) - + `trello list` - + cards - Lists all cards from the supplied list. You can supply either a name or an index. **Bot Owner Only!** + Lists all cards from the supplied list. You can supply either a name or an index. - + `trello cards index` Sends a readme and a guide links to the channel. - + `-readme` or `-guide` - + readme guide Shows all available operations in .calc command - + `.calcops` - + calcops Deletes all quotes on a specified keyword. - + `.delallq` - + delallq daq - + greetdmmsg - + `.greetdmmsg Welcome to the server, %user%`. - Sets a new join announcement message which will be sent to the user who joined. Type %user% if you want to mention the new member. Using it with no message will show the current DM greet message. **Needs Manage Server Permissions.** + Sets a new join announcement message which will be sent to the user who joined. Type %user% if you want to mention the new member. Using it with no message will show the current DM greet message. Check how much NadekoFlowers a person has. (Defaults to yourself) - + `$$$` or `$$$ @SomeGuy` - + cash $$ Lists whole permission chain with their indexes. - + `;lp` - + listperms lp Enable or disable all modules for a specific user. - + `;aum enable @someone` - + allusrmdls aum Moves permission from one position to another. - + `;mp 2 4` - + moveperm mp Removes a permission from a given position - + `;rp 1` - + removeperm rp Migrate data from old bot configuration - + `.migratedata` - + migratedata Checks if a user is online on a certain streaming platform. - + `~cs twitch MyFavStreamer` - + checkstream cs \ No newline at end of file From 755d793150ac386c550a9af45ac0f61deac75216 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Wed, 5 Oct 2016 07:01:19 +0200 Subject: [PATCH 31/74] Safety --- .../Modules/Administration/Administration.cs | 26 +++-- .../Commands/CrossServerTextChannel.cs | 9 +- .../Administration/Commands/LogCommand.cs | 16 +-- .../Commands/MessageRepeater.cs | 6 +- .../Commands/ServerGreetCommands.cs | 32 ++++-- .../Commands/VoicePlusTextCommands.cs | 4 +- .../Modules/ClashOfClans/ClashOfClans.cs | 4 +- .../Modules/Gambling/Commands/AnimalRacing.cs | 23 ++-- .../Gambling/Commands/DiceRollCommand.cs | 3 +- .../Modules/Gambling/Commands/DrawCommand.cs | 108 ++++++++++-------- .../Games/Commands/PlantAndPickCommands.cs | 15 ++- .../Modules/Games/Commands/PollCommands.cs | 13 +-- .../Games/Commands/SpeedTypingCommands.cs | 53 +++++---- .../Games/Commands/Trivia/TriviaGame.cs | 20 ++-- src/NadekoBot/Modules/Music/Music.cs | 48 ++++---- .../Permissions/Commands/BlacklistCommands.cs | 10 ++ .../Modules/Searches/Commands/OsuCommands.cs | 3 +- .../Commands/StreamNotificationCommands.cs | 6 +- .../Modules/Utility/Commands/QuoteCommands.cs | 13 ++- .../Modules/Utility/Commands/Remind.cs | 13 +-- src/NadekoBot/Resources/CommandStrings.resx | 32 ++---- src/NadekoBot/Services/CurrencyHandler.cs | 4 +- src/NadekoBot/TypeReaders/GuildTypeReader.cs | 5 +- 23 files changed, 242 insertions(+), 224 deletions(-) diff --git a/src/NadekoBot/Modules/Administration/Administration.cs b/src/NadekoBot/Modules/Administration/Administration.cs index c48ab530..5f5a7d5d 100644 --- a/src/NadekoBot/Modules/Administration/Administration.cs +++ b/src/NadekoBot/Modules/Administration/Administration.cs @@ -42,14 +42,14 @@ namespace NadekoBot.Modules.Administration } if (shouldDelete) - await e.Message.DeleteAsync(); + await e.Message.DeleteAsync().ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex, "Delmsgoncmd errored..."); } } - + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] @@ -57,9 +57,10 @@ namespace NadekoBot.Modules.Administration { var channel = (ITextChannel)umsg.Channel; - await channel.SendMessageAsync("`Restarting in 2 seconds...`"); - await Task.Delay(2000); - System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo { + await channel.SendMessageAsync("`Restarting in 2 seconds...`").ConfigureAwait(false); + await Task.Delay(2000).ConfigureAwait(false); + System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo + { Arguments = "dotnet " + System.Reflection.Assembly.GetEntryAssembly().Location }); Environment.Exit(0); @@ -80,9 +81,9 @@ namespace NadekoBot.Modules.Administration await uow.CompleteAsync(); } if (conf.DeleteMessageOnCommand) - await channel.SendMessageAsync("❗`Now automatically deleting successfull command invokations.`"); + await channel.SendMessageAsync("❗`Now automatically deleting successfull command invokations.`").ConfigureAwait(false); else - await channel.SendMessageAsync("❗`Stopped automatic deletion of successfull command invokations.`"); + await channel.SendMessageAsync("❗`Stopped automatic deletion of successfull command invokations.`").ConfigureAwait(false); } [NadekoCommand, Usage, Description, Aliases] @@ -504,7 +505,7 @@ namespace NadekoBot.Modules.Administration { var channel = (ITextChannel)umsg.Channel; - await channel.SendMessageAsync("`Shutting down.`").ConfigureAwait(false); + try { await channel.SendMessageAsync("`Shutting down.`").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } await Task.Delay(2000).ConfigureAwait(false); Environment.Exit(0); } @@ -589,7 +590,7 @@ namespace NadekoBot.Modules.Administration { return; } - await ch.SendMessageAsync(msg); + await ch.SendMessageAsync(msg).ConfigureAwait(false); } else if (ids[1].ToUpperInvariant().StartsWith("U:")) { @@ -599,11 +600,11 @@ namespace NadekoBot.Modules.Administration { return; } - await user.SendMessageAsync(msg); + await user.SendMessageAsync(msg).ConfigureAwait(false); } else { - await channel.SendMessageAsync("`Invalid format.`"); + await channel.SendMessageAsync("`Invalid format.`").ConfigureAwait(false); } } @@ -618,7 +619,8 @@ namespace NadekoBot.Modules.Administration g.GetDefaultChannelAsync() )).ConfigureAwait(false); - await Task.WhenAll(channels.Select(c => c.SendMessageAsync($"`Message from {umsg.Author} (Bot Owner):` " + message))); + await Task.WhenAll(channels.Select(c => c.SendMessageAsync($"`Message from {umsg.Author} (Bot Owner):` " + message))) + .ConfigureAwait(false); await channel.SendMessageAsync(":ok:").ConfigureAwait(false); } diff --git a/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs b/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs index 9c830023..bc2821ed 100644 --- a/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs +++ b/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs @@ -4,6 +4,7 @@ using Discord.WebSocket; using NadekoBot.Attributes; using NadekoBot.Extensions; using NadekoBot.Services; +using NLog; using System; using System.Collections.Concurrent; using System.Collections.Generic; @@ -19,6 +20,7 @@ namespace NadekoBot.Modules.Administration { public CrossServerTextChannel() { + _log = LogManager.GetCurrentClassLogger(); NadekoBot.Client.MessageReceived += (imsg) => { var msg = imsg as IUserMessage; @@ -31,8 +33,6 @@ namespace NadekoBot.Modules.Administration Task.Run(async () => { - try - { if (msg.Author.Id == NadekoBot.Client.GetCurrentUser().Id) return; foreach (var subscriber in Subscribers) { @@ -41,11 +41,9 @@ namespace NadekoBot.Modules.Administration continue; foreach (var chan in set.Except(new[] { channel })) { - await chan.SendMessageAsync(GetText(channel.Guild, channel, (IGuildUser)msg.Author, msg)).ConfigureAwait(false); + try { await chan.SendMessageAsync(GetText(channel.Guild, channel, (IGuildUser)msg.Author, msg)).ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } } } - } - catch { } }); return Task.CompletedTask; }; @@ -55,6 +53,7 @@ namespace NadekoBot.Modules.Administration $"**{server.Name} | {channel.Name}** `{user.Username}`: " + message.Content; public static readonly ConcurrentDictionary> Subscribers = new ConcurrentDictionary>(); + private Logger _log { get; } [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] diff --git a/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs b/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs index d9abdaa0..05de36b0 100644 --- a/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs +++ b/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs @@ -168,7 +168,7 @@ namespace NadekoBot.Modules.Administration var task = Task.Run(async () => { - await logChannel.SendMessageAsync($"❗`{prettyCurrentTime}` `{(ch is IVoiceChannel ? "Voice" : "Text")} Channel Deleted:` **#{ch.Name}** ({ch.Id})").ConfigureAwait(false); + try { await logChannel.SendMessageAsync($"❗`{prettyCurrentTime}` `{(ch is IVoiceChannel ? "Voice" : "Text")} Channel Deleted:` **#{ch.Name}** ({ch.Id})").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } }); return Task.CompletedTask; @@ -192,7 +192,7 @@ namespace NadekoBot.Modules.Administration var task = Task.Run(async () => { - await logChannel.SendMessageAsync($"`{prettyCurrentTime}`🆕`{(ch is IVoiceChannel ? "Voice" : "Text")} Channel Created:` **#{ch.Name}** ({ch.Id})").ConfigureAwait(false); + try { await logChannel.SendMessageAsync($"`{prettyCurrentTime}`🆕`{(ch is IVoiceChannel ? "Voice" : "Text")} Channel Created:` **#{ch.Name}** ({ch.Id})").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } }); return Task.CompletedTask; @@ -275,7 +275,7 @@ namespace NadekoBot.Modules.Administration var task = Task.Run(async () => { - await logChannel.SendMessageAsync($"`{prettyCurrentTime}`❗`User left:` **{usr.Username}** ({usr.Id})").ConfigureAwait(false); + try { await logChannel.SendMessageAsync($"`{prettyCurrentTime}`❗`User left:` **{usr.Username}** ({usr.Id})").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } }); return Task.CompletedTask; @@ -295,7 +295,7 @@ namespace NadekoBot.Modules.Administration var task = Task.Run(async () => { - await logChannel.SendMessageAsync($"`{prettyCurrentTime}`❗`User joined:` **{usr.Username}** ({usr.Id})").ConfigureAwait(false); + try { await logChannel.SendMessageAsync($"`{prettyCurrentTime}`❗`User joined:` **{usr.Username}** ({usr.Id})").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } }); return Task.CompletedTask; @@ -315,7 +315,7 @@ namespace NadekoBot.Modules.Administration var task = Task.Run(async () => { - await logChannel.SendMessageAsync($"`{prettyCurrentTime}`♻`User unbanned:` **{usr.Username}** ({usr.Id})").ConfigureAwait(false); + try { await logChannel.SendMessageAsync($"`{prettyCurrentTime}`♻`User unbanned:` **{usr.Username}** ({usr.Id})").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } }); return Task.CompletedTask; @@ -335,7 +335,7 @@ namespace NadekoBot.Modules.Administration var task = Task.Run(async () => { - await logChannel.SendMessageAsync($"❗`{prettyCurrentTime}`❌`User banned:` **{usr.Username}** ({usr.Id})").ConfigureAwait(false); + try { await logChannel.SendMessageAsync($"❗`{prettyCurrentTime}`❌`User banned:` **{usr.Username}** ({usr.Id})").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } }); return Task.CompletedTask; @@ -399,10 +399,10 @@ namespace NadekoBot.Modules.Administration var task = Task.Run(async () => { - await logChannel.SendMessageAsync($@"🕔`{prettyCurrentTime}` **Message** 📝 `#{channel.Name}` + try { await logChannel.SendMessageAsync($@"🕔`{prettyCurrentTime}` **Message** 📝 `#{channel.Name}` 👤`{before.Author.Username}` `Old:` {before.Resolve(userHandling: UserMentionHandling.NameAndDiscriminator)} - `New:` {after.Resolve(userHandling: UserMentionHandling.NameAndDiscriminator)}").ConfigureAwait(false); + `New:` {after.Resolve(userHandling: UserMentionHandling.NameAndDiscriminator)}").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } }); return Task.CompletedTask; diff --git a/src/NadekoBot/Modules/Administration/Commands/MessageRepeater.cs b/src/NadekoBot/Modules/Administration/Commands/MessageRepeater.cs index 9e7ffa61..0a7ba01d 100644 --- a/src/NadekoBot/Modules/Administration/Commands/MessageRepeater.cs +++ b/src/NadekoBot/Modules/Administration/Commands/MessageRepeater.cs @@ -5,6 +5,7 @@ using NadekoBot.Attributes; using NadekoBot.Services; using NadekoBot.Services.Database; using NadekoBot.Services.Database.Models; +using NLog; using System; using System.Collections.Concurrent; using System.Collections.Generic; @@ -23,6 +24,8 @@ namespace NadekoBot.Modules.Administration public class RepeatRunner { + private Logger _log { get; } + private CancellationTokenSource source { get; set; } private CancellationToken token { get; set; } public Repeater Repeater { get; } @@ -30,6 +33,7 @@ namespace NadekoBot.Modules.Administration public RepeatRunner(Repeater repeater, ITextChannel channel = null) { + _log = LogManager.GetCurrentClassLogger(); this.Repeater = repeater; this.Channel = channel ?? NadekoBot.Client.GetGuild(repeater.GuildId)?.GetTextChannel(repeater.ChannelId); if (Channel == null) @@ -47,7 +51,7 @@ namespace NadekoBot.Modules.Administration while (!token.IsCancellationRequested) { await Task.Delay(Repeater.Interval, token).ConfigureAwait(false); - await Channel.SendMessageAsync("🔄 " + Repeater.Message).ConfigureAwait(false); + try { await Channel.SendMessageAsync("🔄 " + Repeater.Message).ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } } } catch (OperationCanceledException) { } diff --git a/src/NadekoBot/Modules/Administration/Commands/ServerGreetCommands.cs b/src/NadekoBot/Modules/Administration/Commands/ServerGreetCommands.cs index c156c8e1..735f7e0f 100644 --- a/src/NadekoBot/Modules/Administration/Commands/ServerGreetCommands.cs +++ b/src/NadekoBot/Modules/Administration/Commands/ServerGreetCommands.cs @@ -4,6 +4,7 @@ using NadekoBot.Attributes; using NadekoBot.Services; using NadekoBot.Services.Database.Models; using NLog; +using System; using System.Collections.Concurrent; using System.Linq; using System.Threading.Tasks; @@ -44,16 +45,19 @@ namespace NadekoBot.Modules.Administration var msg = conf.ChannelByeMessageText.Replace("%user%", "**" + user.Username + "**"); if (string.IsNullOrWhiteSpace(msg)) return; - - var toDelete = await channel.SendMessageAsync(msg).ConfigureAwait(false); - if (conf.AutoDeleteByeMessages) + try { - var t = Task.Run(async () => + var toDelete = await channel.SendMessageAsync(msg).ConfigureAwait(false); + if (conf.AutoDeleteByeMessages) { - await Task.Delay(conf.AutoDeleteGreetMessagesTimer * 1000).ConfigureAwait(false); // 5 minutes - await toDelete.DeleteAsync().ConfigureAwait(false); - }); + var t = Task.Run(async () => + { + await Task.Delay(conf.AutoDeleteGreetMessagesTimer * 1000).ConfigureAwait(false); // 5 minutes + await toDelete.DeleteAsync().ConfigureAwait(false); + }); + } } + catch (Exception ex) { _log.Warn(ex); } }); return Task.CompletedTask; } @@ -76,15 +80,19 @@ namespace NadekoBot.Modules.Administration var msg = conf.ChannelGreetMessageText.Replace("%user%", user.Username).Replace("%server%", user.Guild.Name); if (!string.IsNullOrWhiteSpace(msg)) { - var toDelete = await channel.SendMessageAsync(msg).ConfigureAwait(false); - if (conf.AutoDeleteGreetMessages) + try { - var t = Task.Run(async () => + var toDelete = await channel.SendMessageAsync(msg).ConfigureAwait(false); + if (conf.AutoDeleteGreetMessages) { - await Task.Delay(conf.AutoDeleteGreetMessagesTimer * 1000).ConfigureAwait(false); // 5 minutes + var t = Task.Run(async () => + { + await Task.Delay(conf.AutoDeleteGreetMessagesTimer * 1000).ConfigureAwait(false); // 5 minutes await toDelete.DeleteAsync().ConfigureAwait(false); - }); + }); + } } + catch (Exception ex) { _log.Warn(ex); } } } } diff --git a/src/NadekoBot/Modules/Administration/Commands/VoicePlusTextCommands.cs b/src/NadekoBot/Modules/Administration/Commands/VoicePlusTextCommands.cs index 06f30700..9696c188 100644 --- a/src/NadekoBot/Modules/Administration/Commands/VoicePlusTextCommands.cs +++ b/src/NadekoBot/Modules/Administration/Commands/VoicePlusTextCommands.cs @@ -148,7 +148,7 @@ namespace NadekoBot.Modules.Administration var guild = channel.Guild; if (!guild.GetCurrentUser().GuildPermissions.ManageChannels) { - await channel.SendMessageAsync("`I have insufficient permission to do that.`"); + await channel.SendMessageAsync("`I have insufficient permission to do that.`").ConfigureAwait(false); return; } @@ -163,7 +163,7 @@ namespace NadekoBot.Modules.Administration await Task.Delay(500); } - await channel.SendMessageAsync("`Done.`"); + await channel.SendMessageAsync("`Done.`").ConfigureAwait(false); } } } diff --git a/src/NadekoBot/Modules/ClashOfClans/ClashOfClans.cs b/src/NadekoBot/Modules/ClashOfClans/ClashOfClans.cs index f817fe5c..b4254162 100644 --- a/src/NadekoBot/Modules/ClashOfClans/ClashOfClans.cs +++ b/src/NadekoBot/Modules/ClashOfClans/ClashOfClans.cs @@ -45,9 +45,9 @@ namespace NadekoBot.Modules.ClashOfClans if (Bases[i] == null) continue; if (!Bases[i].BaseDestroyed && DateTime.UtcNow - Bases[i].TimeAdded >= callExpire) { - await war.Channel.SendMessageAsync($"❗🔰**Claim from @{Bases[i].CallUser} for a war against {war.ShortPrint()} has expired.**").ConfigureAwait(false); Bases[i] = null; - } + try { await war.Channel.SendMessageAsync($"❗🔰**Claim from @{Bases[i].CallUser} for a war against {war.ShortPrint()} has expired.**").ConfigureAwait(false); } catch { } + } } } diff --git a/src/NadekoBot/Modules/Gambling/Commands/AnimalRacing.cs b/src/NadekoBot/Modules/Gambling/Commands/AnimalRacing.cs index 7b00bb4b..649fe8fa 100644 --- a/src/NadekoBot/Modules/Gambling/Commands/AnimalRacing.cs +++ b/src/NadekoBot/Modules/Gambling/Commands/AnimalRacing.cs @@ -4,6 +4,7 @@ using NadekoBot.Attributes; using NadekoBot.Extensions; using NadekoBot.Services; using NadekoBot.Services.Database; +using NLog; using System; using System.Collections.Concurrent; using System.Collections.Generic; @@ -47,7 +48,7 @@ namespace NadekoBot.Modules.Gambling if (amount > 0) if(!await CurrencyHandler.RemoveCurrencyAsync((IGuildUser)umsg.Author, "BetRace", amount, true).ConfigureAwait(false)) - await channel.SendMessageAsync($"{umsg.Author.Mention} You don't have enough {Gambling.CurrencyName}s.").ConfigureAwait(false); + try { await channel.SendMessageAsync($"{umsg.Author.Mention} You don't have enough {Gambling.CurrencyName}s.").ConfigureAwait(false); } catch { } AnimalRace ar; @@ -69,12 +70,14 @@ namespace NadekoBot.Modules.Gambling public List participants = new List(); private ulong serverId; private int messagesSinceGameStarted = 0; + private Logger _log { get; } public ITextChannel raceChannel { get; set; } public bool Started { get; private set; } = false; public AnimalRace(ulong serverId, ITextChannel ch) { + this._log = LogManager.GetCurrentClassLogger(); this.serverId = serverId; this.raceChannel = ch; if (!AnimalRaces.TryAdd(serverId, this)) @@ -85,7 +88,7 @@ namespace NadekoBot.Modules.Gambling using (var uow = DbHandler.UnitOfWork()) { - animals = new ConcurrentQueue(uow.BotConfig.GetOrCreate().RaceAnimals.Select(ra=>ra.Icon).Shuffle()); + animals = new ConcurrentQueue(uow.BotConfig.GetOrCreate().RaceAnimals.Select(ra => ra.Icon).Shuffle()); } @@ -96,23 +99,23 @@ namespace NadekoBot.Modules.Gambling { try { - await raceChannel.SendMessageAsync($"🏁`Race is starting in 20 seconds or when the room is full. Type {NadekoBot.ModulePrefixes[typeof(Gambling).Name]}jr to join the race.`"); + try { await raceChannel.SendMessageAsync($"🏁`Race is starting in 20 seconds or when the room is full. Type {NadekoBot.ModulePrefixes[typeof(Gambling).Name]}jr to join the race.`"); } catch (Exception ex) { _log.Warn(ex); } var t = await Task.WhenAny(Task.Delay(20000, token), fullgame); Started = true; cancelSource.Cancel(); if (t == fullgame) { - await raceChannel.SendMessageAsync("🏁`Race full, starting right now!`"); + try { await raceChannel.SendMessageAsync("🏁`Race full, starting right now!`"); } catch (Exception ex) { _log.Warn(ex); } } else if (participants.Count > 1) { - await raceChannel.SendMessageAsync("🏁`Game starting with " + participants.Count + " participants.`"); + try { await raceChannel.SendMessageAsync("🏁`Game starting with " + participants.Count + " participants.`"); } catch (Exception ex) { _log.Warn(ex); } } else { - await raceChannel.SendMessageAsync("🏁`Race failed to start since there was not enough participants.`"); + try { await raceChannel.SendMessageAsync("🏁`Race failed to start since there was not enough participants.`"); } catch (Exception ex) { _log.Warn(ex); } var p = participants.FirstOrDefault(); - + if (p != null) await CurrencyHandler.AddCurrencyAsync(p.User, "BetRace", p.AmountBet, true).ConfigureAwait(false); End(); @@ -169,11 +172,13 @@ namespace NadekoBot.Modules.Gambling { if (msg != null) try { await msg.DeleteAsync(); } catch { } - msg = await raceChannel.SendMessageAsync(text).ConfigureAwait(false); messagesSinceGameStarted = 0; + try { msg = await raceChannel.SendMessageAsync(text).ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } } else - await msg.ModifyAsync(m => m.Content = text).ConfigureAwait(false); + { + try { await msg.ModifyAsync(m => m.Content = text).ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } + } await Task.Delay(2500); } diff --git a/src/NadekoBot/Modules/Gambling/Commands/DiceRollCommand.cs b/src/NadekoBot/Modules/Gambling/Commands/DiceRollCommand.cs index d1e4aab6..a6e6a8ba 100644 --- a/src/NadekoBot/Modules/Gambling/Commands/DiceRollCommand.cs +++ b/src/NadekoBot/Modules/Gambling/Commands/DiceRollCommand.cs @@ -89,7 +89,6 @@ namespace NadekoBot.Modules.Gambling if (num < 1 || num > 30) { await channel.SendMessageAsync("Invalid number specified. You can roll up to 1-30 dice at a time.").ConfigureAwait(false); - num = 30; return; } @@ -173,7 +172,7 @@ namespace NadekoBot.Modules.Gambling if (num < 1 || num > 30) { await channel.SendMessageAsync("Invalid number specified. You can roll up to 1-30 dice at a time.").ConfigureAwait(false); - num = 30; + return; } var rng = new NadekoRandom(); diff --git a/src/NadekoBot/Modules/Gambling/Commands/DrawCommand.cs b/src/NadekoBot/Modules/Gambling/Commands/DrawCommand.cs index 69649b78..410d0cd1 100644 --- a/src/NadekoBot/Modules/Gambling/Commands/DrawCommand.cs +++ b/src/NadekoBot/Modules/Gambling/Commands/DrawCommand.cs @@ -4,6 +4,7 @@ using ImageProcessorCore; using NadekoBot.Attributes; using NadekoBot.Extensions; using NadekoBot.Modules.Gambling.Models; +using NLog; using System; using System.Collections.Concurrent; using System.Collections.Generic; @@ -12,59 +13,70 @@ using System.Threading.Tasks; namespace NadekoBot.Modules.Gambling { - [Group] - public class DrawCommands + public partial class Gambling { - private static readonly ConcurrentDictionary AllDecks = new ConcurrentDictionary(); - - private const string cardsPath = "data/images/cards"; - [NadekoCommand, Usage, Description, Aliases] - [RequireContext(ContextType.Guild)] - public async Task Draw(IUserMessage msg) + [Group] + public class DrawCommands { - var channel = (ITextChannel)msg.Channel; - var cards = AllDecks.GetOrAdd(channel.Guild, (s) => new Cards()); - - var num = 1; - var images = new List(); - var cardObjects = new List(); - for (var i = 0; i < num; i++) + private static readonly ConcurrentDictionary AllDecks = new ConcurrentDictionary(); + + + public DrawCommands() { - if (cards.CardPool.Count == 0 && i != 0) + _log = LogManager.GetCurrentClassLogger(); + } + + private const string cardsPath = "data/images/cards"; + private Logger _log { get; } + + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + public async Task Draw(IUserMessage msg) + { + var channel = (ITextChannel)msg.Channel; + var cards = AllDecks.GetOrAdd(channel.Guild, (s) => new Cards()); + + var num = 1; + var images = new List(); + var cardObjects = new List(); + for (var i = 0; i < num; i++) { - await channel.SendMessageAsync("No more cards in a deck.").ConfigureAwait(false); - break; - } - var currentCard = cards.DrawACard(); - cardObjects.Add(currentCard); - using (var stream = File.OpenRead(Path.Combine(cardsPath, currentCard.GetName()))) - images.Add(new Image(stream)); - } - MemoryStream bitmapStream = new MemoryStream(); - images.Merge().SaveAsPng(bitmapStream); - bitmapStream.Position = 0; - await channel.SendFileAsync(bitmapStream, images.Count + " cards.jpg", $"{msg.Author.Mention} drew (TODO: CARD NAMES HERE)").ConfigureAwait(false); - if (cardObjects.Count == 5) - { - await channel.SendMessageAsync($"{msg.Author.Mention} `{Cards.GetHandValue(cardObjects)}`").ConfigureAwait(false); - } - } - - [NadekoCommand, Usage, Description, Aliases] - [RequireContext(ContextType.Guild)] - public async Task Shuffle(IUserMessage imsg) - { - var channel = (ITextChannel)imsg.Channel; - - AllDecks.AddOrUpdate(channel.Guild, - (g) => new Cards(), - (g, c) => + if (cards.CardPool.Count == 0 && i != 0) { - c.Restart(); - return c; - }); + try { await channel.SendMessageAsync("No more cards in a deck.").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } + break; + } + var currentCard = cards.DrawACard(); + cardObjects.Add(currentCard); + using (var stream = File.OpenRead(Path.Combine(cardsPath, currentCard.GetName()))) + images.Add(new Image(stream)); + } + MemoryStream bitmapStream = new MemoryStream(); + images.Merge().SaveAsPng(bitmapStream); + bitmapStream.Position = 0; + await channel.SendFileAsync(bitmapStream, images.Count + " cards.jpg", $"{msg.Author.Mention} drew (TODO: CARD NAMES HERE)").ConfigureAwait(false); + if (cardObjects.Count == 5) + { + await channel.SendMessageAsync($"{msg.Author.Mention} `{Cards.GetHandValue(cardObjects)}`").ConfigureAwait(false); + } + } - await channel.SendMessageAsync("`Deck reshuffled.`").ConfigureAwait(false); + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + public async Task Shuffle(IUserMessage imsg) + { + var channel = (ITextChannel)imsg.Channel; + + AllDecks.AddOrUpdate(channel.Guild, + (g) => new Cards(), + (g, c) => + { + c.Restart(); + return c; + }); + + await channel.SendMessageAsync("`Deck reshuffled.`").ConfigureAwait(false); + } } } -} +} \ No newline at end of file diff --git a/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs b/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs index 1a2da238..9bde265a 100644 --- a/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs @@ -5,6 +5,7 @@ using NadekoBot.Attributes; using NadekoBot.Extensions; using NadekoBot.Services; using NadekoBot.Services.Database; +using NLog; using System; using System.Collections.Concurrent; using System.Collections.Generic; @@ -40,9 +41,11 @@ namespace NadekoBot.Modules.Games private float chance; private int cooldown; + private Logger _log { get; } public PlantPickCommands() { + _log = LogManager.GetCurrentClassLogger(); NadekoBot.Client.MessageReceived += PotentialFlowerGeneration; rng = new NadekoRandom(); @@ -121,14 +124,10 @@ namespace NadekoBot.Modules.Games await CurrencyHandler.AddCurrencyAsync((IGuildUser)imsg.Author, "Picked flower(s).", msgs.Count, false).ConfigureAwait(false); var msg = await channel.SendMessageAsync($"**{imsg.Author.Username}** picked {msgs.Count}{Gambling.Gambling.CurrencySign}!").ConfigureAwait(false); var t = Task.Run(async () => - { - try - { - await Task.Delay(10000).ConfigureAwait(false); - await msg.DeleteAsync().ConfigureAwait(false); - } - catch { } - }); + { + await Task.Delay(10000).ConfigureAwait(false); + try { await msg.DeleteAsync().ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } + }); } [NadekoCommand, Usage, Description, Aliases] diff --git a/src/NadekoBot/Modules/Games/Commands/PollCommands.cs b/src/NadekoBot/Modules/Games/Commands/PollCommands.cs index c8318cc2..e641ee74 100644 --- a/src/NadekoBot/Modules/Games/Commands/PollCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/PollCommands.cs @@ -124,17 +124,12 @@ namespace NadekoBot.Modules.Games var t = Task.Run(async () => { - try + if (vote < 1 || vote > answers.Length) + return; + if (participants.TryAdd(msg.Author, vote)) { - - if (vote < 1 || vote > answers.Length) - return; - if (participants.TryAdd(msg.Author, vote)) - { - await (ch as ITextChannel).SendMessageAsync($"Thanks for voting **{msg.Author.Username}**.").ConfigureAwait(false); - } + try { await (ch as ITextChannel).SendMessageAsync($"Thanks for voting **{msg.Author.Username}**.").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } } - catch { } }); return Task.CompletedTask; } diff --git a/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs b/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs index 0545386c..d18621a7 100644 --- a/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs @@ -5,6 +5,7 @@ using NadekoBot.Attributes; using NadekoBot.Extensions; using NadekoBot.Services; using NadekoBot.Services.Database; +using NLog; using System; using System.Collections.Concurrent; using System.Collections.Generic; @@ -24,9 +25,11 @@ namespace NadekoBot.Modules.Games public bool IsActive; private readonly Stopwatch sw; private readonly List finishedUserIds; + private Logger _log { get; } public TypingGame(ITextChannel channel) { + _log = LogManager.GetCurrentClassLogger(); this.channel = channel; IsActive = false; sw = new Stopwatch(); @@ -43,41 +46,43 @@ namespace NadekoBot.Modules.Games IsActive = false; sw.Stop(); sw.Reset(); - await channel.SendMessageAsync("Typing contest stopped").ConfigureAwait(false); + try { await channel.SendMessageAsync("Typing contest stopped").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } return true; } public async Task Start() { - while (true) + if (IsActive) return; // can't start running game + IsActive = true; + CurrentSentence = GetRandomSentence(); + var i = (int)(CurrentSentence.Length / WORD_VALUE * 1.7f); + await channel.SendMessageAsync($@":clock2: Next contest will last for {i} seconds. Type the bolded text as fast as you can.").ConfigureAwait(false); + + + var msg = await channel.SendMessageAsync("Starting new typing contest in **3**...").ConfigureAwait(false); + await Task.Delay(1000).ConfigureAwait(false); + try { - if (IsActive) return; // can't start running game - IsActive = true; - CurrentSentence = GetRandomSentence(); - var i = (int)(CurrentSentence.Length / WORD_VALUE * 1.7f); - await channel.SendMessageAsync($":clock2: Next contest will last for {i} seconds. Type the bolded text as fast as you can.").ConfigureAwait(false); - - - var msg = await channel.SendMessageAsync("Starting new typing contest in **3**...").ConfigureAwait(false); - await Task.Delay(1000).ConfigureAwait(false); await msg.ModifyAsync(m => m.Content = "Starting new typing contest in **2**...").ConfigureAwait(false); await Task.Delay(1000).ConfigureAwait(false); await msg.ModifyAsync(m => m.Content = "Starting new typing contest in **1**...").ConfigureAwait(false); await Task.Delay(1000).ConfigureAwait(false); - await msg.ModifyAsync(m => m.Content = $":book:**{CurrentSentence.Replace(" ", " \x200B")}**:book:").ConfigureAwait(false); - sw.Start(); - HandleAnswers(); - - while (i > 0) - { - await Task.Delay(1000).ConfigureAwait(false); - i--; - if (!IsActive) - return; - } - - await Stop().ConfigureAwait(false); } + catch (Exception ex) { _log.Warn(ex); } + + await msg.ModifyAsync(m => m.Content = $":book:**{CurrentSentence.Replace(" ", " \x200B")}**:book:").ConfigureAwait(false); + sw.Start(); + HandleAnswers(); + + while (i > 0) + { + await Task.Delay(1000).ConfigureAwait(false); + i--; + if (!IsActive) + return; + } + + await Stop().ConfigureAwait(false); } public string GetRandomSentence() diff --git a/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaGame.cs b/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaGame.cs index 6a68368f..9ca62599 100644 --- a/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaGame.cs +++ b/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaGame.cs @@ -1,5 +1,7 @@ using Discord; using NadekoBot.Extensions; +using NLog; +using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; @@ -12,6 +14,7 @@ namespace NadekoBot.Modules.Games.Trivia public class TriviaGame { private readonly SemaphoreSlim _guessLock = new SemaphoreSlim(1, 1); + private Logger _log { get; } public IGuild guild { get; } public ITextChannel channel { get; } @@ -33,6 +36,7 @@ namespace NadekoBot.Modules.Games.Trivia public TriviaGame(IGuild guild, ITextChannel channel, bool showHints, int winReq = 10) { + _log = LogManager.GetCurrentClassLogger(); ShowHints = showHints; this.guild = guild; this.channel = channel; @@ -51,13 +55,13 @@ namespace NadekoBot.Modules.Games.Trivia CurrentQuestion = TriviaQuestionPool.Instance.GetRandomQuestion(oldQuestions); if (CurrentQuestion == null) { - await channel.SendMessageAsync($":exclamation: Failed loading a trivia question").ConfigureAwait(false); + try { await channel.SendMessageAsync($":exclamation: Failed loading a trivia question").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } await End().ConfigureAwait(false); return; } oldQuestions.Add(CurrentQuestion); //add it to exclusion list so it doesn't show up again //sendquestion - await channel.SendMessageAsync($":question: **{CurrentQuestion.Question}**").ConfigureAwait(false); + try { await channel.SendMessageAsync($":question: **{CurrentQuestion.Question}**").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } //receive messages NadekoBot.Client.MessageReceived += PotentialGuess; @@ -70,7 +74,7 @@ namespace NadekoBot.Modules.Games.Trivia //hint await Task.Delay(HintTimeoutMiliseconds, token).ConfigureAwait(false); if (ShowHints) - await channel.SendMessageAsync($":exclamation:**Hint:** {CurrentQuestion.GetHint()}").ConfigureAwait(false); + try { await channel.SendMessageAsync($":exclamation:**Hint:** {CurrentQuestion.GetHint()}").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } //timeout await Task.Delay(QuestionDurationMiliseconds - HintTimeoutMiliseconds, token).ConfigureAwait(false); @@ -79,7 +83,7 @@ namespace NadekoBot.Modules.Games.Trivia catch (TaskCanceledException) { } //means someone guessed the answer GameActive = false; if (!triviaCancelSource.IsCancellationRequested) - await channel.SendMessageAsync($":clock2: :question: **Time's up!** The correct answer was **{CurrentQuestion.Answer}**").ConfigureAwait(false); + try { await channel.SendMessageAsync($":clock2: :question: **Time's up!** The correct answer was **{CurrentQuestion.Answer}**").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } NadekoBot.Client.MessageReceived -= PotentialGuess; // load next question if game is still running await Task.Delay(2000).ConfigureAwait(false); @@ -96,7 +100,7 @@ namespace NadekoBot.Modules.Games.Trivia public async Task StopGame() { if (!ShouldStopGame) - await channel.SendMessageAsync(":exclamation: Trivia will stop after this question.").ConfigureAwait(false); + try { await channel.SendMessageAsync(":exclamation: Trivia will stop after this question.").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } ShouldStopGame = true; } @@ -128,13 +132,13 @@ namespace NadekoBot.Modules.Games.Trivia finally { _guessLock.Release(); } if (!guess) return; triviaCancelSource.Cancel(); - await channel.SendMessageAsync($"☑️ {guildUser.Mention} guessed it! The answer was: **{CurrentQuestion.Answer}**").ConfigureAwait(false); + try { await channel.SendMessageAsync($"☑️ {guildUser.Mention} guessed it! The answer was: **{CurrentQuestion.Answer}**").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } if (Users[guildUser] != WinRequirement) return; ShouldStopGame = true; await channel.SendMessageAsync($":exclamation: We have a winner! It's {guildUser.Mention}.").ConfigureAwait(false); } - catch { } - }); + catch (Exception ex) { _log.Warn(ex); } + }); return Task.CompletedTask; } diff --git a/src/NadekoBot/Modules/Music/Music.cs b/src/NadekoBot/Modules/Music/Music.cs index a3f94b79..5cc2eb80 100644 --- a/src/NadekoBot/Modules/Music/Music.cs +++ b/src/NadekoBot/Modules/Music/Music.cs @@ -574,19 +574,19 @@ namespace NadekoBot.Modules.Music await channel.SendMessageAsync("`Can't find playlist with that ID`").ConfigureAwait(false); return; } - - var msg = await channel.SendMessageAsync($"`Attempting to load {mpl.Songs.Count} songs...`").ConfigureAwait(false); + IUserMessage msg = null; + try { msg = await channel.SendMessageAsync($"`Attempting to load {mpl.Songs.Count} songs...`").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } foreach (var item in mpl.Songs) { + var usr = (IGuildUser)umsg.Author; try { - var usr = (IGuildUser)umsg.Author; await QueueSong(usr, channel, usr.VoiceChannel, item.Query, true, item.ProviderType).ConfigureAwait(false); } catch { break; } } - - await msg.ModifyAsync(m => m.Content = $"`Done loading playlist {mpl.Name}.`").ConfigureAwait(false); + if (msg != null) + await msg.ModifyAsync(m => m.Content = $"`Done loading playlist {mpl.Name}.`").ConfigureAwait(false); } [NadekoCommand, Usage, Description, Aliases] @@ -769,16 +769,13 @@ namespace NadekoBot.Modules.Music await lastFinishedMessage.DeleteAsync().ConfigureAwait(false); if (playingMessage != null) await playingMessage.DeleteAsync().ConfigureAwait(false); - lastFinishedMessage = await textCh.SendMessageAsync($"🎵`Finished`{song.PrettyName}").ConfigureAwait(false); + try { lastFinishedMessage = await textCh.SendMessageAsync($"🎵`Finished`{song.PrettyName}").ConfigureAwait(false); } catch { } if (mp.Autoplay && mp.Playlist.Count == 0 && song.SongInfo.Provider == "YouTube") { await QueueSong(queuer.Guild.GetCurrentUser(), textCh, voiceCh, (await NadekoBot.Google.GetRelatedVideosAsync(song.SongInfo.Query, 4)).ToList().Shuffle().FirstOrDefault(), silent, musicType).ConfigureAwait(false); } } - catch (Exception e) - { - Console.WriteLine(e); - } + catch { } } }; mp.OnStarted += async (s, song) => @@ -789,13 +786,8 @@ namespace NadekoBot.Modules.Music if (sender == null) return; - try - { - var msgTxt = $"🎵`Playing`{song.PrettyName} `Vol: {(int)(sender.Volume * 100)}%`"; - playingMessage = await textCh.SendMessageAsync(msgTxt).ConfigureAwait(false); - } - catch { } + try { playingMessage = await textCh.SendMessageAsync(msgTxt).ConfigureAwait(false); } catch { } } }; return mp; @@ -810,23 +802,25 @@ namespace NadekoBot.Modules.Music } catch (PlaylistFullException) { - await textCh.SendMessageAsync($"🎵 `Queue is full at {musicPlayer.MaxQueueSize}/{musicPlayer.MaxQueueSize}.` "); + try { await textCh.SendMessageAsync($"🎵 `Queue is full at {musicPlayer.MaxQueueSize}/{musicPlayer.MaxQueueSize}.` "); } catch { } throw; } if (!silent) { - var queuedMessage = await textCh.SendMessageAsync($"🎵`Queued`{resolvedSong.PrettyName} **at** `#{musicPlayer.Playlist.Count + 1}`").ConfigureAwait(false); -#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed - Task.Run(async () => + try { - await Task.Delay(10000).ConfigureAwait(false); - try + var queuedMessage = await textCh.SendMessageAsync($"🎵`Queued`{resolvedSong.PrettyName} **at** `#{musicPlayer.Playlist.Count + 1}`").ConfigureAwait(false); + var t = Task.Run(async () => { - await queuedMessage.DeleteAsync().ConfigureAwait(false); - } - catch { } - }).ConfigureAwait(false); -#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed + await Task.Delay(10000).ConfigureAwait(false); + try + { + await queuedMessage.DeleteAsync().ConfigureAwait(false); + } + catch { } + }).ConfigureAwait(false); + } + catch { } // if queued message sending fails, don't attempt to delete it } } } diff --git a/src/NadekoBot/Modules/Permissions/Commands/BlacklistCommands.cs b/src/NadekoBot/Modules/Permissions/Commands/BlacklistCommands.cs index 843347e0..a53964ed 100644 --- a/src/NadekoBot/Modules/Permissions/Commands/BlacklistCommands.cs +++ b/src/NadekoBot/Modules/Permissions/Commands/BlacklistCommands.cs @@ -40,6 +40,11 @@ namespace NadekoBot.Modules.Permissions public Task UserBlacklist(IUserMessage imsg, AddRemove action, ulong id) => Blacklist(imsg, action, id, BlacklistType.User); + [NadekoCommand, Usage, Description, Aliases] + [OwnerOnly] + public Task UserBlacklist(IUserMessage imsg, AddRemove action, IUser usr) + => Blacklist(imsg, action, usr.Id, BlacklistType.User); + [NadekoCommand, Usage, Description, Aliases] [OwnerOnly] public Task ChannelBlacklist(IUserMessage imsg, AddRemove action, ulong id) @@ -50,6 +55,11 @@ namespace NadekoBot.Modules.Permissions public Task ServerBlacklist(IUserMessage imsg, AddRemove action, ulong id) => Blacklist(imsg, action, id, BlacklistType.Server); + [NadekoCommand, Usage, Description, Aliases] + [OwnerOnly] + public Task ServerBlacklist(IUserMessage imsg, AddRemove action, IGuild guild) + => Blacklist(imsg, action, guild.Id, BlacklistType.Server); + private async Task Blacklist(IUserMessage imsg, AddRemove action, ulong id, BlacklistType type) { var channel = imsg.Channel; diff --git a/src/NadekoBot/Modules/Searches/Commands/OsuCommands.cs b/src/NadekoBot/Modules/Searches/Commands/OsuCommands.cs index d9bcbd39..0f02a9e1 100644 --- a/src/NadekoBot/Modules/Searches/Commands/OsuCommands.cs +++ b/src/NadekoBot/Modules/Searches/Commands/OsuCommands.cs @@ -47,8 +47,7 @@ namespace NadekoBot.Modules.Searches var res = await http.GetStreamAsync(new Uri($"http://lemmmy.pw/osusig/sig.php?uname={ usr }&flagshadow&xpbar&xpbarhex&pp=2&mode={m}")).ConfigureAwait(false); res.Position = 0; - await channel.SendFileAsync(res, $"{usr}.png").ConfigureAwait(false); - await channel.SendMessageAsync($"`Profile Link:`https://osu.ppy.sh/u/{Uri.EscapeDataString(usr)}\n`Image provided by https://lemmmy.pw/osusig`").ConfigureAwait(false); + await channel.SendFileAsync(res, $"{usr}.png", $"`Profile Link:`https://osu.ppy.sh/u/{Uri.EscapeDataString(usr)}\n`Image provided by https://lemmmy.pw/osusig`").ConfigureAwait(false); } catch (Exception ex) { diff --git a/src/NadekoBot/Modules/Searches/Commands/StreamNotificationCommands.cs b/src/NadekoBot/Modules/Searches/Commands/StreamNotificationCommands.cs index 3aa6b5a4..b18bd349 100644 --- a/src/NadekoBot/Modules/Searches/Commands/StreamNotificationCommands.cs +++ b/src/NadekoBot/Modules/Searches/Commands/StreamNotificationCommands.cs @@ -68,9 +68,9 @@ namespace NadekoBot.Modules.Searches msg += $"\n`Here is the Link:`【 http://www.twitch.tv/{stream.Username}/ 】"; else if (stream.Type == FollowedStream.FollowedStreamType.Beam) msg += $"\n`Here is the Link:`【 http://www.beam.pro/{stream.Username}/ 】"; - //else if (stream.Type == FollowedStream.FollowedStreamType.YoutubeGaming) - // msg += $"\n`Here is the Link:`【 not implemented yet - {stream.Username} 】"; - await channel.SendMessageAsync(msg).ConfigureAwait(false); + //else if (stream.Type == FollowedStream.FollowedStreamType.YoutubeGaming) + // msg += $"\n`Here is the Link:`【 not implemented yet - {stream.Username} 】"; + try { await channel.SendMessageAsync(msg).ConfigureAwait(false); } catch { } } } FirstPass = false; diff --git a/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs b/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs index dd4b3353..f9c3ef7b 100644 --- a/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs +++ b/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs @@ -59,8 +59,8 @@ namespace NadekoBot.Modules.Utility Text = text, }); await uow.CompleteAsync().ConfigureAwait(false); - await channel.SendMessageAsync("`Quote added.`").ConfigureAwait(false); } + await channel.SendMessageAsync("`Quote added.`").ConfigureAwait(false); } [NadekoCommand, Usage, Description, Aliases] @@ -73,21 +73,22 @@ namespace NadekoBot.Modules.Utility return; keyword = keyword.ToUpperInvariant(); - + string response; using (var uow = DbHandler.UnitOfWork()) { - var q = await uow.Quotes.GetRandomQuoteByKeywordAsync(channel.Guild.Id, keyword); + var q = await uow.Quotes.GetRandomQuoteByKeywordAsync(channel.Guild.Id, keyword).ConfigureAwait(false); if (q == null) { - await channel.SendMessageAsync("`No quotes found.`"); + response = "`No quotes found.`"; return; } uow.Quotes.Remove(q); - await uow.CompleteAsync(); + await uow.CompleteAsync().ConfigureAwait(false); + response = "`Deleted a random quote`"; } - await channel.SendMessageAsync("`Deleted a random quote.`"); + await channel.SendMessageAsync(response); } [NadekoCommand, Usage, Description, Aliases] diff --git a/src/NadekoBot/Modules/Utility/Commands/Remind.cs b/src/NadekoBot/Modules/Utility/Commands/Remind.cs index e01c8a78..67e297b2 100644 --- a/src/NadekoBot/Modules/Utility/Commands/Remind.cs +++ b/src/NadekoBot/Modules/Utility/Commands/Remind.cs @@ -5,6 +5,7 @@ using NadekoBot.Attributes; using NadekoBot.Services; using NadekoBot.Services.Database; using NadekoBot.Services.Database.Models; +using NLog; using System; using System.Collections.Generic; using System.Linq; @@ -31,9 +32,11 @@ namespace NadekoBot.Modules.Utility { "%user%", (r) => $"<@!{r.UserId}>" }, { "%target%", (r) => r.IsPrivate ? "Direct Message" : $"<#{r.ChannelId}>"} }; + private Logger _log { get; } public RemindCommands() { + _log = LogManager.GetCurrentClassLogger(); List reminders; using (var uow = DbHandler.UnitOfWork()) { @@ -52,7 +55,7 @@ namespace NadekoBot.Modules.Utility { var now = DateTime.Now; var twoMins = new TimeSpan(0, 2, 0); - TimeSpan time = r.When - now; + TimeSpan time = r.When - now; if (time.TotalMilliseconds > int.MaxValue) return; @@ -76,12 +79,8 @@ namespace NadekoBot.Modules.Utility replacements.Aggregate(RemindMessageFormat, (cur, replace) => cur.Replace(replace.Key, replace.Value(r))) ).ConfigureAwait(false); //it works trust me - - } - catch (Exception ex) - { - Console.WriteLine($"Timer error! {ex}"); } + catch (Exception ex) { _log.Warn(ex); } finally { using (var uow = DbHandler.UnitOfWork()) @@ -180,7 +179,7 @@ namespace NadekoBot.Modules.Utility await uow.CompleteAsync(); } - await channel.SendMessageAsync($"⏰ I will remind \"{(ch is ITextChannel ? ((ITextChannel)ch).Name : umsg.Author.Username)}\" to \"{message.ToString()}\" in {output}. ({time:d.M.yyyy.} at {time:HH:mm})").ConfigureAwait(false); + try { await channel.SendMessageAsync($"⏰ I will remind \"{(ch is ITextChannel ? ((ITextChannel)ch).Name : umsg.Author.Username)}\" to \"{message.ToString()}\" in {output}. ({time:d.M.yyyy.} at {time:HH:mm})").ConfigureAwait(false); } catch { } await StartReminder(rem); } diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index fd73691b..bb2e7c1d 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -1201,52 +1201,34 @@ ubl - Blacklists a mentioned user. + Either [add]s or [rem]oves a user specified by a mention or ID from a blacklist. - `;ubl [user_mention]` - - - uubl - - - Unblacklists a mentioned user. - - - `;uubl [user_mention]` + `;ubl add @SomeUser` or `;ubl rem 12312312313` cbl - Blacklists a mentioned channel (#general for example). + Either [add]s or [rem]oves a channel specified by an ID from a blacklist. - `;cbl #some_channel` - - - cubl - - - Unblacklists a mentioned channel (#general for example). - - - `;cubl #some_channel` + `;cbl rem 12312312312` sbl - Blacklists a server by a name or id (#general for example). + Either [add]s or [rem]oves a server specified by a Name or ID from a blacklist. - `;sbl [servername/serverid]` + `;sbl add 12312321312` or `;sbl rem SomeTrashServer` cmdcooldown cmdcd - Sets a cooldown per user for a command. Set 0 to clear. + Sets a cooldown per user for a command. Set 0 to clear. `;cmdcd "some cmd" 5` diff --git a/src/NadekoBot/Services/CurrencyHandler.cs b/src/NadekoBot/Services/CurrencyHandler.cs index e847c7cb..2c0128b3 100644 --- a/src/NadekoBot/Services/CurrencyHandler.cs +++ b/src/NadekoBot/Services/CurrencyHandler.cs @@ -33,7 +33,7 @@ namespace NadekoBot.Services var success = uow.Currency.TryUpdateState(authorId, -amount); if (!success) return false; - await uow.CompleteAsync(); + await uow.CompleteAsync().ConfigureAwait(false); } return true; @@ -44,7 +44,7 @@ namespace NadekoBot.Services await AddCurrencyAsync(author.Id, reason, amount); if (sendMessage) - await author.SendMessageAsync($"`You received:` {amount} {Gambling.CurrencySign}\n`Reason:` {reason}").ConfigureAwait(false); + try { await author.SendMessageAsync($"`You received:` {amount} {Gambling.CurrencySign}\n`Reason:` {reason}").ConfigureAwait(false); } catch { } } public static async Task AddCurrencyAsync(ulong receiverId, string reason, long amount) diff --git a/src/NadekoBot/TypeReaders/GuildTypeReader.cs b/src/NadekoBot/TypeReaders/GuildTypeReader.cs index 2f7bc19c..8863aa00 100644 --- a/src/NadekoBot/TypeReaders/GuildTypeReader.cs +++ b/src/NadekoBot/TypeReaders/GuildTypeReader.cs @@ -14,8 +14,9 @@ namespace NadekoBot.TypeReaders public override Task Read(IUserMessage context, string input) { input = input.Trim().ToLowerInvariant(); - var guild = NadekoBot.Client.GetGuilds().FirstOrDefault(g => g.Id.ToString().Trim().ToLowerInvariant() == input) ?? //by id - NadekoBot.Client.GetGuilds().FirstOrDefault(g => g.Name.Trim().ToLowerInvariant() == input);//by name + var guilds = NadekoBot.Client.GetGuilds(); + var guild = guilds.FirstOrDefault(g => g.Id.ToString().Trim().ToLowerInvariant() == input) ?? //by id + guilds.FirstOrDefault(g => g.Name.Trim().ToLowerInvariant() == input); //by name if (guild != null) return Task.FromResult(TypeReaderResult.FromSuccess(guild)); From 5b86b849918a7a10dd49c88a4225c2cdca7e1b8d Mon Sep 17 00:00:00 2001 From: Kwoth Date: Wed, 5 Oct 2016 07:02:01 +0200 Subject: [PATCH 32/74] Fixed compile error --- src/NadekoBot/Modules/Games/Commands/PollCommands.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NadekoBot/Modules/Games/Commands/PollCommands.cs b/src/NadekoBot/Modules/Games/Commands/PollCommands.cs index e641ee74..7df37330 100644 --- a/src/NadekoBot/Modules/Games/Commands/PollCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/PollCommands.cs @@ -128,7 +128,7 @@ namespace NadekoBot.Modules.Games return; if (participants.TryAdd(msg.Author, vote)) { - try { await (ch as ITextChannel).SendMessageAsync($"Thanks for voting **{msg.Author.Username}**.").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } + try { await (ch as ITextChannel).SendMessageAsync($"Thanks for voting **{msg.Author.Username}**.").ConfigureAwait(false); } catch { } } }); return Task.CompletedTask; From 4016974cef986c63a8a5c821e6cde3399afaa671 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Wed, 5 Oct 2016 07:06:46 +0200 Subject: [PATCH 33/74] Fixed typeadd --- src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs b/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs index d18621a7..7d33ae31 100644 --- a/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs @@ -194,6 +194,7 @@ namespace NadekoBot.Modules.Games Author = imsg.Author.Username, Text = text }); + await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync("Added new article for typing game.").ConfigureAwait(false); From ebd927fafdb19eb3839c105ec0907380b760d415 Mon Sep 17 00:00:00 2001 From: Nitix Date: Thu, 6 Oct 2016 01:29:52 +0200 Subject: [PATCH 34/74] Change gitignore to a better one --- .gitignore | 348 +- src/NadekoBot/project.lock.json | 9146 ---------------------------- src/tests/project.lock.json | 9842 ------------------------------- 3 files changed, 333 insertions(+), 19003 deletions(-) delete mode 100644 src/NadekoBot/project.lock.json delete mode 100644 src/tests/project.lock.json diff --git a/.gitignore b/.gitignore index df5ec176..30036293 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,85 @@ +#Manually added files + +src/NadekoBot/credentials.json +src/NadekoBot/data/NadekoBot.db +src/NadekoBot/musicdata + +# Created by https://www.gitignore.io/api/visualstudio,visualstudiocode,windows,linux,macos + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json + + +### Windows ### +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + +# Windows shortcuts +*.lnk + + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + + +### macOS ### +*.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + + +### VisualStudio ### ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. @@ -6,19 +88,154 @@ *.user *.userosscache *.sln.docstates -*.pfx -.vs -obj/ # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs -**/src/NadekoBot/bin -Tests/bin -src/NadekoBot/credentials.json -src/NadekoBot/project.lock.json -src/NadekoBot/data/NadekoBot.db -src/NadekoBot/musicdata -src/NadekoBot/project.lock.json + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +project.fragment.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ # NuGet Packages *.nupkg @@ -28,8 +245,109 @@ src/NadekoBot/project.lock.json !**/packages/build/ # Uncomment if necessary however generally it will be regenerated when needed #!**/packages/repositories.config -NadekoBot.sln.iml -.idea/workspace.xml -.idea/vcs.xml -.idea/modules.xml -src/tests/bin \ No newline at end of file +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/ + +### VisualStudio Patch ### +build/ \ No newline at end of file diff --git a/src/NadekoBot/project.lock.json b/src/NadekoBot/project.lock.json deleted file mode 100644 index 76da98a3..00000000 --- a/src/NadekoBot/project.lock.json +++ /dev/null @@ -1,9146 +0,0 @@ -{ - "locked": false, - "version": 2, - "targets": { - ".NETCoreApp,Version=v1.0": { - "CoreCLR-NCalc/2.1.0": { - "type": "package", - "dependencies": { - "NETStandard.Library": "1.6.0", - "System.Diagnostics.Debug": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Serialization.Xml": "4.1.1", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading.Thread": "4.0.0" - }, - "compile": { - "lib/netstandard1.3/NCalc.dll": {} - }, - "runtime": { - "lib/netstandard1.3/NCalc.dll": {} - } - }, - "Google.Apis/1.16.0": { - "type": "package", - "dependencies": { - "Google.Apis.Core": "1.16.0", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.IO": "4.1.0", - "System.IO.Compression": "4.1.0", - "System.Linq": "4.1.0", - "System.Net.Http": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Reflection": "4.1.0", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/Google.Apis.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Google.Apis.dll": {} - } - }, - "Google.Apis.Auth/1.15.0": { - "type": "package", - "dependencies": { - "Google.Apis.Core": "1.15.0", - "Newtonsoft.Json": "9.0.1", - "Portable.BouncyCastle": "1.8.1.1", - "System.Collections": "4.0.11", - "System.Console": "4.0.0", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Process": "4.1.0", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Linq": "4.1.0", - "System.Net.Http": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Net.Requests": "4.0.11", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/Google.Apis.Auth.PlatformServices.dll": {}, - "lib/netstandard1.3/Google.Apis.Auth.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Google.Apis.Auth.PlatformServices.dll": {}, - "lib/netstandard1.3/Google.Apis.Auth.dll": {} - } - }, - "Google.Apis.Core/1.16.0": { - "type": "package", - "dependencies": { - "Newtonsoft.Json": "9.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.Net.Http": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/Google.Apis.Core.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Google.Apis.Core.dll": {} - } - }, - "Google.Apis.Customsearch.v1/1.16.0.466": { - "type": "package", - "dependencies": { - "Google.Apis": "1.16.0" - }, - "compile": { - "lib/netstandard1.3/Google.Apis.Customsearch.v1.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Google.Apis.Customsearch.v1.dll": {} - } - }, - "Google.Apis.Urlshortener.v1/1.15.0.138": { - "type": "package", - "dependencies": { - "Google.Apis": "1.15.0", - "Google.Apis.Auth": "1.15.0" - }, - "compile": { - "lib/netstandard1.3/Google.Apis.Urlshortener.v1.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Google.Apis.Urlshortener.v1.dll": {} - } - }, - "Google.Apis.YouTube.v3/1.15.0.582": { - "type": "package", - "dependencies": { - "Google.Apis": "1.15.0", - "Google.Apis.Auth": "1.15.0" - }, - "compile": { - "lib/netstandard1.3/Google.Apis.YouTube.v3.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Google.Apis.YouTube.v3.dll": {} - } - }, - "ImageProcessorCore/1.0.0-alpha1045": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tools": "4.0.1", - "System.IO": "4.1.0", - "System.IO.Compression": "4.1.0", - "System.Linq": "4.1.0", - "System.Numerics.Vectors": "4.1.1", - "System.ObjectModel": "4.0.12", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime.CompilerServices.Unsafe": "4.0.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.Numerics": "4.0.1", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Tasks.Parallel": "4.0.1" - }, - "compile": { - "lib/netstandard1.1/ImageProcessorCore.dll": {} - }, - "runtime": { - "lib/netstandard1.1/ImageProcessorCore.dll": {} - } - }, - "Libuv/1.9.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1" - }, - "runtimeTargets": { - "runtimes/debian-x64/native/libuv.so": { - "assetType": "native", - "rid": "debian-x64" - }, - "runtimes/fedora-x64/native/libuv.so": { - "assetType": "native", - "rid": "fedora-x64" - }, - "runtimes/opensuse-x64/native/libuv.so": { - "assetType": "native", - "rid": "opensuse-x64" - }, - "runtimes/osx/native/libuv.dylib": { - "assetType": "native", - "rid": "osx" - }, - "runtimes/rhel-x64/native/libuv.so": { - "assetType": "native", - "rid": "rhel-x64" - }, - "runtimes/win7-arm/native/libuv.dll": { - "assetType": "native", - "rid": "win7-arm" - }, - "runtimes/win7-x64/native/libuv.dll": { - "assetType": "native", - "rid": "win7-x64" - }, - "runtimes/win7-x86/native/libuv.dll": { - "assetType": "native", - "rid": "win7-x86" - } - } - }, - "Microsoft.AspNetCore.Hosting.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Hosting.Server.Abstractions": "1.0.0", - "Microsoft.AspNetCore.Http.Abstractions": "1.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "1.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", - "Microsoft.Extensions.FileProviders.Abstractions": "1.0.0", - "Microsoft.Extensions.Logging.Abstractions": "1.0.0" - }, - "compile": { - "lib/netstandard1.3/Microsoft.AspNetCore.Hosting.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.AspNetCore.Hosting.Abstractions.dll": {} - } - }, - "Microsoft.AspNetCore.Hosting.Server.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "1.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "1.0.0" - }, - "compile": { - "lib/netstandard1.3/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll": {} - } - }, - "Microsoft.AspNetCore.Http.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "1.0.0", - "System.Globalization.Extensions": "4.0.1", - "System.Linq.Expressions": "4.1.0", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encodings.Web": "4.0.0" - }, - "compile": { - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Abstractions.dll": {} - } - }, - "Microsoft.AspNetCore.Http.Features/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "1.0.0", - "System.Collections": "4.0.11", - "System.ComponentModel": "4.0.1", - "System.Linq": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Net.WebSockets": "4.0.0", - "System.Runtime.Extensions": "4.1.0", - "System.Security.Claims": "4.0.1", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Security.Principal": "4.0.1" - }, - "compile": { - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Features.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Features.dll": {} - } - }, - "Microsoft.CodeAnalysis.Analyzers/1.1.0": { - "type": "package" - }, - "Microsoft.CodeAnalysis.Common/1.3.0": { - "type": "package", - "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "1.1.0", - "System.AppContext": "4.1.0", - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Collections.Immutable": "1.2.0", - "System.Console": "4.0.0", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.FileVersionInfo": "4.0.0", - "System.Diagnostics.StackTrace": "4.0.1", - "System.Diagnostics.Tools": "4.0.1", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Metadata": "1.3.0", - "System.Reflection.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.CodePages": "4.0.1", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Tasks.Parallel": "4.0.1", - "System.Threading.Thread": "4.0.0", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XDocument": "4.0.11", - "System.Xml.XPath.XDocument": "4.0.1", - "System.Xml.XmlDocument": "4.0.1" - }, - "compile": { - "lib/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.CodeAnalysis.dll": {} - } - }, - "Microsoft.CodeAnalysis.CSharp/1.3.0": { - "type": "package", - "dependencies": { - "Microsoft.CodeAnalysis.Common": "[1.3.0]" - }, - "compile": { - "lib/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.dll": {} - } - }, - "Microsoft.CodeAnalysis.VisualBasic/1.3.0": { - "type": "package", - "dependencies": { - "Microsoft.CodeAnalysis.Common": "1.3.0" - }, - "compile": { - "lib/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.CodeAnalysis.VisualBasic.dll": {} - } - }, - "Microsoft.CSharp/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.0/Microsoft.CSharp.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.CSharp.dll": {} - } - }, - "Microsoft.Data.Sqlite/1.0.0": { - "type": "package", - "dependencies": { - "SQLite": "3.12.2", - "System.AppContext": "4.1.0", - "System.Data.Common": "4.1.0", - "System.Diagnostics.Debug": "4.0.11", - "System.Linq": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/Microsoft.Data.Sqlite.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.Data.Sqlite.dll": {} - } - }, - "Microsoft.EntityFrameworkCore/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Caching.Memory": "1.0.0", - "Microsoft.Extensions.DependencyInjection": "1.0.0", - "Microsoft.Extensions.Logging": "1.0.0", - "Remotion.Linq": "2.1.1", - "System.Collections.Concurrent": "4.0.12", - "System.Collections.Immutable": "1.2.0", - "System.ComponentModel.Annotations": "4.1.0", - "System.Interactive.Async": "3.0.0", - "System.Linq.Queryable": "4.0.1", - "System.ObjectModel": "4.0.12", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0" - }, - "compile": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.dll": {} - } - }, - "Microsoft.EntityFrameworkCore.Design/1.0.0-preview2-final": { - "type": "package", - "dependencies": { - "Microsoft.EntityFrameworkCore.Design.Core": "1.0.0-preview2-final", - "Microsoft.Extensions.CommandLineUtils": "1.0.0", - "Microsoft.NETCore.App": "1.0.0" - }, - "compile": { - "lib/netcoreapp1.0/Microsoft.EntityFrameworkCore.Design.dll": {} - }, - "runtime": { - "lib/netcoreapp1.0/Microsoft.EntityFrameworkCore.Design.dll": {} - } - }, - "Microsoft.EntityFrameworkCore.Design.Core/1.0.0-preview2-final": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Hosting.Abstractions": "1.0.0", - "Microsoft.EntityFrameworkCore.Relational.Design": "1.0.0", - "System.AppContext": "4.1.0", - "System.Collections.NonGeneric": "4.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1" - }, - "compile": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Design.Core.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Design.Core.dll": {} - } - }, - "Microsoft.EntityFrameworkCore.Relational/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.CSharp": "4.0.1", - "Microsoft.EntityFrameworkCore": "1.0.0", - "System.Data.Common": "4.1.0", - "System.Diagnostics.DiagnosticSource": "4.0.0", - "System.Text.RegularExpressions": "4.1.0" - }, - "compile": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Relational.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Relational.dll": {} - } - }, - "Microsoft.EntityFrameworkCore.Relational.Design/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.EntityFrameworkCore.Relational": "1.0.0" - }, - "compile": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Relational.Design.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Relational.Design.dll": {} - } - }, - "Microsoft.EntityFrameworkCore.Sqlite/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Data.Sqlite": "1.0.0", - "Microsoft.EntityFrameworkCore.Relational": "1.0.0", - "System.IO.FileSystem": "4.0.1" - }, - "compile": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Sqlite.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Sqlite.dll": {} - } - }, - "Microsoft.Extensions.Caching.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "1.0.0", - "System.Collections": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.Caching.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.Caching.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.Caching.Memory/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "1.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", - "Microsoft.Extensions.Options": "1.0.0", - "System.Linq": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/Microsoft.Extensions.Caching.Memory.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.Extensions.Caching.Memory.dll": {} - } - }, - "Microsoft.Extensions.CommandLineUtils/1.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Console": "4.0.0", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1" - }, - "compile": { - "lib/netstandard1.3/Microsoft.Extensions.CommandLineUtils.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.Extensions.CommandLineUtils.dll": {} - } - }, - "Microsoft.Extensions.Configuration.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "1.0.0", - "System.Linq": "4.1.0" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.Configuration.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.Configuration.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.DependencyInjection/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.1/Microsoft.Extensions.DependencyInjection.dll": {} - }, - "runtime": { - "lib/netstandard1.1/Microsoft.Extensions.DependencyInjection.dll": {} - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "System.ComponentModel": "4.0.1", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.FileProviders.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "1.0.0", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.Logging/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", - "Microsoft.Extensions.Logging.Abstractions": "1.0.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.1/Microsoft.Extensions.Logging.dll": {} - }, - "runtime": { - "lib/netstandard1.1/Microsoft.Extensions.Logging.dll": {} - } - }, - "Microsoft.Extensions.Logging.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0" - }, - "compile": { - "lib/netstandard1.1/Microsoft.Extensions.Logging.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.1/Microsoft.Extensions.Logging.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.Options/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", - "Microsoft.Extensions.Primitives": "1.0.0", - "System.ComponentModel": "4.0.1", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.Options.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.Options.dll": {} - } - }, - "Microsoft.Extensions.PlatformAbstractions/1.0.0": { - "type": "package", - "dependencies": { - "System.AppContext": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "lib/netstandard1.3/Microsoft.Extensions.PlatformAbstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.Extensions.PlatformAbstractions.dll": {} - } - }, - "Microsoft.Extensions.Primitives/1.0.0": { - "type": "package", - "dependencies": { - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.Primitives.dll": {} - } - }, - "Microsoft.NETCore.App/1.0.0": { - "type": "package", - "dependencies": { - "Libuv": "1.9.0", - "Microsoft.CSharp": "4.0.1", - "Microsoft.CodeAnalysis.CSharp": "1.3.0", - "Microsoft.CodeAnalysis.VisualBasic": "1.3.0", - "Microsoft.NETCore.DotNetHostPolicy": "1.0.1", - "Microsoft.NETCore.Runtime.CoreCLR": "1.0.2", - "Microsoft.VisualBasic": "10.0.1", - "NETStandard.Library": "1.6.0", - "System.Buffers": "4.0.0", - "System.Collections.Immutable": "1.2.0", - "System.ComponentModel": "4.0.1", - "System.ComponentModel.Annotations": "4.1.0", - "System.Diagnostics.DiagnosticSource": "4.0.0", - "System.Diagnostics.Process": "4.1.0", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization.Extensions": "4.0.1", - "System.IO.FileSystem.Watcher": "4.0.0", - "System.IO.MemoryMappedFiles": "4.0.0", - "System.IO.UnmanagedMemoryStream": "4.0.1", - "System.Linq.Expressions": "4.1.0", - "System.Linq.Parallel": "4.0.1", - "System.Linq.Queryable": "4.0.1", - "System.Net.NameResolution": "4.0.0", - "System.Net.Requests": "4.0.11", - "System.Net.Security": "4.0.0", - "System.Net.WebHeaderCollection": "4.0.1", - "System.Numerics.Vectors": "4.1.1", - "System.Reflection.DispatchProxy": "4.0.1", - "System.Reflection.Metadata": "1.3.0", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.Reader": "4.0.0", - "System.Runtime.Loader": "4.0.0", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Threading.Tasks.Dataflow": "4.6.0", - "System.Threading.Tasks.Extensions": "4.0.0", - "System.Threading.Tasks.Parallel": "4.0.1", - "System.Threading.Thread": "4.0.0", - "System.Threading.ThreadPool": "4.0.10" - }, - "compile": { - "lib/netcoreapp1.0/_._": {} - }, - "runtime": { - "lib/netcoreapp1.0/_._": {} - } - }, - "Microsoft.NETCore.DotNetHost/1.0.1": { - "type": "package" - }, - "Microsoft.NETCore.DotNetHostPolicy/1.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.DotNetHostResolver": "1.0.1" - } - }, - "Microsoft.NETCore.DotNetHostResolver/1.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.DotNetHost": "1.0.1" - } - }, - "Microsoft.NETCore.Jit/1.0.2": { - "type": "package" - }, - "Microsoft.NETCore.Platforms/1.0.1": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "Microsoft.NETCore.Runtime.CoreCLR/1.0.2": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Jit": "1.0.2", - "Microsoft.NETCore.Windows.ApiSets": "1.0.1" - } - }, - "Microsoft.NETCore.Targets/1.0.1": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "Microsoft.NETCore.Windows.ApiSets/1.0.1": { - "type": "package" - }, - "Microsoft.VisualBasic/10.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.1/Microsoft.VisualBasic.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.VisualBasic.dll": {} - } - }, - "Microsoft.Win32.Primitives/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/Microsoft.Win32.Primitives.dll": {} - } - }, - "Microsoft.Win32.Registry/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/Microsoft.Win32.Registry.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "NETStandard.Library/1.6.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "System.AppContext": "4.1.0", - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Console": "4.0.0", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tools": "4.0.1", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Globalization.Calendars": "4.0.1", - "System.IO": "4.1.0", - "System.IO.Compression": "4.1.0", - "System.IO.Compression.ZipFile": "4.0.1", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Net.Http": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Net.Sockets": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.0.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Timer": "4.0.1", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XDocument": "4.0.11" - } - }, - "Newtonsoft.Json/9.0.1": { - "type": "package", - "dependencies": { - "Microsoft.CSharp": "4.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Serialization.Primitives": "4.1.1", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XDocument": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/Newtonsoft.Json.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Newtonsoft.Json.dll": {} - } - }, - "NLog/4.4.0-betav15": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.PlatformAbstractions": "1.0.0", - "NETStandard.Library": "1.6.0", - "System.Collections.NonGeneric": "4.0.1", - "System.ComponentModel.TypeConverter": "4.1.0", - "System.Data.Common": "4.1.0", - "System.Diagnostics.Contracts": "4.0.1", - "System.Diagnostics.StackTrace": "4.0.1", - "System.Diagnostics.TraceSource": "4.0.0", - "System.IO.FileSystem.Watcher": "4.0.0", - "System.Net.NameResolution": "4.0.0", - "System.Net.Requests": "4.0.11", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Runtime.Serialization.Primitives": "4.1.1", - "System.Threading.Thread": "4.0.0", - "System.Threading.ThreadPool": "4.0.10", - "System.Xml.XmlDocument": "4.0.1" - }, - "compile": { - "lib/netstandard1.5/NLog.dll": {} - }, - "runtime": { - "lib/netstandard1.5/NLog.dll": {} - } - }, - "Portable.BouncyCastle/1.8.1.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/crypto.dll": {} - }, - "runtime": { - "lib/netstandard1.3/crypto.dll": {} - } - }, - "Remotion.Linq/2.1.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Linq.Queryable": "4.0.1", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/Remotion.Linq.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Remotion.Linq.dll": {} - } - }, - "runtime.native.System/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.IO.Compression/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Net.Http/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Net.Security/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Security.Cryptography/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "SQLite/3.12.2": { - "type": "package", - "dependencies": { - "SQLite.Native": "3.12.2" - } - }, - "SQLite.Native/3.12.2": { - "type": "package", - "runtimeTargets": { - "runtimes/linux-x64/native/libsqlite3.so": { - "assetType": "native", - "rid": "linux-x64" - }, - "runtimes/osx-x64/native/libsqlite3.dylib": { - "assetType": "native", - "rid": "osx-x64" - }, - "runtimes/win7-x64/native/sqlite3.dll": { - "assetType": "native", - "rid": "win7-x64" - }, - "runtimes/win7-x86/native/sqlite3.dll": { - "assetType": "native", - "rid": "win7-x86" - } - } - }, - "System.AppContext/4.1.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.6/System.AppContext.dll": {} - }, - "runtime": { - "lib/netstandard1.6/System.AppContext.dll": {} - } - }, - "System.Buffers/4.0.0": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.1/System.Buffers.dll": {} - }, - "runtime": { - "lib/netstandard1.1/System.Buffers.dll": {} - } - }, - "System.Collections/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Collections.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Collections.Concurrent/4.0.12": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Collections.Concurrent.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Collections.Concurrent.dll": {} - } - }, - "System.Collections.Immutable/1.2.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/System.Collections.Immutable.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Collections.Immutable.dll": {} - } - }, - "System.Collections.NonGeneric/4.0.1": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Collections.NonGeneric.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Collections.NonGeneric.dll": {} - } - }, - "System.Collections.Specialized/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections.NonGeneric": "4.0.1", - "System.Globalization": "4.0.11", - "System.Globalization.Extensions": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Collections.Specialized.dll": {} - } - }, - "System.ComponentModel/4.0.1": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.ComponentModel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.ComponentModel.dll": {} - } - }, - "System.ComponentModel.Annotations/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.ComponentModel": "4.0.1", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.4/System.ComponentModel.Annotations.dll": {} - }, - "runtime": { - "lib/netstandard1.4/System.ComponentModel.Annotations.dll": {} - } - }, - "System.ComponentModel.Primitives/4.1.0": { - "type": "package", - "dependencies": { - "System.ComponentModel": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.ComponentModel.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.ComponentModel.Primitives.dll": {} - } - }, - "System.ComponentModel.TypeConverter/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Collections.NonGeneric": "4.0.1", - "System.Collections.Specialized": "4.0.1", - "System.ComponentModel": "4.0.1", - "System.ComponentModel.Primitives": "4.1.0", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.5/System.ComponentModel.TypeConverter.dll": {} - }, - "runtime": { - "lib/netstandard1.5/System.ComponentModel.TypeConverter.dll": {} - } - }, - "System.Console/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.Runtime": "4.1.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Console.dll": {} - } - }, - "System.Data.Common/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.2/System.Data.Common.dll": {} - }, - "runtime": { - "lib/netstandard1.2/System.Data.Common.dll": {} - } - }, - "System.Diagnostics.Contracts/4.0.1": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Diagnostics.Contracts.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Diagnostics.Contracts.dll": {} - } - }, - "System.Diagnostics.Debug/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Diagnostics.Debug.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Diagnostics.DiagnosticSource/4.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": {} - } - }, - "System.Diagnostics.FileVersionInfo/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Reflection.Metadata": "1.3.0", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Diagnostics.Process/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "Microsoft.Win32.Registry": "4.0.0", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Thread": "4.0.0", - "System.Threading.ThreadPool": "4.0.10", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.4/System.Diagnostics.Process.dll": {} - }, - "runtimeTargets": { - "runtimes/linux/lib/netstandard1.4/System.Diagnostics.Process.dll": { - "assetType": "runtime", - "rid": "linux" - }, - "runtimes/osx/lib/netstandard1.4/System.Diagnostics.Process.dll": { - "assetType": "runtime", - "rid": "osx" - }, - "runtimes/win/lib/netstandard1.4/System.Diagnostics.Process.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Diagnostics.StackTrace/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections.Immutable": "1.2.0", - "System.IO.FileSystem": "4.0.1", - "System.Reflection": "4.1.0", - "System.Reflection.Metadata": "1.3.0", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Diagnostics.StackTrace.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Diagnostics.StackTrace.dll": {} - } - }, - "System.Diagnostics.Tools/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Diagnostics.Tools.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Diagnostics.TraceSource/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Diagnostics.TraceSource.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Diagnostics.TraceSource.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Diagnostics.TraceSource.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Diagnostics.Tracing/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Diagnostics.Tracing.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wpa81/_._": {} - } - }, - "System.Dynamic.Runtime/4.0.11": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Dynamic.Runtime.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Dynamic.Runtime.dll": {} - } - }, - "System.Globalization/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Globalization.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Globalization.Calendars/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Globalization": "4.0.11", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Globalization.Calendars.dll": {} - } - }, - "System.Globalization.Extensions/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Globalization.Extensions.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Interactive.Async/3.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/System.Interactive.Async.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Interactive.Async.dll": {} - } - }, - "System.IO/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.5/System.IO.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.IO.Compression/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "runtime.native.System": "4.0.0", - "runtime.native.System.IO.Compression": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.Compression.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wpa81/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.IO.Compression.ZipFile/4.0.1": { - "type": "package", - "dependencies": { - "System.Buffers": "4.0.0", - "System.IO": "4.1.0", - "System.IO.Compression": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.IO.Compression.ZipFile.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.IO.Compression.ZipFile.dll": {} - } - }, - "System.IO.FileSystem/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Text.Encoding": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.dll": {} - } - }, - "System.IO.FileSystem.Primitives/4.0.1": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} - } - }, - "System.IO.FileSystem.Watcher/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "System.Collections": "4.0.11", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Overlapped": "4.0.1", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Thread": "4.0.0", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.Watcher.dll": {} - }, - "runtimeTargets": { - "runtimes/linux/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll": { - "assetType": "runtime", - "rid": "linux" - }, - "runtimes/osx/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll": { - "assetType": "runtime", - "rid": "osx" - }, - "runtimes/win/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.IO.MemoryMappedFiles/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.IO.UnmanagedMemoryStream": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.MemoryMappedFiles.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.IO.MemoryMappedFiles.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.IO.MemoryMappedFiles.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.IO.UnmanagedMemoryStream/4.0.1": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll": {} - } - }, - "System.Linq/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.6/System.Linq.dll": {} - }, - "runtime": { - "lib/netstandard1.6/System.Linq.dll": {} - } - }, - "System.Linq.Expressions/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Emit.Lightweight": "4.0.1", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.6/System.Linq.Expressions.dll": {} - }, - "runtime": { - "lib/netstandard1.6/System.Linq.Expressions.dll": {} - } - }, - "System.Linq.Parallel/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.1/System.Linq.Parallel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Linq.Parallel.dll": {} - } - }, - "System.Linq.Queryable/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Linq.Queryable.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Linq.Queryable.dll": {} - } - }, - "System.Net.Http/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.DiagnosticSource": "4.0.0", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Globalization.Extensions": "4.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.Net.Primitives": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.OpenSsl": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "runtime.native.System": "4.0.0", - "runtime.native.System.Net.Http": "4.0.1", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.Http.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wpa81/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Net.Http.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Net.NameResolution/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Net.Primitives": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Principal.Windows": "4.0.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.NameResolution.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Net.NameResolution.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Net.NameResolution.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Net.Primitives/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/System.Net.Primitives.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Net.Requests/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Net.Http": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Net.WebHeaderCollection": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Net.Requests.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Net.Requests.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Net.Requests.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Net.Security/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Globalization.Extensions": "4.0.1", - "System.IO": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Claims": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.OpenSsl": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Security.Principal": "4.0.1", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Threading.ThreadPool": "4.0.10", - "runtime.native.System": "4.0.0", - "runtime.native.System.Net.Security": "4.0.1", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.Security.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Net.Security.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Net.Security.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Net.Sockets/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Runtime": "4.1.0", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Net.Sockets.dll": {} - } - }, - "System.Net.WebHeaderCollection/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.WebHeaderCollection.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Net.WebHeaderCollection.dll": {} - } - }, - "System.Net.WebSockets/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Win32.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Net.WebSockets.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Net.WebSockets.dll": {} - } - }, - "System.Net.WebSockets.Client/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Net.Primitives": "4.0.11", - "System.Net.WebHeaderCollection": "4.0.1", - "System.Net.WebSockets": "4.0.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Net.WebSockets.Client.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Net.WebSockets.Client.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Net.WebSockets.Client.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Numerics.Vectors/4.1.1": { - "type": "package", - "dependencies": { - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Numerics.Vectors.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Numerics.Vectors.dll": {} - } - }, - "System.ObjectModel/4.0.12": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.ObjectModel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.ObjectModel.dll": {} - } - }, - "System.Private.DataContractSerialization/4.1.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Emit.Lightweight": "4.0.1", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Serialization.Primitives": "4.1.1", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XmlDocument": "4.0.1", - "System.Xml.XmlSerializer": "4.0.11" - }, - "compile": { - "ref/netstandard/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Private.DataContractSerialization.dll": {} - } - }, - "System.Reflection/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Reflection.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Reflection.DispatchProxy/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Reflection.DispatchProxy.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.DispatchProxy.dll": {} - } - }, - "System.Reflection.Emit/4.0.1": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.1/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.dll": {} - } - }, - "System.Reflection.Emit.ILGeneration/4.0.1": { - "type": "package", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll": {} - } - }, - "System.Reflection.Emit.Lightweight/4.0.1": { - "type": "package", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll": {} - } - }, - "System.Reflection.Extensions/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Reflection.Extensions.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Reflection.Metadata/1.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Collections.Immutable": "1.2.0", - "System.Diagnostics.Debug": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.1/System.Reflection.Metadata.dll": {} - }, - "runtime": { - "lib/netstandard1.1/System.Reflection.Metadata.dll": {} - } - }, - "System.Reflection.Primitives/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Reflection.Primitives.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Reflection.TypeExtensions/4.1.0": { - "type": "package", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Reflection.TypeExtensions.dll": {} - }, - "runtime": { - "lib/netstandard1.5/System.Reflection.TypeExtensions.dll": {} - } - }, - "System.Resources.Reader/4.0.0": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/System.Resources.Reader.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Resources.Reader.dll": {} - } - }, - "System.Resources.ResourceManager/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Globalization": "4.0.11", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Resources.ResourceManager.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Resources.ResourceWriter/4.0.0-beta-22816": { - "type": "package", - "dependencies": { - "System.IO": "4.0.10-beta-22816", - "System.Runtime": "4.0.20-beta-22816" - }, - "compile": { - "lib/contract/System.Resources.ResourceWriter.dll": {} - }, - "runtime": { - "lib/aspnetcore50/System.Resources.ResourceWriter.dll": {} - } - }, - "System.Runtime/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp80+wpa81/_._": {} - } - }, - "System.Runtime.CompilerServices.Unsafe/4.0.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll": {} - } - }, - "System.Runtime.Extensions/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.Extensions.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Runtime.Handles/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Runtime.Handles.dll": {} - } - }, - "System.Runtime.InteropServices/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Reflection": "4.1.0", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.InteropServices.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wpa81/_._": {} - } - }, - "System.Runtime.InteropServices.RuntimeInformation/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Runtime.Loader/4.0.0": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/_._": {} - }, - "runtime": { - "lib/netstandard1.5/System.Runtime.Loader.dll": {} - } - }, - "System.Runtime.Numerics/4.0.1": { - "type": "package", - "dependencies": { - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.1/System.Runtime.Numerics.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Runtime.Numerics.dll": {} - } - }, - "System.Runtime.Serialization.Primitives/4.1.1": { - "type": "package", - "dependencies": { - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Runtime.Serialization.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll": {} - } - }, - "System.Runtime.Serialization.Xml/4.1.1": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.Private.DataContractSerialization": "4.1.1", - "System.Runtime": "4.1.0", - "System.Runtime.Serialization.Primitives": "4.1.1", - "System.Text.Encoding": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Runtime.Serialization.Xml.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Runtime.Serialization.Xml.dll": {} - } - }, - "System.Security.Claims/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Security.Principal": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/System.Security.Claims.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Security.Claims.dll": {} - } - }, - "System.Security.Cryptography.Algorithms/4.2.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Cng/4.2.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.6/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Csp/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Encoding/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.OpenSsl/4.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.6/_._": {} - }, - "runtime": { - "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": { - "assetType": "runtime", - "rid": "unix" - } - } - }, - "System.Security.Cryptography.Primitives/4.0.0": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} - } - }, - "System.Security.Cryptography.X509Certificates/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Globalization.Calendars": "4.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Cng": "4.2.0", - "System.Security.Cryptography.Csp": "4.0.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.OpenSsl": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "runtime.native.System": "4.0.0", - "runtime.native.System.Net.Http": "4.0.1", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Principal/4.0.1": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Security.Principal.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Security.Principal.dll": {} - } - }, - "System.Security.Principal.Windows/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Claims": "4.0.1", - "System.Security.Principal": "4.0.1", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Security.Principal.Windows.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Text.Encoding/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Text.Encoding.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Text.Encoding.CodePages/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Text.Encoding.CodePages.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Text.Encoding.Extensions/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Text.Encoding.Extensions.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Text.Encodings.Web/4.0.0": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/System.Text.Encodings.Web.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Text.Encodings.Web.dll": {} - } - }, - "System.Text.RegularExpressions/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.6/System.Text.RegularExpressions.dll": {} - }, - "runtime": { - "lib/netstandard1.6/System.Text.RegularExpressions.dll": {} - } - }, - "System.Threading/4.0.11": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Threading.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Threading.dll": {} - } - }, - "System.Threading.Overlapped/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Threading.Overlapped.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Threading.Overlapped.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Threading.Tasks/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Threading.Tasks.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Threading.Tasks.Dataflow/4.6.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Dynamic.Runtime": "4.0.11", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll": {} - }, - "runtime": { - "lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll": {} - } - }, - "System.Threading.Tasks.Extensions/4.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Runtime": "4.1.0", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll": {} - } - }, - "System.Threading.Tasks.Parallel/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.1/System.Threading.Tasks.Parallel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Threading.Tasks.Parallel.dll": {} - } - }, - "System.Threading.Thread/4.0.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Threading.Thread.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Threading.Thread.dll": {} - } - }, - "System.Threading.ThreadPool/4.0.10": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/System.Threading.ThreadPool.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Threading.ThreadPool.dll": {} - } - }, - "System.Threading.Timer/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.2/System.Threading.Timer.dll": {} - } - }, - "System.Xml.ReaderWriter/4.0.11": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Tasks.Extensions": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Xml.ReaderWriter.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.ReaderWriter.dll": {} - } - }, - "System.Xml.XDocument/4.0.11": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tools": "4.0.1", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Xml.XDocument.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.XDocument.dll": {} - } - }, - "System.Xml.XmlDocument/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Xml.XmlDocument.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.XmlDocument.dll": {} - } - }, - "System.Xml.XmlSerializer/4.0.11": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XmlDocument": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.XmlSerializer.dll": {} - } - }, - "System.Xml.XPath/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.XPath.dll": {} - } - }, - "System.Xml.XPath.XDocument/4.0.1": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XDocument": "4.0.11", - "System.Xml.XPath": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.XPath.XDocument.dll": {} - } - }, - "VideoLibrary/1.3.4": { - "type": "package", - "compile": { - "lib/portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10/libvideo.dll": {} - }, - "runtime": { - "lib/portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10/libvideo.dll": {} - } - }, - "Discord.Net/1.0.0-beta": { - "type": "project", - "framework": ".NETStandard,Version=v1.3", - "dependencies": { - "Microsoft.Win32.Primitives": "4.0.1", - "Newtonsoft.Json": "8.0.3", - "System.Collections.Concurrent": "4.0.12", - "System.Collections.Immutable": "1.2.0", - "System.IO.Compression": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.Net.Http": "4.1.0", - "System.Net.NameResolution": "4.0.0", - "System.Net.Sockets": "4.1.0", - "System.Net.WebSockets.Client": "4.0.0", - "System.Reflection.Extensions": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.0.0", - "System.Runtime.Serialization.Primitives": "4.1.1", - "System.Text.RegularExpressions": "4.1.0" - }, - "compile": { - "netstandard1.3/Discord.Net.dll": {} - }, - "runtime": { - "netstandard1.3/Discord.Net.dll": {} - } - }, - "Discord.Net.Commands/1.0.0-beta": { - "type": "project", - "framework": ".NETStandard,Version=v1.3", - "dependencies": { - "Discord.Net": "1.0.0" - }, - "compile": { - "netstandard1.3/Discord.Net.Commands.dll": {} - }, - "runtime": { - "netstandard1.3/Discord.Net.Commands.dll": {} - } - } - } - }, - "libraries": { - "CoreCLR-NCalc/2.1.0": { - "sha512": "GUPPo99NUeAgLR5oIOLrApJx3Mx5BZEaKkK9OlDd/CmAYaACLHo68FnO+kCamsLH2+rvr6Rw3hAwzap4GVFV8Q==", - "type": "package", - "path": "CoreCLR-NCalc/2.1.0", - "files": [ - "CoreCLR-NCalc.2.1.0.nupkg.sha512", - "CoreCLR-NCalc.nuspec", - "lib/net451/NCalc.dll", - "lib/netstandard1.3/NCalc.dll" - ] - }, - "Google.Apis/1.16.0": { - "sha512": "/p657K7J7p9aRl6QxUjQfNK0AobxnLHwDWdSqAr/17lZeQR+XMuEbIy7No80+zDeS39kKrRVWFlu1vHiws7gRQ==", - "type": "package", - "path": "Google.Apis/1.16.0", - "files": [ - "Google.Apis.1.16.0.nupkg.sha512", - "Google.Apis.nuspec", - "License.txt", - "lib/net45/Google.Apis.PlatformServices.dll", - "lib/net45/Google.Apis.PlatformServices.pdb", - "lib/net45/Google.Apis.PlatformServices.xml", - "lib/net45/Google.Apis.dll", - "lib/net45/Google.Apis.pdb", - "lib/net45/Google.Apis.xml", - "lib/netstandard1.3/Google.Apis.dll", - "lib/netstandard1.3/Google.Apis.pdb", - "lib/netstandard1.3/Google.Apis.xml", - "lib/portable-net45+sl50+netcore45+wpa81+wp8/Google.Apis.dll", - "lib/portable-net45+sl50+netcore45+wpa81+wp8/Google.Apis.pdb", - "lib/portable-net45+sl50+netcore45+wpa81+wp8/Google.Apis.xml", - "lib/win81/Google.Apis.PlatformServices.dll", - "lib/win81/Google.Apis.PlatformServices.pdb", - "lib/win81/Google.Apis.PlatformServices.xml", - "lib/win81/Google.Apis.dll", - "lib/win81/Google.Apis.pdb", - "lib/win81/Google.Apis.xml", - "lib/wp8/Google.Apis.PlatformServices.dll", - "lib/wp8/Google.Apis.PlatformServices.pdb", - "lib/wp8/Google.Apis.PlatformServices.xml", - "lib/wp8/Google.Apis.dll", - "lib/wp8/Google.Apis.pdb", - "lib/wp8/Google.Apis.xml", - "lib/wpa81/Google.Apis.PlatformServices.dll", - "lib/wpa81/Google.Apis.PlatformServices.pdb", - "lib/wpa81/Google.Apis.PlatformServices.xml", - "lib/wpa81/Google.Apis.dll", - "lib/wpa81/Google.Apis.pdb", - "lib/wpa81/Google.Apis.xml" - ] - }, - "Google.Apis.Auth/1.15.0": { - "sha512": "gBMi03/CjodxVVjByVvvaE4To9905Oe6o59oxzP6AI5uZaab9zNclR+2cu6OcnS5wOIpf5DKAWd+jlSshuZ/cw==", - "type": "package", - "path": "Google.Apis.Auth/1.15.0", - "files": [ - "Google.Apis.Auth.1.15.0.nupkg.sha512", - "Google.Apis.Auth.nuspec", - "License.txt", - "lib/net45/Google.Apis.Auth.PlatformServices.dll", - "lib/net45/Google.Apis.Auth.PlatformServices.pdb", - "lib/net45/Google.Apis.Auth.PlatformServices.xml", - "lib/net45/Google.Apis.Auth.dll", - "lib/net45/Google.Apis.Auth.pdb", - "lib/net45/Google.Apis.Auth.xml", - "lib/netstandard1.3/Google.Apis.Auth.PlatformServices.dll", - "lib/netstandard1.3/Google.Apis.Auth.PlatformServices.pdb", - "lib/netstandard1.3/Google.Apis.Auth.PlatformServices.xml", - "lib/netstandard1.3/Google.Apis.Auth.dll", - "lib/netstandard1.3/Google.Apis.Auth.pdb", - "lib/netstandard1.3/Google.Apis.Auth.xml", - "lib/portable-net45+sl50+netcore45+wpa81+wp8/Google.Apis.Auth.dll", - "lib/portable-net45+sl50+netcore45+wpa81+wp8/Google.Apis.Auth.pdb", - "lib/portable-net45+sl50+netcore45+wpa81+wp8/Google.Apis.Auth.xml", - "lib/win81/Google.Apis.Auth.PlatformServices.dll", - "lib/win81/Google.Apis.Auth.PlatformServices.pdb", - "lib/win81/Google.Apis.Auth.PlatformServices.xml", - "lib/win81/Google.Apis.Auth.dll", - "lib/win81/Google.Apis.Auth.pdb", - "lib/win81/Google.Apis.Auth.xml", - "lib/wp8/Google.Apis.Auth.PlatformServices.dll", - "lib/wp8/Google.Apis.Auth.PlatformServices.pdb", - "lib/wp8/Google.Apis.Auth.PlatformServices.xml", - "lib/wp8/Google.Apis.Auth.dll", - "lib/wp8/Google.Apis.Auth.pdb", - "lib/wp8/Google.Apis.Auth.xml", - "lib/wpa81/Google.Apis.Auth.PlatformServices.dll", - "lib/wpa81/Google.Apis.Auth.PlatformServices.pdb", - "lib/wpa81/Google.Apis.Auth.PlatformServices.xml", - "lib/wpa81/Google.Apis.Auth.dll", - "lib/wpa81/Google.Apis.Auth.pdb", - "lib/wpa81/Google.Apis.Auth.xml" - ] - }, - "Google.Apis.Core/1.16.0": { - "sha512": "uATqVAsPHlpOf+3VV51xFEIghAMSLJyh1hqoVpnPOlkXBx7fkOcs0qP3tKXtmsaeuyC/7BYM1Tt42lyIyhY2lQ==", - "type": "package", - "path": "Google.Apis.Core/1.16.0", - "files": [ - "Google.Apis.Core.1.16.0.nupkg.sha512", - "Google.Apis.Core.nuspec", - "License.txt", - "lib/net45/Google.Apis.Core.dll", - "lib/net45/Google.Apis.Core.pdb", - "lib/net45/Google.Apis.Core.xml", - "lib/netstandard1.3/Google.Apis.Core.dll", - "lib/netstandard1.3/Google.Apis.Core.pdb", - "lib/netstandard1.3/Google.Apis.Core.xml", - "lib/portable-net45+sl50+netcore45+wpa81+wp8/Google.Apis.Core.dll", - "lib/portable-net45+sl50+netcore45+wpa81+wp8/Google.Apis.Core.pdb", - "lib/portable-net45+sl50+netcore45+wpa81+wp8/Google.Apis.Core.xml" - ] - }, - "Google.Apis.Customsearch.v1/1.16.0.466": { - "sha512": "uZ5VP/xKgTZCMJXgEfwHYEIR/7FsbtvL+bncm08a07RhWLFZTdRpCAkNL4b5wADHkblpkBe1VWKv43W77I4tJw==", - "type": "package", - "path": "Google.Apis.Customsearch.v1/1.16.0.466", - "files": [ - "Google.Apis.Customsearch.v1.1.16.0.466.nupkg.sha512", - "Google.Apis.Customsearch.v1.nuspec", - "lib/netstandard1.3/Google.Apis.Customsearch.v1.dll", - "lib/netstandard1.3/Google.Apis.Customsearch.v1.pdb", - "lib/netstandard1.3/Google.Apis.Customsearch.v1.xml", - "lib/portable-net40+sl50+netcore45+wpa81+wp8/Google.Apis.Customsearch.v1.dll", - "lib/portable-net40+sl50+netcore45+wpa81+wp8/Google.Apis.Customsearch.v1.pdb", - "lib/portable-net40+sl50+netcore45+wpa81+wp8/Google.Apis.Customsearch.v1.xml", - "lib/portable-net45+netcore45+wpa81+wp8/Google.Apis.Customsearch.v1.dll", - "lib/portable-net45+netcore45+wpa81+wp8/Google.Apis.Customsearch.v1.pdb", - "lib/portable-net45+netcore45+wpa81+wp8/Google.Apis.Customsearch.v1.xml" - ] - }, - "Google.Apis.Urlshortener.v1/1.15.0.138": { - "sha512": "67USnpqrk8tWO3LAgaK9qDQT6h8A7i7eUIOKm+OISThZoQuHiLCn6dbg46FVb597LUh57AxClSSbhnweYcYC3Q==", - "type": "package", - "path": "Google.Apis.Urlshortener.v1/1.15.0.138", - "files": [ - "Google.Apis.Urlshortener.v1.1.15.0.138.nupkg.sha512", - "Google.Apis.Urlshortener.v1.nuspec", - "lib/netstandard1.3/Google.Apis.Urlshortener.v1.dll", - "lib/netstandard1.3/Google.Apis.Urlshortener.v1.pdb", - "lib/netstandard1.3/Google.Apis.Urlshortener.v1.xml", - "lib/portable-net40+sl50+netcore45+wpa81+wp8/Google.Apis.Urlshortener.v1.dll", - "lib/portable-net40+sl50+netcore45+wpa81+wp8/Google.Apis.Urlshortener.v1.pdb", - "lib/portable-net40+sl50+netcore45+wpa81+wp8/Google.Apis.Urlshortener.v1.xml", - "lib/portable-net45+netcore45+wpa81+wp8/Google.Apis.Urlshortener.v1.dll", - "lib/portable-net45+netcore45+wpa81+wp8/Google.Apis.Urlshortener.v1.pdb", - "lib/portable-net45+netcore45+wpa81+wp8/Google.Apis.Urlshortener.v1.xml" - ] - }, - "Google.Apis.YouTube.v3/1.15.0.582": { - "sha512": "isR8FdI417PKLgLlNdOVDhduO+8yqPJ+vfID1Zx0MjAa/y3q655Plk2E/KNmsrjvXkqSSWwDCQHPz/Q1fat4tA==", - "type": "package", - "path": "Google.Apis.YouTube.v3/1.15.0.582", - "files": [ - "Google.Apis.YouTube.v3.1.15.0.582.nupkg.sha512", - "Google.Apis.YouTube.v3.nuspec", - "lib/netstandard1.3/Google.Apis.YouTube.v3.dll", - "lib/netstandard1.3/Google.Apis.YouTube.v3.pdb", - "lib/netstandard1.3/Google.Apis.YouTube.v3.xml", - "lib/portable-net40+sl50+netcore45+wpa81+wp8/Google.Apis.YouTube.v3.dll", - "lib/portable-net40+sl50+netcore45+wpa81+wp8/Google.Apis.YouTube.v3.pdb", - "lib/portable-net40+sl50+netcore45+wpa81+wp8/Google.Apis.YouTube.v3.xml", - "lib/portable-net45+netcore45+wpa81+wp8/Google.Apis.YouTube.v3.dll", - "lib/portable-net45+netcore45+wpa81+wp8/Google.Apis.YouTube.v3.pdb", - "lib/portable-net45+netcore45+wpa81+wp8/Google.Apis.YouTube.v3.xml" - ] - }, - "ImageProcessorCore/1.0.0-alpha1045": { - "sha512": "A5oL7SwFnzcu5eF26u49nf73joQghpEpCGwLb54dm6VI6ZGpjBJpKAyNKtJP30HtXy1VngiGJn/EcvCl8+JGcg==", - "type": "package", - "path": "ImageProcessorCore/1.0.0-alpha1045", - "files": [ - "ImageProcessorCore.1.0.0-alpha1045.nupkg.sha512", - "ImageProcessorCore.nuspec", - "lib/netstandard1.1/ImageProcessorCore.dll" - ] - }, - "Libuv/1.9.0": { - "sha512": "9Q7AaqtQhS8JDSIvRBt6ODSLWDBI4c8YxNxyCQemWebBFUtBbc6M5Vi5Gz1ZyIUlTW3rZK9bIr5gnVyv0z7a2Q==", - "type": "package", - "path": "Libuv/1.9.0", - "files": [ - "Libuv.1.9.0.nupkg.sha512", - "Libuv.nuspec", - "License.txt", - "runtimes/debian-x64/native/libuv.so", - "runtimes/fedora-x64/native/libuv.so", - "runtimes/opensuse-x64/native/libuv.so", - "runtimes/osx/native/libuv.dylib", - "runtimes/rhel-x64/native/libuv.so", - "runtimes/win7-arm/native/libuv.dll", - "runtimes/win7-x64/native/libuv.dll", - "runtimes/win7-x86/native/libuv.dll" - ] - }, - "Microsoft.AspNetCore.Hosting.Abstractions/1.0.0": { - "sha512": "8r6qOl1jYyC523ZKM1QNl+6ijIoYWELWm0tpEWqtTIOg9DytHJWshB7usgqiuRmfHXM0EUziR6ouFY7iP7Tuzw==", - "type": "package", - "path": "Microsoft.AspNetCore.Hosting.Abstractions/1.0.0", - "files": [ - "Microsoft.AspNetCore.Hosting.Abstractions.1.0.0.nupkg.sha512", - "Microsoft.AspNetCore.Hosting.Abstractions.nuspec", - "lib/net451/Microsoft.AspNetCore.Hosting.Abstractions.dll", - "lib/net451/Microsoft.AspNetCore.Hosting.Abstractions.xml", - "lib/netstandard1.3/Microsoft.AspNetCore.Hosting.Abstractions.dll", - "lib/netstandard1.3/Microsoft.AspNetCore.Hosting.Abstractions.xml" - ] - }, - "Microsoft.AspNetCore.Hosting.Server.Abstractions/1.0.0": { - "sha512": "sHZyhQEoW15T9E36rfdm5Ux6a6RZB0KNM79ccf2IplWASqmlRGhX4ydU3dzQRLhkHpLx16fnWOL0KScsO6BevQ==", - "type": "package", - "path": "Microsoft.AspNetCore.Hosting.Server.Abstractions/1.0.0", - "files": [ - "Microsoft.AspNetCore.Hosting.Server.Abstractions.1.0.0.nupkg.sha512", - "Microsoft.AspNetCore.Hosting.Server.Abstractions.nuspec", - "lib/net451/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll", - "lib/net451/Microsoft.AspNetCore.Hosting.Server.Abstractions.xml", - "lib/netstandard1.3/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll", - "lib/netstandard1.3/Microsoft.AspNetCore.Hosting.Server.Abstractions.xml" - ] - }, - "Microsoft.AspNetCore.Http.Abstractions/1.0.0": { - "sha512": "OJHlqdJOWKKBfsiVdX4Z4KCNuqvBIu6+1MVKuejRDyHnGyMkNHNoP/dtVzhPqvJXaJg9N4HlD0XNc6GDCFVffg==", - "type": "package", - "path": "Microsoft.AspNetCore.Http.Abstractions/1.0.0", - "files": [ - "Microsoft.AspNetCore.Http.Abstractions.1.0.0.nupkg.sha512", - "Microsoft.AspNetCore.Http.Abstractions.nuspec", - "lib/net451/Microsoft.AspNetCore.Http.Abstractions.dll", - "lib/net451/Microsoft.AspNetCore.Http.Abstractions.xml", - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Abstractions.dll", - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Abstractions.xml" - ] - }, - "Microsoft.AspNetCore.Http.Features/1.0.0": { - "sha512": "6x7zgfbTo1gL9xMEb7EMO2ES/48bqwnWyfH09z+ubWhnzxdhHls8rtqstPylu5FPD9nid6Vo2pgDm5vufRAy5Q==", - "type": "package", - "path": "Microsoft.AspNetCore.Http.Features/1.0.0", - "files": [ - "Microsoft.AspNetCore.Http.Features.1.0.0.nupkg.sha512", - "Microsoft.AspNetCore.Http.Features.nuspec", - "lib/net451/Microsoft.AspNetCore.Http.Features.dll", - "lib/net451/Microsoft.AspNetCore.Http.Features.xml", - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Features.dll", - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Features.xml" - ] - }, - "Microsoft.CodeAnalysis.Analyzers/1.1.0": { - "sha512": "HS3iRWZKcUw/8eZ/08GXKY2Bn7xNzQPzf8gRPHGSowX7u7XXu9i9YEaBeBNKUXWfI7qjvT2zXtLUvbN0hds8vg==", - "type": "package", - "path": "Microsoft.CodeAnalysis.Analyzers/1.1.0", - "files": [ - "Microsoft.CodeAnalysis.Analyzers.1.1.0.nupkg.sha512", - "Microsoft.CodeAnalysis.Analyzers.nuspec", - "ThirdPartyNotices.rtf", - "analyzers/dotnet/cs/Microsoft.CodeAnalysis.Analyzers.dll", - "analyzers/dotnet/cs/Microsoft.CodeAnalysis.CSharp.Analyzers.dll", - "analyzers/dotnet/vb/Microsoft.CodeAnalysis.Analyzers.dll", - "analyzers/dotnet/vb/Microsoft.CodeAnalysis.VisualBasic.Analyzers.dll", - "tools/install.ps1", - "tools/uninstall.ps1" - ] - }, - "Microsoft.CodeAnalysis.Common/1.3.0": { - "sha512": "V09G35cs0CT1C4Dr1IEOh8IGfnWALEVAOO5JXsqagxXwmYR012TlorQ+vx2eXxfZRKs3gAS/r92gN9kRBLba5A==", - "type": "package", - "path": "Microsoft.CodeAnalysis.Common/1.3.0", - "files": [ - "Microsoft.CodeAnalysis.Common.1.3.0.nupkg.sha512", - "Microsoft.CodeAnalysis.Common.nuspec", - "ThirdPartyNotices.rtf", - "lib/net45/Microsoft.CodeAnalysis.dll", - "lib/net45/Microsoft.CodeAnalysis.xml", - "lib/netstandard1.3/Microsoft.CodeAnalysis.dll", - "lib/netstandard1.3/Microsoft.CodeAnalysis.xml", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.dll", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.xml" - ] - }, - "Microsoft.CodeAnalysis.CSharp/1.3.0": { - "sha512": "BgWDIAbSFsHuGeLSn/rljLi51nXqkSo4DZ0qEIrHyPVasrhxEVq7aV8KKZ3HEfSFB+GIhBmOogE+mlOLYg19eg==", - "type": "package", - "path": "Microsoft.CodeAnalysis.CSharp/1.3.0", - "files": [ - "Microsoft.CodeAnalysis.CSharp.1.3.0.nupkg.sha512", - "Microsoft.CodeAnalysis.CSharp.nuspec", - "ThirdPartyNotices.rtf", - "lib/net45/Microsoft.CodeAnalysis.CSharp.dll", - "lib/net45/Microsoft.CodeAnalysis.CSharp.xml", - "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.dll", - "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.xml", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.dll", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.xml" - ] - }, - "Microsoft.CodeAnalysis.VisualBasic/1.3.0": { - "sha512": "Sf3k8PkTkWqBmXnnblJbvb7ewO6mJzX6WO2t7m04BmOY5qBq6yhhyXnn/BMM+QCec3Arw3X35Zd8f9eBql0qgg==", - "type": "package", - "path": "Microsoft.CodeAnalysis.VisualBasic/1.3.0", - "files": [ - "Microsoft.CodeAnalysis.VisualBasic.1.3.0.nupkg.sha512", - "Microsoft.CodeAnalysis.VisualBasic.nuspec", - "ThirdPartyNotices.rtf", - "lib/net45/Microsoft.CodeAnalysis.VisualBasic.dll", - "lib/net45/Microsoft.CodeAnalysis.VisualBasic.xml", - "lib/netstandard1.3/Microsoft.CodeAnalysis.VisualBasic.dll", - "lib/netstandard1.3/Microsoft.CodeAnalysis.VisualBasic.xml", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.VisualBasic.dll", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.VisualBasic.xml" - ] - }, - "Microsoft.CSharp/4.0.1": { - "sha512": "17h8b5mXa87XYKrrVqdgZ38JefSUqLChUQpXgSnpzsM0nDOhE40FTeNWOJ/YmySGV6tG6T8+hjz6vxbknHJr6A==", - "type": "package", - "path": "Microsoft.CSharp/4.0.1", - "files": [ - "Microsoft.CSharp.4.0.1.nupkg.sha512", - "Microsoft.CSharp.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/Microsoft.CSharp.dll", - "lib/netstandard1.3/Microsoft.CSharp.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/Microsoft.CSharp.dll", - "ref/netcore50/Microsoft.CSharp.xml", - "ref/netcore50/de/Microsoft.CSharp.xml", - "ref/netcore50/es/Microsoft.CSharp.xml", - "ref/netcore50/fr/Microsoft.CSharp.xml", - "ref/netcore50/it/Microsoft.CSharp.xml", - "ref/netcore50/ja/Microsoft.CSharp.xml", - "ref/netcore50/ko/Microsoft.CSharp.xml", - "ref/netcore50/ru/Microsoft.CSharp.xml", - "ref/netcore50/zh-hans/Microsoft.CSharp.xml", - "ref/netcore50/zh-hant/Microsoft.CSharp.xml", - "ref/netstandard1.0/Microsoft.CSharp.dll", - "ref/netstandard1.0/Microsoft.CSharp.xml", - "ref/netstandard1.0/de/Microsoft.CSharp.xml", - "ref/netstandard1.0/es/Microsoft.CSharp.xml", - "ref/netstandard1.0/fr/Microsoft.CSharp.xml", - "ref/netstandard1.0/it/Microsoft.CSharp.xml", - "ref/netstandard1.0/ja/Microsoft.CSharp.xml", - "ref/netstandard1.0/ko/Microsoft.CSharp.xml", - "ref/netstandard1.0/ru/Microsoft.CSharp.xml", - "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", - "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "Microsoft.Data.Sqlite/1.0.0": { - "sha512": "dezlCGK9zVrPNfoX1SL50GmWDdRQNcV1SBy3wuCn/a0g7Gc26PyvlA4BKapjnCK5N8LSQ2+1PdW2imiRr+YvxA==", - "type": "package", - "path": "Microsoft.Data.Sqlite/1.0.0", - "files": [ - "Microsoft.Data.Sqlite.1.0.0.nupkg.sha512", - "Microsoft.Data.Sqlite.nuspec", - "lib/net451/Microsoft.Data.Sqlite.dll", - "lib/net451/Microsoft.Data.Sqlite.xml", - "lib/netstandard1.3/Microsoft.Data.Sqlite.dll", - "lib/netstandard1.3/Microsoft.Data.Sqlite.xml" - ] - }, - "Microsoft.EntityFrameworkCore/1.0.0": { - "sha512": "Vqg/v0cXRQZQH0gY3VHHqt0Bt5WZEkDReVpI1sNYKHVbVtnMYFKPp5SiNygosUJYrJk1rSGb8UVkplDNNUkEgg==", - "type": "package", - "path": "Microsoft.EntityFrameworkCore/1.0.0", - "files": [ - "Microsoft.EntityFrameworkCore.1.0.0.nupkg.sha512", - "Microsoft.EntityFrameworkCore.nuspec", - "lib/net451/Microsoft.EntityFrameworkCore.dll", - "lib/net451/Microsoft.EntityFrameworkCore.xml", - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.dll", - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.xml" - ] - }, - "Microsoft.EntityFrameworkCore.Design/1.0.0-preview2-final": { - "sha512": "RhyjntECuOVsrKjgFog9rv+V7oBsxBNxz5NviF7uHvDDQXLyHH3os/CewQxRNsve114AQH5RX/Bww6qAXlSORQ==", - "type": "package", - "path": "Microsoft.EntityFrameworkCore.Design/1.0.0-preview2-final", - "files": [ - "Microsoft.EntityFrameworkCore.Design.1.0.0-preview2-final.nupkg.sha512", - "Microsoft.EntityFrameworkCore.Design.nuspec", - "lib/net451/_._", - "lib/netcore50/_._", - "lib/netcoreapp1.0/Microsoft.EntityFrameworkCore.Design.dll", - "lib/netcoreapp1.0/Microsoft.EntityFrameworkCore.Design.runtimeconfig.json", - "lib/netcoreapp1.0/Microsoft.EntityFrameworkCore.Design.xml", - "runtimes/win7-x64/lib/net451/Microsoft.EntityFrameworkCore.Design.exe", - "runtimes/win7-x86/lib/net451/Microsoft.EntityFrameworkCore.Design.exe" - ] - }, - "Microsoft.EntityFrameworkCore.Design.Core/1.0.0-preview2-final": { - "sha512": "H3pHksGErQSEwWyvISlDYMslIXftS4XB2m0AvqBS08ECGHagh27mqm/oIyUetzzRad+C2V0zpguJmR14eMiRaA==", - "type": "package", - "path": "Microsoft.EntityFrameworkCore.Design.Core/1.0.0-preview2-final", - "files": [ - "Microsoft.EntityFrameworkCore.Design.Core.1.0.0-preview2-final.nupkg.sha512", - "Microsoft.EntityFrameworkCore.Design.Core.nuspec", - "lib/net451/Microsoft.EntityFrameworkCore.Design.Core.dll", - "lib/net451/Microsoft.EntityFrameworkCore.Design.Core.xml", - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Design.Core.dll", - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Design.Core.xml" - ] - }, - "Microsoft.EntityFrameworkCore.Relational/1.0.0": { - "sha512": "LGBab+7o0eq4C3YtvkAxK8W7Ia57eO0Ue0viQgt0STptQ2bUpLzV7q5LfbNl475rt6yTWa/vDQlYVaI64fwqdw==", - "type": "package", - "path": "Microsoft.EntityFrameworkCore.Relational/1.0.0", - "files": [ - "Microsoft.EntityFrameworkCore.Relational.1.0.0.nupkg.sha512", - "Microsoft.EntityFrameworkCore.Relational.nuspec", - "lib/net451/Microsoft.EntityFrameworkCore.Relational.dll", - "lib/net451/Microsoft.EntityFrameworkCore.Relational.xml", - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Relational.dll", - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Relational.xml" - ] - }, - "Microsoft.EntityFrameworkCore.Relational.Design/1.0.0": { - "sha512": "pw4EmGTp5U645is0Lyf0C6yU1uQGHVIZiRyxlDNNrRllL0ZjSFKTShv9qbE+fBpvvvArNp2HhDmP7d6vJAt0Dw==", - "type": "package", - "path": "Microsoft.EntityFrameworkCore.Relational.Design/1.0.0", - "files": [ - "Microsoft.EntityFrameworkCore.Relational.Design.1.0.0.nupkg.sha512", - "Microsoft.EntityFrameworkCore.Relational.Design.nuspec", - "lib/net451/Microsoft.EntityFrameworkCore.Relational.Design.dll", - "lib/net451/Microsoft.EntityFrameworkCore.Relational.Design.xml", - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Relational.Design.dll", - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Relational.Design.xml" - ] - }, - "Microsoft.EntityFrameworkCore.Sqlite/1.0.0": { - "sha512": "GF5xfn90zVKbnCdNrjeH4j1IaAQ7FsHCWkTrdUKISzrPxG3LIizJaU2iu8YMfNhMYd5N1Y7R7SxF2dBh+5A+Ew==", - "type": "package", - "path": "Microsoft.EntityFrameworkCore.Sqlite/1.0.0", - "files": [ - "Microsoft.EntityFrameworkCore.Sqlite.1.0.0.nupkg.sha512", - "Microsoft.EntityFrameworkCore.Sqlite.nuspec", - "lib/net451/Microsoft.EntityFrameworkCore.Sqlite.dll", - "lib/net451/Microsoft.EntityFrameworkCore.Sqlite.xml", - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Sqlite.dll", - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Sqlite.xml" - ] - }, - "Microsoft.Extensions.Caching.Abstractions/1.0.0": { - "sha512": "IxlFDVOchL6tdR05bk7EiJvMtvZrVkZXBhkbXqc3GxOHOrHFGcN+92WoWFPeBpdpy8ot/Px5ZdXzt7k+2n1Bdg==", - "type": "package", - "path": "Microsoft.Extensions.Caching.Abstractions/1.0.0", - "files": [ - "Microsoft.Extensions.Caching.Abstractions.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Caching.Abstractions.nuspec", - "lib/netstandard1.0/Microsoft.Extensions.Caching.Abstractions.dll", - "lib/netstandard1.0/Microsoft.Extensions.Caching.Abstractions.xml" - ] - }, - "Microsoft.Extensions.Caching.Memory/1.0.0": { - "sha512": "6+7zTufCnZ+tfrUo7RbIRR3LB0BxwOwxfXuo0IbLyIvgoToGpWuz5wYEDfCYNOvpig9tY8FA0I1uRHYmITMXMQ==", - "type": "package", - "path": "Microsoft.Extensions.Caching.Memory/1.0.0", - "files": [ - "Microsoft.Extensions.Caching.Memory.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Caching.Memory.nuspec", - "lib/net451/Microsoft.Extensions.Caching.Memory.dll", - "lib/net451/Microsoft.Extensions.Caching.Memory.xml", - "lib/netstandard1.3/Microsoft.Extensions.Caching.Memory.dll", - "lib/netstandard1.3/Microsoft.Extensions.Caching.Memory.xml" - ] - }, - "Microsoft.Extensions.CommandLineUtils/1.0.0": { - "sha512": "kXJ8+YvEjp1j7ezJ7yvQMLYbRL6QlpBUjRoBfqghoe80yqZ5azYB90lL4iNeyRCznWF+cGm41aaIoFU0aOq7TQ==", - "type": "package", - "path": "Microsoft.Extensions.CommandLineUtils/1.0.0", - "files": [ - "Microsoft.Extensions.CommandLineUtils.1.0.0.nupkg.sha512", - "Microsoft.Extensions.CommandLineUtils.nuspec", - "lib/net451/Microsoft.Extensions.CommandLineUtils.dll", - "lib/net451/Microsoft.Extensions.CommandLineUtils.xml", - "lib/netstandard1.3/Microsoft.Extensions.CommandLineUtils.dll", - "lib/netstandard1.3/Microsoft.Extensions.CommandLineUtils.xml" - ] - }, - "Microsoft.Extensions.Configuration.Abstractions/1.0.0": { - "sha512": "nJ+Et/rnDMDmGhxvFAKdN3va7y+YDPICv1nUEP8I4IKgOkWwr/dCZHMqxVhJFrkbW9ux8Kd7erC4mvxfZh0WnA==", - "type": "package", - "path": "Microsoft.Extensions.Configuration.Abstractions/1.0.0", - "files": [ - "Microsoft.Extensions.Configuration.Abstractions.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Configuration.Abstractions.nuspec", - "lib/netstandard1.0/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/netstandard1.0/Microsoft.Extensions.Configuration.Abstractions.xml" - ] - }, - "Microsoft.Extensions.DependencyInjection/1.0.0": { - "sha512": "zdtkiZNV6LB8xtpmfyUjP/9N9ZCL/ydQ+0bfjun38fbrk+MDEm9M2yeLzRdq+OIt5xExw/KU04wFaVwJ1bhQPg==", - "type": "package", - "path": "Microsoft.Extensions.DependencyInjection/1.0.0", - "files": [ - "Microsoft.Extensions.DependencyInjection.1.0.0.nupkg.sha512", - "Microsoft.Extensions.DependencyInjection.nuspec", - "lib/netstandard1.1/Microsoft.Extensions.DependencyInjection.dll", - "lib/netstandard1.1/Microsoft.Extensions.DependencyInjection.xml" - ] - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/1.0.0": { - "sha512": "+XwaNo3o9RhLQhUnnOBCaukeRi1X9yYc0Fzye9RlErSflKZdw0VgHtn6rvKo0FTionsW0x8QVULhKH+nkqVjQA==", - "type": "package", - "path": "Microsoft.Extensions.DependencyInjection.Abstractions/1.0.0", - "files": [ - "Microsoft.Extensions.DependencyInjection.Abstractions.1.0.0.nupkg.sha512", - "Microsoft.Extensions.DependencyInjection.Abstractions.nuspec", - "lib/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml" - ] - }, - "Microsoft.Extensions.FileProviders.Abstractions/1.0.0": { - "sha512": "4jsqTxG3py/hYSsOtZMkNJ2/CQqPdpwyK7bDUkrwHgqowCFSmx/C+R4IzQ+2AK2Up1fVcu+ldC0gktwidL828A==", - "type": "package", - "path": "Microsoft.Extensions.FileProviders.Abstractions/1.0.0", - "files": [ - "Microsoft.Extensions.FileProviders.Abstractions.1.0.0.nupkg.sha512", - "Microsoft.Extensions.FileProviders.Abstractions.nuspec", - "lib/netstandard1.0/Microsoft.Extensions.FileProviders.Abstractions.dll", - "lib/netstandard1.0/Microsoft.Extensions.FileProviders.Abstractions.xml" - ] - }, - "Microsoft.Extensions.Logging/1.0.0": { - "sha512": "0mDuASVrd/nMeBYIJSK+9lT3TSmWxUXP/ipVB1pF1ApMN5fqGCckPTNwmOfT4Z9wPkXGnhbwFTGrxZvbzTWxOg==", - "type": "package", - "path": "Microsoft.Extensions.Logging/1.0.0", - "files": [ - "Microsoft.Extensions.Logging.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Logging.nuspec", - "lib/netstandard1.1/Microsoft.Extensions.Logging.dll", - "lib/netstandard1.1/Microsoft.Extensions.Logging.xml" - ] - }, - "Microsoft.Extensions.Logging.Abstractions/1.0.0": { - "sha512": "wHT6oY50q36mAXBRKtFaB7u07WxKC5u2M8fi3PqHOOnHyUo9gD0u1TlCNR8UObHQxKMYwqlgI8TLcErpt29n8A==", - "type": "package", - "path": "Microsoft.Extensions.Logging.Abstractions/1.0.0", - "files": [ - "Microsoft.Extensions.Logging.Abstractions.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Logging.Abstractions.nuspec", - "lib/netstandard1.1/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/netstandard1.1/Microsoft.Extensions.Logging.Abstractions.xml" - ] - }, - "Microsoft.Extensions.Options/1.0.0": { - "sha512": "SdP3yPKF++JTkoa91pBDiE70uQkR/gdXWzOnMPbSj+eOqY1vgY+b8RVl+gh7TrJ2wlCK2QqnQtvCQlPPZRK36w==", - "type": "package", - "path": "Microsoft.Extensions.Options/1.0.0", - "files": [ - "Microsoft.Extensions.Options.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Options.nuspec", - "lib/netstandard1.0/Microsoft.Extensions.Options.dll", - "lib/netstandard1.0/Microsoft.Extensions.Options.xml" - ] - }, - "Microsoft.Extensions.PlatformAbstractions/1.0.0": { - "sha512": "zyjUzrOmuevOAJpIo3Mt5GmpALVYCVdLZ99keMbmCxxgQH7oxzU58kGHzE6hAgYEiWsdfMJLjVR7r+vSmaJmtg==", - "type": "package", - "path": "Microsoft.Extensions.PlatformAbstractions/1.0.0", - "files": [ - "Microsoft.Extensions.PlatformAbstractions.1.0.0.nupkg.sha512", - "Microsoft.Extensions.PlatformAbstractions.nuspec", - "lib/net451/Microsoft.Extensions.PlatformAbstractions.dll", - "lib/net451/Microsoft.Extensions.PlatformAbstractions.xml", - "lib/netstandard1.3/Microsoft.Extensions.PlatformAbstractions.dll", - "lib/netstandard1.3/Microsoft.Extensions.PlatformAbstractions.xml" - ] - }, - "Microsoft.Extensions.Primitives/1.0.0": { - "sha512": "3q2vzfKEDjL6JFkRpk5SFA3zarYsO6+ZYgoucNImrUMzDn0mFbEOL5p9oPoWiypwypbJVVjWTf557bXZ0YFLig==", - "type": "package", - "path": "Microsoft.Extensions.Primitives/1.0.0", - "files": [ - "Microsoft.Extensions.Primitives.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Primitives.nuspec", - "lib/netstandard1.0/Microsoft.Extensions.Primitives.dll", - "lib/netstandard1.0/Microsoft.Extensions.Primitives.xml" - ] - }, - "Microsoft.NETCore.App/1.0.0": { - "sha512": "Bv40dLDrT+Igcg1e6otW3D8voeJCfcAxOlsxSVlDz+J+cdWls5kblZvPHHvx7gX3/oJoQVIkEeO3sMyv5PSVJA==", - "type": "package", - "path": "Microsoft.NETCore.App/1.0.0", - "files": [ - "Microsoft.NETCore.App.1.0.0.nupkg.sha512", - "Microsoft.NETCore.App.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netcoreapp1.0/_._" - ] - }, - "Microsoft.NETCore.DotNetHost/1.0.1": { - "sha512": "uaMgykq6AckP3hZW4dsD6zjocxyXPz0tcTl8OX7mlSUWsyFXdtf45sjdwI0JIHxt3gnI6GihAlOAwYK8HE4niQ==", - "type": "package", - "path": "Microsoft.NETCore.DotNetHost/1.0.1", - "files": [ - "Microsoft.NETCore.DotNetHost.1.0.1.nupkg.sha512", - "Microsoft.NETCore.DotNetHost.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.NETCore.DotNetHostPolicy/1.0.1": { - "sha512": "d8AQ+ZVj2iK9sbgl3IEsshCSaumhM1PNTPHxldZAQLOoI1BKF8QZ1zPCNqwBGisPiWOE3f/1SHDbQi1BTRBxuA==", - "type": "package", - "path": "Microsoft.NETCore.DotNetHostPolicy/1.0.1", - "files": [ - "Microsoft.NETCore.DotNetHostPolicy.1.0.1.nupkg.sha512", - "Microsoft.NETCore.DotNetHostPolicy.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.NETCore.DotNetHostResolver/1.0.1": { - "sha512": "GEXgpAHB9E0OhfcmNJ664Xcd2bJkz2qkGIAFmCgEI5ANlQy4qEEmBVfUqA+Z9HB85ZwWxZc1eIJ6fxdxcjrctg==", - "type": "package", - "path": "Microsoft.NETCore.DotNetHostResolver/1.0.1", - "files": [ - "Microsoft.NETCore.DotNetHostResolver.1.0.1.nupkg.sha512", - "Microsoft.NETCore.DotNetHostResolver.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.NETCore.Jit/1.0.2": { - "sha512": "Ok2vWofa6X8WD9vc4pfLHwvJz1/B6t3gOAoZcjrjrQf7lQOlNIuZIZtLn3wnWX28DuQGpPJkRlBxFj7Z5txNqw==", - "type": "package", - "path": "Microsoft.NETCore.Jit/1.0.2", - "files": [ - "Microsoft.NETCore.Jit.1.0.2.nupkg.sha512", - "Microsoft.NETCore.Jit.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.NETCore.Platforms/1.0.1": { - "sha512": "2G6OjjJzwBfNOO8myRV/nFrbTw5iA+DEm0N+qUqhrOmaVtn4pC77h38I1jsXGw5VH55+dPfQsqHD0We9sCl9FQ==", - "type": "package", - "path": "Microsoft.NETCore.Platforms/1.0.1", - "files": [ - "Microsoft.NETCore.Platforms.1.0.1.nupkg.sha512", - "Microsoft.NETCore.Platforms.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.json" - ] - }, - "Microsoft.NETCore.Runtime.CoreCLR/1.0.2": { - "sha512": "A0x1xtTjYJWZr2DRzgfCOXgB0JkQg8twnmtTJ79wFje+IihlLbXtx6Z2AxyVokBM5ruwTedR6YdCmHk39QJdtQ==", - "type": "package", - "path": "Microsoft.NETCore.Runtime.CoreCLR/1.0.2", - "files": [ - "Microsoft.NETCore.Runtime.CoreCLR.1.0.2.nupkg.sha512", - "Microsoft.NETCore.Runtime.CoreCLR.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.NETCore.Targets/1.0.1": { - "sha512": "rkn+fKobF/cbWfnnfBOQHKVKIOpxMZBvlSHkqDWgBpwGDcLRduvs3D9OLGeV6GWGvVwNlVi2CBbTjuPmtHvyNw==", - "type": "package", - "path": "Microsoft.NETCore.Targets/1.0.1", - "files": [ - "Microsoft.NETCore.Targets.1.0.1.nupkg.sha512", - "Microsoft.NETCore.Targets.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.json" - ] - }, - "Microsoft.NETCore.Windows.ApiSets/1.0.1": { - "sha512": "SaToCvvsGMxTgtLv/BrFQ5IFMPRE1zpWbnqbpwykJa8W5XiX82CXI6K2o7yf5xS7EP6t/JzFLV0SIDuWpvBZVw==", - "type": "package", - "path": "Microsoft.NETCore.Windows.ApiSets/1.0.1", - "files": [ - "Microsoft.NETCore.Windows.ApiSets.1.0.1.nupkg.sha512", - "Microsoft.NETCore.Windows.ApiSets.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.VisualBasic/10.0.1": { - "sha512": "HpNyOf/4Tp2lh4FyywB55VITk0SqVxEjDzsVDDyF1yafDN6Bq18xcHowzCPINyYHUTgGcEtmpYiRsFdSo0KKdQ==", - "type": "package", - "path": "Microsoft.VisualBasic/10.0.1", - "files": [ - "Microsoft.VisualBasic.10.0.1.nupkg.sha512", - "Microsoft.VisualBasic.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net45/_._", - "lib/netcore50/Microsoft.VisualBasic.dll", - "lib/netstandard1.3/Microsoft.VisualBasic.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "ref/net45/_._", - "ref/netcore50/Microsoft.VisualBasic.dll", - "ref/netcore50/Microsoft.VisualBasic.xml", - "ref/netcore50/de/Microsoft.VisualBasic.xml", - "ref/netcore50/es/Microsoft.VisualBasic.xml", - "ref/netcore50/fr/Microsoft.VisualBasic.xml", - "ref/netcore50/it/Microsoft.VisualBasic.xml", - "ref/netcore50/ja/Microsoft.VisualBasic.xml", - "ref/netcore50/ko/Microsoft.VisualBasic.xml", - "ref/netcore50/ru/Microsoft.VisualBasic.xml", - "ref/netcore50/zh-hans/Microsoft.VisualBasic.xml", - "ref/netcore50/zh-hant/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/Microsoft.VisualBasic.dll", - "ref/netstandard1.1/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/de/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/es/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/fr/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/it/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/ja/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/ko/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/ru/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/zh-hans/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/zh-hant/Microsoft.VisualBasic.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._" - ] - }, - "Microsoft.Win32.Primitives/4.0.1": { - "sha512": "fQnBHO9DgcmkC9dYSJoBqo6sH1VJwJprUHh8F3hbcRlxiQiBUuTntdk8tUwV490OqC2kQUrinGwZyQHTieuXRA==", - "type": "package", - "path": "Microsoft.Win32.Primitives/4.0.1", - "files": [ - "Microsoft.Win32.Primitives.4.0.1.nupkg.sha512", - "Microsoft.Win32.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/Microsoft.Win32.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/Microsoft.Win32.Primitives.dll", - "ref/netstandard1.3/Microsoft.Win32.Primitives.dll", - "ref/netstandard1.3/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/de/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/es/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/fr/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/it/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ja/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ko/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ru/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/zh-hans/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/zh-hant/Microsoft.Win32.Primitives.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "Microsoft.Win32.Registry/4.0.0": { - "sha512": "q+eLtROUAQ3OxYA5mpQrgyFgzLQxIyrfT2eLpYX5IEPlHmIio2nh4F5bgOaQoGOV865kFKZZso9Oq9RlazvXtg==", - "type": "package", - "path": "Microsoft.Win32.Registry/4.0.0", - "files": [ - "Microsoft.Win32.Registry.4.0.0.nupkg.sha512", - "Microsoft.Win32.Registry.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/Microsoft.Win32.Registry.dll", - "ref/net46/Microsoft.Win32.Registry.dll", - "ref/netstandard1.3/Microsoft.Win32.Registry.dll", - "ref/netstandard1.3/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/de/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/es/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/fr/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/it/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/ja/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/ko/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/ru/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/zh-hans/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/zh-hant/Microsoft.Win32.Registry.xml", - "runtimes/unix/lib/netstandard1.3/Microsoft.Win32.Registry.dll", - "runtimes/win/lib/net46/Microsoft.Win32.Registry.dll", - "runtimes/win/lib/netcore50/_._", - "runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll" - ] - }, - "NETStandard.Library/1.6.0": { - "sha512": "ypsCvIdCZ4IoYASJHt6tF2fMo7N30NLgV1EbmC+snO490OMl9FvVxmumw14rhReWU3j3g7BYudG6YCrchwHJlA==", - "type": "package", - "path": "NETStandard.Library/1.6.0", - "files": [ - "NETStandard.Library.1.6.0.nupkg.sha512", - "NETStandard.Library.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt" - ] - }, - "Newtonsoft.Json/9.0.1": { - "sha512": "U82mHQSKaIk+lpSVCbWYKNavmNH1i5xrExDEquU1i6I5pV6UMOqRnJRSlKO3cMPfcpp0RgDY+8jUXHdQ4IfXvw==", - "type": "package", - "path": "Newtonsoft.Json/9.0.1", - "files": [ - "Newtonsoft.Json.9.0.1.nupkg.sha512", - "Newtonsoft.Json.nuspec", - "lib/net20/Newtonsoft.Json.dll", - "lib/net20/Newtonsoft.Json.xml", - "lib/net35/Newtonsoft.Json.dll", - "lib/net35/Newtonsoft.Json.xml", - "lib/net40/Newtonsoft.Json.dll", - "lib/net40/Newtonsoft.Json.xml", - "lib/net45/Newtonsoft.Json.dll", - "lib/net45/Newtonsoft.Json.xml", - "lib/netstandard1.0/Newtonsoft.Json.dll", - "lib/netstandard1.0/Newtonsoft.Json.xml", - "lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.dll", - "lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.xml", - "lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll", - "lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.xml", - "tools/install.ps1" - ] - }, - "NLog/4.4.0-betav15": { - "sha512": "LDRcdjv5VG9EWz+mnFqdSolUci+j+DBPIPjm7Xdam3xa1F9Rt7o0UpYoCnNRulqHzpKbU704o7Ad4ck9WxDhnw==", - "type": "package", - "path": "NLog/4.4.0-betav15", - "files": [ - "NLog.4.4.0-betav15.nupkg.sha512", - "NLog.nuspec", - "lib/monoandroid23/NLog.dll", - "lib/monoandroid23/NLog.xml", - "lib/net35/NLog.dll", - "lib/net35/NLog.xml", - "lib/net40/NLog.dll", - "lib/net40/NLog.xml", - "lib/net45/NLog.dll", - "lib/net45/NLog.xml", - "lib/netstandard1.3/NLog.dll", - "lib/netstandard1.3/NLog.xml", - "lib/netstandard1.5/NLog.dll", - "lib/netstandard1.5/NLog.xml", - "lib/sl40/NLog.dll", - "lib/sl40/NLog.xml", - "lib/sl50/NLog.dll", - "lib/sl50/NLog.xml", - "lib/wp80/NLog.dll", - "lib/wp80/NLog.xml", - "lib/xamarinios10/NLog.dll", - "lib/xamarinios10/NLog.xml" - ] - }, - "Portable.BouncyCastle/1.8.1.1": { - "sha512": "bKqC2Me9ukybNYTBhlYd2sJ6j2kRV7SgB+JfiP2GueYq6QdM4Ym6PYV5eyrqb6KViOyd3zqQfJp0o6UW5ZG+GQ==", - "type": "package", - "path": "Portable.BouncyCastle/1.8.1.1", - "files": [ - "Portable.BouncyCastle.1.8.1.1.nupkg.sha512", - "Portable.BouncyCastle.nuspec", - "Readme.html", - "lib/netstandard1.0/crypto.dll", - "lib/netstandard1.0/crypto.pdb", - "lib/netstandard1.0/crypto.xml", - "lib/netstandard1.3/crypto.dll", - "lib/netstandard1.3/crypto.pdb", - "lib/netstandard1.3/crypto.xml", - "lib/portable-net4+sl5+wp8+win8+wpa81/crypto.dll", - "lib/portable-net4+sl5+wp8+win8+wpa81/crypto.pdb", - "lib/portable-net4+sl5+wp8+win8+wpa81/crypto.xml" - ] - }, - "Remotion.Linq/2.1.1": { - "sha512": "IJn0BqkvwEDpP+2qjvci7n4/a9f7DhKESLWb2/uG4xQh3rTkGTBUz69bI4IivCoKkTFAqjXxYDZw2K/npohjsw==", - "type": "package", - "path": "Remotion.Linq/2.1.1", - "files": [ - "Remotion.Linq.2.1.1.nupkg.sha512", - "Remotion.Linq.nuspec", - "lib/net35/Remotion.Linq.XML", - "lib/net35/Remotion.Linq.dll", - "lib/net40/Remotion.Linq.XML", - "lib/net40/Remotion.Linq.dll", - "lib/net45/Remotion.Linq.XML", - "lib/net45/Remotion.Linq.dll", - "lib/netstandard1.0/Remotion.Linq.dll", - "lib/netstandard1.0/Remotion.Linq.xml", - "lib/portable-net45+win+wpa81+wp80/Remotion.Linq.dll", - "lib/portable-net45+win+wpa81+wp80/Remotion.Linq.xml" - ] - }, - "runtime.native.System/4.0.0": { - "sha512": "QfS/nQI7k/BLgmLrw7qm7YBoULEvgWnPI+cYsbfCVFTW8Aj+i8JhccxcFMu1RWms0YZzF+UHguNBK4Qn89e2Sg==", - "type": "package", - "path": "runtime.native.System/4.0.0", - "files": [ - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.System.4.0.0.nupkg.sha512", - "runtime.native.System.nuspec" - ] - }, - "runtime.native.System.IO.Compression/4.1.0": { - "sha512": "Ob7nvnJBox1aaB222zSVZSkf4WrebPG4qFscfK7vmD7P7NxoSxACQLtO7ytWpqXDn2wcd/+45+EAZ7xjaPip8A==", - "type": "package", - "path": "runtime.native.System.IO.Compression/4.1.0", - "files": [ - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.System.IO.Compression.4.1.0.nupkg.sha512", - "runtime.native.System.IO.Compression.nuspec" - ] - }, - "runtime.native.System.Net.Http/4.0.1": { - "sha512": "Nh0UPZx2Vifh8r+J+H2jxifZUD3sBrmolgiFWJd2yiNrxO0xTa6bAw3YwRn1VOiSen/tUXMS31ttNItCZ6lKuA==", - "type": "package", - "path": "runtime.native.System.Net.Http/4.0.1", - "files": [ - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.System.Net.Http.4.0.1.nupkg.sha512", - "runtime.native.System.Net.Http.nuspec" - ] - }, - "runtime.native.System.Net.Security/4.0.1": { - "sha512": "Az6Ff6rZFb8nYGAaejFR6jr8ktt9f3e1Q/yKdw0pwHNTLaO/1eCAC9vzBoR9YAb0QeZD6fZXl1A9tRB5stpzXA==", - "type": "package", - "path": "runtime.native.System.Net.Security/4.0.1", - "files": [ - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.System.Net.Security.4.0.1.nupkg.sha512", - "runtime.native.System.Net.Security.nuspec" - ] - }, - "runtime.native.System.Security.Cryptography/4.0.0": { - "sha512": "2CQK0jmO6Eu7ZeMgD+LOFbNJSXHFVQbCJJkEyEwowh1SCgYnrn9W9RykMfpeeVGw7h4IBvYikzpGUlmZTUafJw==", - "type": "package", - "path": "runtime.native.System.Security.Cryptography/4.0.0", - "files": [ - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.System.Security.Cryptography.4.0.0.nupkg.sha512", - "runtime.native.System.Security.Cryptography.nuspec" - ] - }, - "SQLite/3.12.2": { - "sha512": "XYNQJt2eFqGluWP+fDaiNrV1v3kA+VsU2ygUjLx7zqzhIZKlAjSYMZLldmbGNnlNC5rKR+0LTrN0IA9dZkDyFw==", - "type": "package", - "path": "SQLite/3.12.2", - "files": [ - "SQLite.3.12.2.nupkg.sha512", - "SQLite.nuspec" - ] - }, - "SQLite.Native/3.12.2": { - "sha512": "/5BdEFTaCziE6K5OG0bjSUhPo+LRmFcmyriFWEZNSuHaiqSp69sVngTb/Yo8mH6JykMA79BFdCBLMW+2E3pnuA==", - "type": "package", - "path": "SQLite.Native/3.12.2", - "files": [ - "SQLite.Native.3.12.2.nupkg.sha512", - "SQLite.Native.nuspec", - "build/net45/SQLite.Native.props", - "runtimes/linux-x64/native/libsqlite3.so", - "runtimes/osx-x64/native/libsqlite3.dylib", - "runtimes/win7-x64/native/sqlite3.dll", - "runtimes/win7-x86/native/sqlite3.dll" - ] - }, - "System.AppContext/4.1.0": { - "sha512": "3QjO4jNV7PdKkmQAVp9atA+usVnKRwI3Kx1nMwJ93T0LcQfx7pKAYk0nKz5wn1oP5iqlhZuy6RXOFdhr7rDwow==", - "type": "package", - "path": "System.AppContext/4.1.0", - "files": [ - "System.AppContext.4.1.0.nupkg.sha512", - "System.AppContext.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.AppContext.dll", - "lib/net463/System.AppContext.dll", - "lib/netcore50/System.AppContext.dll", - "lib/netstandard1.6/System.AppContext.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.AppContext.dll", - "ref/net463/System.AppContext.dll", - "ref/netstandard/_._", - "ref/netstandard1.3/System.AppContext.dll", - "ref/netstandard1.3/System.AppContext.xml", - "ref/netstandard1.3/de/System.AppContext.xml", - "ref/netstandard1.3/es/System.AppContext.xml", - "ref/netstandard1.3/fr/System.AppContext.xml", - "ref/netstandard1.3/it/System.AppContext.xml", - "ref/netstandard1.3/ja/System.AppContext.xml", - "ref/netstandard1.3/ko/System.AppContext.xml", - "ref/netstandard1.3/ru/System.AppContext.xml", - "ref/netstandard1.3/zh-hans/System.AppContext.xml", - "ref/netstandard1.3/zh-hant/System.AppContext.xml", - "ref/netstandard1.6/System.AppContext.dll", - "ref/netstandard1.6/System.AppContext.xml", - "ref/netstandard1.6/de/System.AppContext.xml", - "ref/netstandard1.6/es/System.AppContext.xml", - "ref/netstandard1.6/fr/System.AppContext.xml", - "ref/netstandard1.6/it/System.AppContext.xml", - "ref/netstandard1.6/ja/System.AppContext.xml", - "ref/netstandard1.6/ko/System.AppContext.xml", - "ref/netstandard1.6/ru/System.AppContext.xml", - "ref/netstandard1.6/zh-hans/System.AppContext.xml", - "ref/netstandard1.6/zh-hant/System.AppContext.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.AppContext.dll" - ] - }, - "System.Buffers/4.0.0": { - "sha512": "msXumHfjjURSkvxUjYuq4N2ghHoRi2VpXcKMA7gK6ujQfU3vGpl+B6ld0ATRg+FZFpRyA6PgEPA+VlIkTeNf2w==", - "type": "package", - "path": "System.Buffers/4.0.0", - "files": [ - "System.Buffers.4.0.0.nupkg.sha512", - "System.Buffers.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.1/.xml", - "lib/netstandard1.1/System.Buffers.dll" - ] - }, - "System.Collections/4.0.11": { - "sha512": "YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==", - "type": "package", - "path": "System.Collections/4.0.11", - "files": [ - "System.Collections.4.0.11.nupkg.sha512", - "System.Collections.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Collections.dll", - "ref/netcore50/System.Collections.xml", - "ref/netcore50/de/System.Collections.xml", - "ref/netcore50/es/System.Collections.xml", - "ref/netcore50/fr/System.Collections.xml", - "ref/netcore50/it/System.Collections.xml", - "ref/netcore50/ja/System.Collections.xml", - "ref/netcore50/ko/System.Collections.xml", - "ref/netcore50/ru/System.Collections.xml", - "ref/netcore50/zh-hans/System.Collections.xml", - "ref/netcore50/zh-hant/System.Collections.xml", - "ref/netstandard1.0/System.Collections.dll", - "ref/netstandard1.0/System.Collections.xml", - "ref/netstandard1.0/de/System.Collections.xml", - "ref/netstandard1.0/es/System.Collections.xml", - "ref/netstandard1.0/fr/System.Collections.xml", - "ref/netstandard1.0/it/System.Collections.xml", - "ref/netstandard1.0/ja/System.Collections.xml", - "ref/netstandard1.0/ko/System.Collections.xml", - "ref/netstandard1.0/ru/System.Collections.xml", - "ref/netstandard1.0/zh-hans/System.Collections.xml", - "ref/netstandard1.0/zh-hant/System.Collections.xml", - "ref/netstandard1.3/System.Collections.dll", - "ref/netstandard1.3/System.Collections.xml", - "ref/netstandard1.3/de/System.Collections.xml", - "ref/netstandard1.3/es/System.Collections.xml", - "ref/netstandard1.3/fr/System.Collections.xml", - "ref/netstandard1.3/it/System.Collections.xml", - "ref/netstandard1.3/ja/System.Collections.xml", - "ref/netstandard1.3/ko/System.Collections.xml", - "ref/netstandard1.3/ru/System.Collections.xml", - "ref/netstandard1.3/zh-hans/System.Collections.xml", - "ref/netstandard1.3/zh-hant/System.Collections.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Collections.Concurrent/4.0.12": { - "sha512": "2gBcbb3drMLgxlI0fBfxMA31ec6AEyYCHygGse4vxceJan8mRIWeKJ24BFzN7+bi/NFTgdIgufzb94LWO5EERQ==", - "type": "package", - "path": "System.Collections.Concurrent/4.0.12", - "files": [ - "System.Collections.Concurrent.4.0.12.nupkg.sha512", - "System.Collections.Concurrent.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Collections.Concurrent.dll", - "lib/netstandard1.3/System.Collections.Concurrent.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Collections.Concurrent.dll", - "ref/netcore50/System.Collections.Concurrent.xml", - "ref/netcore50/de/System.Collections.Concurrent.xml", - "ref/netcore50/es/System.Collections.Concurrent.xml", - "ref/netcore50/fr/System.Collections.Concurrent.xml", - "ref/netcore50/it/System.Collections.Concurrent.xml", - "ref/netcore50/ja/System.Collections.Concurrent.xml", - "ref/netcore50/ko/System.Collections.Concurrent.xml", - "ref/netcore50/ru/System.Collections.Concurrent.xml", - "ref/netcore50/zh-hans/System.Collections.Concurrent.xml", - "ref/netcore50/zh-hant/System.Collections.Concurrent.xml", - "ref/netstandard1.1/System.Collections.Concurrent.dll", - "ref/netstandard1.1/System.Collections.Concurrent.xml", - "ref/netstandard1.1/de/System.Collections.Concurrent.xml", - "ref/netstandard1.1/es/System.Collections.Concurrent.xml", - "ref/netstandard1.1/fr/System.Collections.Concurrent.xml", - "ref/netstandard1.1/it/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ja/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ko/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ru/System.Collections.Concurrent.xml", - "ref/netstandard1.1/zh-hans/System.Collections.Concurrent.xml", - "ref/netstandard1.1/zh-hant/System.Collections.Concurrent.xml", - "ref/netstandard1.3/System.Collections.Concurrent.dll", - "ref/netstandard1.3/System.Collections.Concurrent.xml", - "ref/netstandard1.3/de/System.Collections.Concurrent.xml", - "ref/netstandard1.3/es/System.Collections.Concurrent.xml", - "ref/netstandard1.3/fr/System.Collections.Concurrent.xml", - "ref/netstandard1.3/it/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ja/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ko/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ru/System.Collections.Concurrent.xml", - "ref/netstandard1.3/zh-hans/System.Collections.Concurrent.xml", - "ref/netstandard1.3/zh-hant/System.Collections.Concurrent.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Collections.Immutable/1.2.0": { - "sha512": "Cma8cBW6di16ZLibL8LYQ+cLjGzoKxpOTu/faZfDcx94ZjAGq6Nv5RO7+T1YZXqEXTZP9rt1wLVEONVpURtUqw==", - "type": "package", - "path": "System.Collections.Immutable/1.2.0", - "files": [ - "System.Collections.Immutable.1.2.0.nupkg.sha512", - "System.Collections.Immutable.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Collections.Immutable.dll", - "lib/netstandard1.0/System.Collections.Immutable.xml", - "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll", - "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.xml" - ] - }, - "System.Collections.NonGeneric/4.0.1": { - "sha512": "hMxFT2RhhlffyCdKLDXjx8WEC5JfCvNozAZxCablAuFRH74SCV4AgzE8yJCh/73bFnEoZgJ9MJmkjQ0dJmnKqA==", - "type": "package", - "path": "System.Collections.NonGeneric/4.0.1", - "files": [ - "System.Collections.NonGeneric.4.0.1.nupkg.sha512", - "System.Collections.NonGeneric.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Collections.NonGeneric.dll", - "lib/netstandard1.3/System.Collections.NonGeneric.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Collections.NonGeneric.dll", - "ref/netstandard1.3/System.Collections.NonGeneric.dll", - "ref/netstandard1.3/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/de/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/es/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/fr/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/it/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/ja/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/ko/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/ru/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/zh-hans/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/zh-hant/System.Collections.NonGeneric.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Collections.Specialized/4.0.1": { - "sha512": "/HKQyVP0yH1I0YtK7KJL/28snxHNH/bi+0lgk/+MbURF6ULhAE31MDI+NZDerNWu264YbxklXCCygISgm+HMug==", - "type": "package", - "path": "System.Collections.Specialized/4.0.1", - "files": [ - "System.Collections.Specialized.4.0.1.nupkg.sha512", - "System.Collections.Specialized.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Collections.Specialized.dll", - "lib/netstandard1.3/System.Collections.Specialized.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Collections.Specialized.dll", - "ref/netstandard1.3/System.Collections.Specialized.dll", - "ref/netstandard1.3/System.Collections.Specialized.xml", - "ref/netstandard1.3/de/System.Collections.Specialized.xml", - "ref/netstandard1.3/es/System.Collections.Specialized.xml", - "ref/netstandard1.3/fr/System.Collections.Specialized.xml", - "ref/netstandard1.3/it/System.Collections.Specialized.xml", - "ref/netstandard1.3/ja/System.Collections.Specialized.xml", - "ref/netstandard1.3/ko/System.Collections.Specialized.xml", - "ref/netstandard1.3/ru/System.Collections.Specialized.xml", - "ref/netstandard1.3/zh-hans/System.Collections.Specialized.xml", - "ref/netstandard1.3/zh-hant/System.Collections.Specialized.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.ComponentModel/4.0.1": { - "sha512": "oBZFnm7seFiVfugsIyOvQCWobNZs7FzqDV/B7tx20Ep/l3UUFCPDkdTnCNaJZTU27zjeODmy2C/cP60u3D4c9w==", - "type": "package", - "path": "System.ComponentModel/4.0.1", - "files": [ - "System.ComponentModel.4.0.1.nupkg.sha512", - "System.ComponentModel.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.ComponentModel.dll", - "lib/netstandard1.3/System.ComponentModel.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.ComponentModel.dll", - "ref/netcore50/System.ComponentModel.xml", - "ref/netcore50/de/System.ComponentModel.xml", - "ref/netcore50/es/System.ComponentModel.xml", - "ref/netcore50/fr/System.ComponentModel.xml", - "ref/netcore50/it/System.ComponentModel.xml", - "ref/netcore50/ja/System.ComponentModel.xml", - "ref/netcore50/ko/System.ComponentModel.xml", - "ref/netcore50/ru/System.ComponentModel.xml", - "ref/netcore50/zh-hans/System.ComponentModel.xml", - "ref/netcore50/zh-hant/System.ComponentModel.xml", - "ref/netstandard1.0/System.ComponentModel.dll", - "ref/netstandard1.0/System.ComponentModel.xml", - "ref/netstandard1.0/de/System.ComponentModel.xml", - "ref/netstandard1.0/es/System.ComponentModel.xml", - "ref/netstandard1.0/fr/System.ComponentModel.xml", - "ref/netstandard1.0/it/System.ComponentModel.xml", - "ref/netstandard1.0/ja/System.ComponentModel.xml", - "ref/netstandard1.0/ko/System.ComponentModel.xml", - "ref/netstandard1.0/ru/System.ComponentModel.xml", - "ref/netstandard1.0/zh-hans/System.ComponentModel.xml", - "ref/netstandard1.0/zh-hant/System.ComponentModel.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.ComponentModel.Annotations/4.1.0": { - "sha512": "rhnz80h8NnHJzoi0nbQJLRR2cJznyqG168q1bgoSpe5qpaME2SguXzuEzpY68nFCi2kBgHpbU4bRN2cP3unYRA==", - "type": "package", - "path": "System.ComponentModel.Annotations/4.1.0", - "files": [ - "System.ComponentModel.Annotations.4.1.0.nupkg.sha512", - "System.ComponentModel.Annotations.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net461/System.ComponentModel.Annotations.dll", - "lib/netcore50/System.ComponentModel.Annotations.dll", - "lib/netstandard1.4/System.ComponentModel.Annotations.dll", - "lib/portable-net45+win8/_._", - "lib/win8/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net461/System.ComponentModel.Annotations.dll", - "ref/netcore50/System.ComponentModel.Annotations.dll", - "ref/netcore50/System.ComponentModel.Annotations.xml", - "ref/netcore50/de/System.ComponentModel.Annotations.xml", - "ref/netcore50/es/System.ComponentModel.Annotations.xml", - "ref/netcore50/fr/System.ComponentModel.Annotations.xml", - "ref/netcore50/it/System.ComponentModel.Annotations.xml", - "ref/netcore50/ja/System.ComponentModel.Annotations.xml", - "ref/netcore50/ko/System.ComponentModel.Annotations.xml", - "ref/netcore50/ru/System.ComponentModel.Annotations.xml", - "ref/netcore50/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netcore50/zh-hant/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/System.ComponentModel.Annotations.dll", - "ref/netstandard1.1/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/de/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/es/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/fr/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/it/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/ja/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/ko/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/ru/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/zh-hant/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/System.ComponentModel.Annotations.dll", - "ref/netstandard1.3/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/de/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/es/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/fr/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/it/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/ja/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/ko/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/ru/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/zh-hant/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/System.ComponentModel.Annotations.dll", - "ref/netstandard1.4/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/de/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/es/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/fr/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/it/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/ja/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/ko/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/ru/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/zh-hant/System.ComponentModel.Annotations.xml", - "ref/portable-net45+win8/_._", - "ref/win8/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.ComponentModel.Primitives/4.1.0": { - "sha512": "sc/7eVCdxPrp3ljpgTKVaQGUXiW05phNWvtv/m2kocXqrUQvTVWKou1Edas2aDjTThLPZOxPYIGNb/HN0QjURg==", - "type": "package", - "path": "System.ComponentModel.Primitives/4.1.0", - "files": [ - "System.ComponentModel.Primitives.4.1.0.nupkg.sha512", - "System.ComponentModel.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/System.ComponentModel.Primitives.dll", - "lib/netstandard1.0/System.ComponentModel.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/System.ComponentModel.Primitives.dll", - "ref/netstandard1.0/System.ComponentModel.Primitives.dll", - "ref/netstandard1.0/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/de/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/es/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/fr/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/it/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/ja/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/ko/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/ru/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.ComponentModel.Primitives.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.ComponentModel.TypeConverter/4.1.0": { - "sha512": "MnDAlaeJZy9pdB5ZdOlwdxfpI+LJQ6e0hmH7d2+y2LkiD8DRJynyDYl4Xxf3fWFm7SbEwBZh4elcfzONQLOoQw==", - "type": "package", - "path": "System.ComponentModel.TypeConverter/4.1.0", - "files": [ - "System.ComponentModel.TypeConverter.4.1.0.nupkg.sha512", - "System.ComponentModel.TypeConverter.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/System.ComponentModel.TypeConverter.dll", - "lib/net462/System.ComponentModel.TypeConverter.dll", - "lib/netstandard1.0/System.ComponentModel.TypeConverter.dll", - "lib/netstandard1.5/System.ComponentModel.TypeConverter.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/System.ComponentModel.TypeConverter.dll", - "ref/net462/System.ComponentModel.TypeConverter.dll", - "ref/netstandard1.0/System.ComponentModel.TypeConverter.dll", - "ref/netstandard1.0/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/de/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/es/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/fr/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/it/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/ja/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/ko/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/ru/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/zh-hans/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/zh-hant/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/System.ComponentModel.TypeConverter.dll", - "ref/netstandard1.5/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/de/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/es/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/fr/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/it/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/ja/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/ko/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/ru/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/zh-hans/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/zh-hant/System.ComponentModel.TypeConverter.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Console/4.0.0": { - "sha512": "qSKUSOIiYA/a0g5XXdxFcUFmv1hNICBD7QZ0QhGYVipPIhvpiydY8VZqr1thmCXvmn8aipMg64zuanB4eotK9A==", - "type": "package", - "path": "System.Console/4.0.0", - "files": [ - "System.Console.4.0.0.nupkg.sha512", - "System.Console.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Console.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Console.dll", - "ref/netstandard1.3/System.Console.dll", - "ref/netstandard1.3/System.Console.xml", - "ref/netstandard1.3/de/System.Console.xml", - "ref/netstandard1.3/es/System.Console.xml", - "ref/netstandard1.3/fr/System.Console.xml", - "ref/netstandard1.3/it/System.Console.xml", - "ref/netstandard1.3/ja/System.Console.xml", - "ref/netstandard1.3/ko/System.Console.xml", - "ref/netstandard1.3/ru/System.Console.xml", - "ref/netstandard1.3/zh-hans/System.Console.xml", - "ref/netstandard1.3/zh-hant/System.Console.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Data.Common/4.1.0": { - "sha512": "epU8jeTe7aE7RqGHq9rZ8b0Q4Ah7DgubzHQblgZMSqgW1saW868WmooSyC5ywf8upLBkcVLDu93W9GPWUYsU2Q==", - "type": "package", - "path": "System.Data.Common/4.1.0", - "files": [ - "System.Data.Common.4.1.0.nupkg.sha512", - "System.Data.Common.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net451/System.Data.Common.dll", - "lib/netstandard1.2/System.Data.Common.dll", - "lib/portable-net451+win8+wp8+wpa81/System.Data.Common.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net451/System.Data.Common.dll", - "ref/netstandard1.2/System.Data.Common.dll", - "ref/netstandard1.2/System.Data.Common.xml", - "ref/netstandard1.2/de/System.Data.Common.xml", - "ref/netstandard1.2/es/System.Data.Common.xml", - "ref/netstandard1.2/fr/System.Data.Common.xml", - "ref/netstandard1.2/it/System.Data.Common.xml", - "ref/netstandard1.2/ja/System.Data.Common.xml", - "ref/netstandard1.2/ko/System.Data.Common.xml", - "ref/netstandard1.2/ru/System.Data.Common.xml", - "ref/netstandard1.2/zh-hans/System.Data.Common.xml", - "ref/netstandard1.2/zh-hant/System.Data.Common.xml", - "ref/portable-net451+win8+wp8+wpa81/System.Data.Common.dll", - "ref/portable-net451+win8+wp8+wpa81/System.Data.Common.xml", - "ref/portable-net451+win8+wp8+wpa81/de/System.Data.Common.xml", - "ref/portable-net451+win8+wp8+wpa81/es/System.Data.Common.xml", - "ref/portable-net451+win8+wp8+wpa81/fr/System.Data.Common.xml", - "ref/portable-net451+win8+wp8+wpa81/it/System.Data.Common.xml", - "ref/portable-net451+win8+wp8+wpa81/ja/System.Data.Common.xml", - "ref/portable-net451+win8+wp8+wpa81/ko/System.Data.Common.xml", - "ref/portable-net451+win8+wp8+wpa81/ru/System.Data.Common.xml", - "ref/portable-net451+win8+wp8+wpa81/zh-hans/System.Data.Common.xml", - "ref/portable-net451+win8+wp8+wpa81/zh-hant/System.Data.Common.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Diagnostics.Contracts/4.0.1": { - "sha512": "HvQQjy712vnlpPxaloZYkuE78Gn353L0SJLJVeLcNASeg9c4qla2a1Xq8I7B3jZoDzKPtHTkyVO7AZ5tpeQGuA==", - "type": "package", - "path": "System.Diagnostics.Contracts/4.0.1", - "files": [ - "System.Diagnostics.Contracts.4.0.1.nupkg.sha512", - "System.Diagnostics.Contracts.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Diagnostics.Contracts.dll", - "lib/netstandard1.0/System.Diagnostics.Contracts.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Diagnostics.Contracts.dll", - "ref/netcore50/System.Diagnostics.Contracts.xml", - "ref/netcore50/de/System.Diagnostics.Contracts.xml", - "ref/netcore50/es/System.Diagnostics.Contracts.xml", - "ref/netcore50/fr/System.Diagnostics.Contracts.xml", - "ref/netcore50/it/System.Diagnostics.Contracts.xml", - "ref/netcore50/ja/System.Diagnostics.Contracts.xml", - "ref/netcore50/ko/System.Diagnostics.Contracts.xml", - "ref/netcore50/ru/System.Diagnostics.Contracts.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Contracts.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/System.Diagnostics.Contracts.dll", - "ref/netstandard1.0/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/de/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/es/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/fr/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/it/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/ja/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/ko/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/ru/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/zh-hans/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/zh-hant/System.Diagnostics.Contracts.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Diagnostics.Contracts.dll" - ] - }, - "System.Diagnostics.Debug/4.0.11": { - "sha512": "w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==", - "type": "package", - "path": "System.Diagnostics.Debug/4.0.11", - "files": [ - "System.Diagnostics.Debug.4.0.11.nupkg.sha512", - "System.Diagnostics.Debug.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Diagnostics.Debug.dll", - "ref/netcore50/System.Diagnostics.Debug.xml", - "ref/netcore50/de/System.Diagnostics.Debug.xml", - "ref/netcore50/es/System.Diagnostics.Debug.xml", - "ref/netcore50/fr/System.Diagnostics.Debug.xml", - "ref/netcore50/it/System.Diagnostics.Debug.xml", - "ref/netcore50/ja/System.Diagnostics.Debug.xml", - "ref/netcore50/ko/System.Diagnostics.Debug.xml", - "ref/netcore50/ru/System.Diagnostics.Debug.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Debug.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/System.Diagnostics.Debug.dll", - "ref/netstandard1.0/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/de/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/es/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/fr/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/it/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ja/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ko/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ru/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/zh-hans/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/zh-hant/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/System.Diagnostics.Debug.dll", - "ref/netstandard1.3/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/de/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/es/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/it/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Debug.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Diagnostics.DiagnosticSource/4.0.0": { - "sha512": "YKglnq4BMTJxfcr6nuT08g+yJ0UxdePIHxosiLuljuHIUR6t4KhFsyaHOaOc1Ofqp0PUvJ0EmcgiEz6T7vEx3w==", - "type": "package", - "path": "System.Diagnostics.DiagnosticSource/4.0.0", - "files": [ - "System.Diagnostics.DiagnosticSource.4.0.0.nupkg.sha512", - "System.Diagnostics.DiagnosticSource.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Diagnostics.DiagnosticSource.dll", - "lib/net46/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.xml", - "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.dll", - "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.xml" - ] - }, - "System.Diagnostics.FileVersionInfo/4.0.0": { - "sha512": "qjF74OTAU+mRhLaL4YSfiWy3vj6T3AOz8AW37l5zCwfbBfj0k7E94XnEsRaf2TnhE/7QaV6Hvqakoy2LoV8MVg==", - "type": "package", - "path": "System.Diagnostics.FileVersionInfo/4.0.0", - "files": [ - "System.Diagnostics.FileVersionInfo.4.0.0.nupkg.sha512", - "System.Diagnostics.FileVersionInfo.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Diagnostics.FileVersionInfo.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Diagnostics.FileVersionInfo.dll", - "ref/netstandard1.3/System.Diagnostics.FileVersionInfo.dll", - "ref/netstandard1.3/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/de/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/es/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/fr/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/it/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/ja/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/ko/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/ru/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.FileVersionInfo.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll", - "runtimes/win/lib/net46/System.Diagnostics.FileVersionInfo.dll", - "runtimes/win/lib/netcore50/System.Diagnostics.FileVersionInfo.dll", - "runtimes/win/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll" - ] - }, - "System.Diagnostics.Process/4.1.0": { - "sha512": "mpVZ5bnlSs3tTeJ6jYyDJEIa6tavhAd88lxq1zbYhkkCu0Pno2+gHXcvZcoygq2d8JxW3gojXqNJMTAshduqZA==", - "type": "package", - "path": "System.Diagnostics.Process/4.1.0", - "files": [ - "System.Diagnostics.Process.4.1.0.nupkg.sha512", - "System.Diagnostics.Process.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Diagnostics.Process.dll", - "lib/net461/System.Diagnostics.Process.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Diagnostics.Process.dll", - "ref/net461/System.Diagnostics.Process.dll", - "ref/netstandard1.3/System.Diagnostics.Process.dll", - "ref/netstandard1.3/System.Diagnostics.Process.xml", - "ref/netstandard1.3/de/System.Diagnostics.Process.xml", - "ref/netstandard1.3/es/System.Diagnostics.Process.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Process.xml", - "ref/netstandard1.3/it/System.Diagnostics.Process.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Process.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Process.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Process.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Process.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Process.xml", - "ref/netstandard1.4/System.Diagnostics.Process.dll", - "ref/netstandard1.4/System.Diagnostics.Process.xml", - "ref/netstandard1.4/de/System.Diagnostics.Process.xml", - "ref/netstandard1.4/es/System.Diagnostics.Process.xml", - "ref/netstandard1.4/fr/System.Diagnostics.Process.xml", - "ref/netstandard1.4/it/System.Diagnostics.Process.xml", - "ref/netstandard1.4/ja/System.Diagnostics.Process.xml", - "ref/netstandard1.4/ko/System.Diagnostics.Process.xml", - "ref/netstandard1.4/ru/System.Diagnostics.Process.xml", - "ref/netstandard1.4/zh-hans/System.Diagnostics.Process.xml", - "ref/netstandard1.4/zh-hant/System.Diagnostics.Process.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/linux/lib/netstandard1.4/System.Diagnostics.Process.dll", - "runtimes/osx/lib/netstandard1.4/System.Diagnostics.Process.dll", - "runtimes/win/lib/net46/System.Diagnostics.Process.dll", - "runtimes/win/lib/net461/System.Diagnostics.Process.dll", - "runtimes/win/lib/netstandard1.4/System.Diagnostics.Process.dll", - "runtimes/win7/lib/netcore50/_._" - ] - }, - "System.Diagnostics.StackTrace/4.0.1": { - "sha512": "6i2EbRq0lgGfiZ+FDf0gVaw9qeEU+7IS2+wbZJmFVpvVzVOgZEt0ScZtyenuBvs6iDYbGiF51bMAa0oDP/tujQ==", - "type": "package", - "path": "System.Diagnostics.StackTrace/4.0.1", - "files": [ - "System.Diagnostics.StackTrace.4.0.1.nupkg.sha512", - "System.Diagnostics.StackTrace.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Diagnostics.StackTrace.dll", - "lib/netstandard1.3/System.Diagnostics.StackTrace.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Diagnostics.StackTrace.dll", - "ref/netstandard1.3/System.Diagnostics.StackTrace.dll", - "ref/netstandard1.3/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/de/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/es/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/fr/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/it/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/ja/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/ko/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/ru/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.StackTrace.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Diagnostics.StackTrace.dll" - ] - }, - "System.Diagnostics.Tools/4.0.1": { - "sha512": "xBfJ8pnd4C17dWaC9FM6aShzbJcRNMChUMD42I6772KGGrqaFdumwhn9OdM68erj1ueNo3xdQ1EwiFjK5k8p0g==", - "type": "package", - "path": "System.Diagnostics.Tools/4.0.1", - "files": [ - "System.Diagnostics.Tools.4.0.1.nupkg.sha512", - "System.Diagnostics.Tools.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Diagnostics.Tools.dll", - "ref/netcore50/System.Diagnostics.Tools.xml", - "ref/netcore50/de/System.Diagnostics.Tools.xml", - "ref/netcore50/es/System.Diagnostics.Tools.xml", - "ref/netcore50/fr/System.Diagnostics.Tools.xml", - "ref/netcore50/it/System.Diagnostics.Tools.xml", - "ref/netcore50/ja/System.Diagnostics.Tools.xml", - "ref/netcore50/ko/System.Diagnostics.Tools.xml", - "ref/netcore50/ru/System.Diagnostics.Tools.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Tools.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/System.Diagnostics.Tools.dll", - "ref/netstandard1.0/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/de/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/es/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/fr/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/it/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ja/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ko/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ru/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/zh-hans/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/zh-hant/System.Diagnostics.Tools.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Diagnostics.TraceSource/4.0.0": { - "sha512": "6WVCczFZKXwpWpzd/iJkYnsmWTSFFiU24Xx/YdHXBcu+nFI/ehTgeqdJQFbtRPzbrO3KtRNjvkhtj4t5/WwWsA==", - "type": "package", - "path": "System.Diagnostics.TraceSource/4.0.0", - "files": [ - "System.Diagnostics.TraceSource.4.0.0.nupkg.sha512", - "System.Diagnostics.TraceSource.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Diagnostics.TraceSource.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Diagnostics.TraceSource.dll", - "ref/netstandard1.3/System.Diagnostics.TraceSource.dll", - "ref/netstandard1.3/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/de/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/es/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/fr/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/it/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/ja/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/ko/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/ru/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.TraceSource.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Diagnostics.TraceSource.dll", - "runtimes/win/lib/net46/System.Diagnostics.TraceSource.dll", - "runtimes/win/lib/netstandard1.3/System.Diagnostics.TraceSource.dll" - ] - }, - "System.Diagnostics.Tracing/4.1.0": { - "sha512": "vDN1PoMZCkkdNjvZLql592oYJZgS7URcJzJ7bxeBgGtx5UtR5leNm49VmfHGqIffX4FKacHbI3H6UyNSHQknBg==", - "type": "package", - "path": "System.Diagnostics.Tracing/4.1.0", - "files": [ - "System.Diagnostics.Tracing.4.1.0.nupkg.sha512", - "System.Diagnostics.Tracing.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Diagnostics.Tracing.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Diagnostics.Tracing.dll", - "ref/netcore50/System.Diagnostics.Tracing.dll", - "ref/netcore50/System.Diagnostics.Tracing.xml", - "ref/netcore50/de/System.Diagnostics.Tracing.xml", - "ref/netcore50/es/System.Diagnostics.Tracing.xml", - "ref/netcore50/fr/System.Diagnostics.Tracing.xml", - "ref/netcore50/it/System.Diagnostics.Tracing.xml", - "ref/netcore50/ja/System.Diagnostics.Tracing.xml", - "ref/netcore50/ko/System.Diagnostics.Tracing.xml", - "ref/netcore50/ru/System.Diagnostics.Tracing.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/System.Diagnostics.Tracing.dll", - "ref/netstandard1.1/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/System.Diagnostics.Tracing.dll", - "ref/netstandard1.2/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/System.Diagnostics.Tracing.dll", - "ref/netstandard1.3/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/System.Diagnostics.Tracing.dll", - "ref/netstandard1.5/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/zh-hant/System.Diagnostics.Tracing.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Dynamic.Runtime/4.0.11": { - "sha512": "db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==", - "type": "package", - "path": "System.Dynamic.Runtime/4.0.11", - "files": [ - "System.Dynamic.Runtime.4.0.11.nupkg.sha512", - "System.Dynamic.Runtime.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Dynamic.Runtime.dll", - "lib/netstandard1.3/System.Dynamic.Runtime.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Dynamic.Runtime.dll", - "ref/netcore50/System.Dynamic.Runtime.xml", - "ref/netcore50/de/System.Dynamic.Runtime.xml", - "ref/netcore50/es/System.Dynamic.Runtime.xml", - "ref/netcore50/fr/System.Dynamic.Runtime.xml", - "ref/netcore50/it/System.Dynamic.Runtime.xml", - "ref/netcore50/ja/System.Dynamic.Runtime.xml", - "ref/netcore50/ko/System.Dynamic.Runtime.xml", - "ref/netcore50/ru/System.Dynamic.Runtime.xml", - "ref/netcore50/zh-hans/System.Dynamic.Runtime.xml", - "ref/netcore50/zh-hant/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/System.Dynamic.Runtime.dll", - "ref/netstandard1.0/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/de/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/es/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/fr/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/it/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ja/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ko/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ru/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/zh-hans/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/zh-hant/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/System.Dynamic.Runtime.dll", - "ref/netstandard1.3/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/de/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/es/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/fr/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/it/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ja/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ko/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ru/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/zh-hans/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/zh-hant/System.Dynamic.Runtime.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll" - ] - }, - "System.Globalization/4.0.11": { - "sha512": "B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==", - "type": "package", - "path": "System.Globalization/4.0.11", - "files": [ - "System.Globalization.4.0.11.nupkg.sha512", - "System.Globalization.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Globalization.dll", - "ref/netcore50/System.Globalization.xml", - "ref/netcore50/de/System.Globalization.xml", - "ref/netcore50/es/System.Globalization.xml", - "ref/netcore50/fr/System.Globalization.xml", - "ref/netcore50/it/System.Globalization.xml", - "ref/netcore50/ja/System.Globalization.xml", - "ref/netcore50/ko/System.Globalization.xml", - "ref/netcore50/ru/System.Globalization.xml", - "ref/netcore50/zh-hans/System.Globalization.xml", - "ref/netcore50/zh-hant/System.Globalization.xml", - "ref/netstandard1.0/System.Globalization.dll", - "ref/netstandard1.0/System.Globalization.xml", - "ref/netstandard1.0/de/System.Globalization.xml", - "ref/netstandard1.0/es/System.Globalization.xml", - "ref/netstandard1.0/fr/System.Globalization.xml", - "ref/netstandard1.0/it/System.Globalization.xml", - "ref/netstandard1.0/ja/System.Globalization.xml", - "ref/netstandard1.0/ko/System.Globalization.xml", - "ref/netstandard1.0/ru/System.Globalization.xml", - "ref/netstandard1.0/zh-hans/System.Globalization.xml", - "ref/netstandard1.0/zh-hant/System.Globalization.xml", - "ref/netstandard1.3/System.Globalization.dll", - "ref/netstandard1.3/System.Globalization.xml", - "ref/netstandard1.3/de/System.Globalization.xml", - "ref/netstandard1.3/es/System.Globalization.xml", - "ref/netstandard1.3/fr/System.Globalization.xml", - "ref/netstandard1.3/it/System.Globalization.xml", - "ref/netstandard1.3/ja/System.Globalization.xml", - "ref/netstandard1.3/ko/System.Globalization.xml", - "ref/netstandard1.3/ru/System.Globalization.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Globalization.Calendars/4.0.1": { - "sha512": "L1c6IqeQ88vuzC1P81JeHmHA8mxq8a18NUBNXnIY/BVb+TCyAaGIFbhpZt60h9FJNmisymoQkHEFSE9Vslja1Q==", - "type": "package", - "path": "System.Globalization.Calendars/4.0.1", - "files": [ - "System.Globalization.Calendars.4.0.1.nupkg.sha512", - "System.Globalization.Calendars.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Globalization.Calendars.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Globalization.Calendars.dll", - "ref/netstandard1.3/System.Globalization.Calendars.dll", - "ref/netstandard1.3/System.Globalization.Calendars.xml", - "ref/netstandard1.3/de/System.Globalization.Calendars.xml", - "ref/netstandard1.3/es/System.Globalization.Calendars.xml", - "ref/netstandard1.3/fr/System.Globalization.Calendars.xml", - "ref/netstandard1.3/it/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ja/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ko/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ru/System.Globalization.Calendars.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.Calendars.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.Calendars.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Globalization.Extensions/4.0.1": { - "sha512": "KKo23iKeOaIg61SSXwjANN7QYDr/3op3OWGGzDzz7mypx0Za0fZSeG0l6cco8Ntp8YMYkIQcAqlk8yhm5/Uhcg==", - "type": "package", - "path": "System.Globalization.Extensions/4.0.1", - "files": [ - "System.Globalization.Extensions.4.0.1.nupkg.sha512", - "System.Globalization.Extensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Globalization.Extensions.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Globalization.Extensions.dll", - "ref/netstandard1.3/System.Globalization.Extensions.dll", - "ref/netstandard1.3/System.Globalization.Extensions.xml", - "ref/netstandard1.3/de/System.Globalization.Extensions.xml", - "ref/netstandard1.3/es/System.Globalization.Extensions.xml", - "ref/netstandard1.3/fr/System.Globalization.Extensions.xml", - "ref/netstandard1.3/it/System.Globalization.Extensions.xml", - "ref/netstandard1.3/ja/System.Globalization.Extensions.xml", - "ref/netstandard1.3/ko/System.Globalization.Extensions.xml", - "ref/netstandard1.3/ru/System.Globalization.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.Extensions.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll", - "runtimes/win/lib/net46/System.Globalization.Extensions.dll", - "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll" - ] - }, - "System.Interactive.Async/3.0.0": { - "sha512": "UEM+WmG1Oq0bNbPx/E1jaIQ83QOrPfVDUyuYBtG6D6DpB77ytv9flPterMujumpHuoRjSc0ilSB8w41fQc05dw==", - "type": "package", - "path": "System.Interactive.Async/3.0.0", - "files": [ - "System.Interactive.Async.3.0.0.nupkg.sha512", - "System.Interactive.Async.nuspec", - "lib/net45/System.Interactive.Async.dll", - "lib/net45/System.Interactive.Async.xml", - "lib/netstandard1.0/System.Interactive.Async.dll", - "lib/netstandard1.0/System.Interactive.Async.xml" - ] - }, - "System.IO/4.1.0": { - "sha512": "3KlTJceQc3gnGIaHZ7UBZO26SHL1SHE4ddrmiwumFnId+CEHP+O8r386tZKaE6zlk5/mF8vifMBzHj9SaXN+mQ==", - "type": "package", - "path": "System.IO/4.1.0", - "files": [ - "System.IO.4.1.0.nupkg.sha512", - "System.IO.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.IO.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.IO.dll", - "ref/netcore50/System.IO.dll", - "ref/netcore50/System.IO.xml", - "ref/netcore50/de/System.IO.xml", - "ref/netcore50/es/System.IO.xml", - "ref/netcore50/fr/System.IO.xml", - "ref/netcore50/it/System.IO.xml", - "ref/netcore50/ja/System.IO.xml", - "ref/netcore50/ko/System.IO.xml", - "ref/netcore50/ru/System.IO.xml", - "ref/netcore50/zh-hans/System.IO.xml", - "ref/netcore50/zh-hant/System.IO.xml", - "ref/netstandard1.0/System.IO.dll", - "ref/netstandard1.0/System.IO.xml", - "ref/netstandard1.0/de/System.IO.xml", - "ref/netstandard1.0/es/System.IO.xml", - "ref/netstandard1.0/fr/System.IO.xml", - "ref/netstandard1.0/it/System.IO.xml", - "ref/netstandard1.0/ja/System.IO.xml", - "ref/netstandard1.0/ko/System.IO.xml", - "ref/netstandard1.0/ru/System.IO.xml", - "ref/netstandard1.0/zh-hans/System.IO.xml", - "ref/netstandard1.0/zh-hant/System.IO.xml", - "ref/netstandard1.3/System.IO.dll", - "ref/netstandard1.3/System.IO.xml", - "ref/netstandard1.3/de/System.IO.xml", - "ref/netstandard1.3/es/System.IO.xml", - "ref/netstandard1.3/fr/System.IO.xml", - "ref/netstandard1.3/it/System.IO.xml", - "ref/netstandard1.3/ja/System.IO.xml", - "ref/netstandard1.3/ko/System.IO.xml", - "ref/netstandard1.3/ru/System.IO.xml", - "ref/netstandard1.3/zh-hans/System.IO.xml", - "ref/netstandard1.3/zh-hant/System.IO.xml", - "ref/netstandard1.5/System.IO.dll", - "ref/netstandard1.5/System.IO.xml", - "ref/netstandard1.5/de/System.IO.xml", - "ref/netstandard1.5/es/System.IO.xml", - "ref/netstandard1.5/fr/System.IO.xml", - "ref/netstandard1.5/it/System.IO.xml", - "ref/netstandard1.5/ja/System.IO.xml", - "ref/netstandard1.5/ko/System.IO.xml", - "ref/netstandard1.5/ru/System.IO.xml", - "ref/netstandard1.5/zh-hans/System.IO.xml", - "ref/netstandard1.5/zh-hant/System.IO.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.IO.Compression/4.1.0": { - "sha512": "TjnBS6eztThSzeSib+WyVbLzEdLKUcEHN69VtS3u8aAsSc18FU6xCZlNWWsEd8SKcXAE+y1sOu7VbU8sUeM0sg==", - "type": "package", - "path": "System.IO.Compression/4.1.0", - "files": [ - "System.IO.Compression.4.1.0.nupkg.sha512", - "System.IO.Compression.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net46/System.IO.Compression.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net46/System.IO.Compression.dll", - "ref/netcore50/System.IO.Compression.dll", - "ref/netcore50/System.IO.Compression.xml", - "ref/netcore50/de/System.IO.Compression.xml", - "ref/netcore50/es/System.IO.Compression.xml", - "ref/netcore50/fr/System.IO.Compression.xml", - "ref/netcore50/it/System.IO.Compression.xml", - "ref/netcore50/ja/System.IO.Compression.xml", - "ref/netcore50/ko/System.IO.Compression.xml", - "ref/netcore50/ru/System.IO.Compression.xml", - "ref/netcore50/zh-hans/System.IO.Compression.xml", - "ref/netcore50/zh-hant/System.IO.Compression.xml", - "ref/netstandard1.1/System.IO.Compression.dll", - "ref/netstandard1.1/System.IO.Compression.xml", - "ref/netstandard1.1/de/System.IO.Compression.xml", - "ref/netstandard1.1/es/System.IO.Compression.xml", - "ref/netstandard1.1/fr/System.IO.Compression.xml", - "ref/netstandard1.1/it/System.IO.Compression.xml", - "ref/netstandard1.1/ja/System.IO.Compression.xml", - "ref/netstandard1.1/ko/System.IO.Compression.xml", - "ref/netstandard1.1/ru/System.IO.Compression.xml", - "ref/netstandard1.1/zh-hans/System.IO.Compression.xml", - "ref/netstandard1.1/zh-hant/System.IO.Compression.xml", - "ref/netstandard1.3/System.IO.Compression.dll", - "ref/netstandard1.3/System.IO.Compression.xml", - "ref/netstandard1.3/de/System.IO.Compression.xml", - "ref/netstandard1.3/es/System.IO.Compression.xml", - "ref/netstandard1.3/fr/System.IO.Compression.xml", - "ref/netstandard1.3/it/System.IO.Compression.xml", - "ref/netstandard1.3/ja/System.IO.Compression.xml", - "ref/netstandard1.3/ko/System.IO.Compression.xml", - "ref/netstandard1.3/ru/System.IO.Compression.xml", - "ref/netstandard1.3/zh-hans/System.IO.Compression.xml", - "ref/netstandard1.3/zh-hant/System.IO.Compression.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll", - "runtimes/win/lib/net46/System.IO.Compression.dll", - "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll" - ] - }, - "System.IO.Compression.ZipFile/4.0.1": { - "sha512": "hBQYJzfTbQURF10nLhd+az2NHxsU6MU7AB8RUf4IolBP5lOAm4Luho851xl+CqslmhI5ZH/el8BlngEk4lBkaQ==", - "type": "package", - "path": "System.IO.Compression.ZipFile/4.0.1", - "files": [ - "System.IO.Compression.ZipFile.4.0.1.nupkg.sha512", - "System.IO.Compression.ZipFile.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.Compression.ZipFile.dll", - "lib/netstandard1.3/System.IO.Compression.ZipFile.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.Compression.ZipFile.dll", - "ref/netstandard1.3/System.IO.Compression.ZipFile.dll", - "ref/netstandard1.3/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/de/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/es/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/fr/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/it/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ja/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ko/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ru/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/zh-hans/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/zh-hant/System.IO.Compression.ZipFile.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.IO.FileSystem/4.0.1": { - "sha512": "IBErlVq5jOggAD69bg1t0pJcHaDbJbWNUZTPI96fkYWzwYbN6D9wRHMULLDd9dHsl7C2YsxXL31LMfPI1SWt8w==", - "type": "package", - "path": "System.IO.FileSystem/4.0.1", - "files": [ - "System.IO.FileSystem.4.0.1.nupkg.sha512", - "System.IO.FileSystem.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.dll", - "ref/netstandard1.3/System.IO.FileSystem.dll", - "ref/netstandard1.3/System.IO.FileSystem.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.IO.FileSystem.Primitives/4.0.1": { - "sha512": "kWkKD203JJKxJeE74p8aF8y4Qc9r9WQx4C0cHzHPrY3fv/L/IhWnyCHaFJ3H1QPOH6A93whlQ2vG5nHlBDvzWQ==", - "type": "package", - "path": "System.IO.FileSystem.Primitives/4.0.1", - "files": [ - "System.IO.FileSystem.Primitives.4.0.1.nupkg.sha512", - "System.IO.FileSystem.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.Primitives.dll", - "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.Primitives.dll", - "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll", - "ref/netstandard1.3/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Primitives.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.IO.FileSystem.Watcher/4.0.0": { - "sha512": "qM4Wr3La+RYb/03B0mZZjbA7tHsGzDffnuXP8Sl48HW2JwCjn3kfD5qdw0sqyNNowUipcJMi9/q6sMUrOIJ6UQ==", - "type": "package", - "path": "System.IO.FileSystem.Watcher/4.0.0", - "files": [ - "System.IO.FileSystem.Watcher.4.0.0.nupkg.sha512", - "System.IO.FileSystem.Watcher.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.Watcher.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.Watcher.dll", - "ref/netstandard1.3/System.IO.FileSystem.Watcher.dll", - "ref/netstandard1.3/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Watcher.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/linux/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll", - "runtimes/osx/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll", - "runtimes/win/lib/net46/System.IO.FileSystem.Watcher.dll", - "runtimes/win/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll", - "runtimes/win7/lib/netcore50/_._" - ] - }, - "System.IO.MemoryMappedFiles/4.0.0": { - "sha512": "Xqj4xaFAnLVpss9ZSUIvB/VdJAA7GxZDnFGDKJfiGAnZ5VnFROn6eOHWepFpujCYTsh6wlZ3B33bqYkF0QJ7Eg==", - "type": "package", - "path": "System.IO.MemoryMappedFiles/4.0.0", - "files": [ - "System.IO.MemoryMappedFiles.4.0.0.nupkg.sha512", - "System.IO.MemoryMappedFiles.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.MemoryMappedFiles.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.MemoryMappedFiles.dll", - "ref/netstandard1.3/System.IO.MemoryMappedFiles.dll", - "ref/netstandard1.3/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/de/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/es/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/fr/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/it/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/ja/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/ko/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/ru/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/zh-hans/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/zh-hant/System.IO.MemoryMappedFiles.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.IO.MemoryMappedFiles.dll", - "runtimes/win/lib/net46/System.IO.MemoryMappedFiles.dll", - "runtimes/win/lib/netcore50/System.IO.MemoryMappedFiles.dll", - "runtimes/win/lib/netstandard1.3/System.IO.MemoryMappedFiles.dll" - ] - }, - "System.IO.UnmanagedMemoryStream/4.0.1": { - "sha512": "wcq0kXcpfJwdl1Y4/ZjDk7Dhx5HdLyRYYWYmD8Nn8skoGYYQd2BQWbXwjWSczip8AL4Z57o2dWWXAl4aABAKiQ==", - "type": "package", - "path": "System.IO.UnmanagedMemoryStream/4.0.1", - "files": [ - "System.IO.UnmanagedMemoryStream.4.0.1.nupkg.sha512", - "System.IO.UnmanagedMemoryStream.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.UnmanagedMemoryStream.dll", - "lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.UnmanagedMemoryStream.dll", - "ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll", - "ref/netstandard1.3/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/de/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/es/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/fr/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/it/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/ja/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/ko/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/ru/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/zh-hans/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/zh-hant/System.IO.UnmanagedMemoryStream.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Linq/4.1.0": { - "sha512": "bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==", - "type": "package", - "path": "System.Linq/4.1.0", - "files": [ - "System.Linq.4.1.0.nupkg.sha512", - "System.Linq.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Linq.dll", - "lib/netcore50/System.Linq.dll", - "lib/netstandard1.6/System.Linq.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Linq.dll", - "ref/netcore50/System.Linq.dll", - "ref/netcore50/System.Linq.xml", - "ref/netcore50/de/System.Linq.xml", - "ref/netcore50/es/System.Linq.xml", - "ref/netcore50/fr/System.Linq.xml", - "ref/netcore50/it/System.Linq.xml", - "ref/netcore50/ja/System.Linq.xml", - "ref/netcore50/ko/System.Linq.xml", - "ref/netcore50/ru/System.Linq.xml", - "ref/netcore50/zh-hans/System.Linq.xml", - "ref/netcore50/zh-hant/System.Linq.xml", - "ref/netstandard1.0/System.Linq.dll", - "ref/netstandard1.0/System.Linq.xml", - "ref/netstandard1.0/de/System.Linq.xml", - "ref/netstandard1.0/es/System.Linq.xml", - "ref/netstandard1.0/fr/System.Linq.xml", - "ref/netstandard1.0/it/System.Linq.xml", - "ref/netstandard1.0/ja/System.Linq.xml", - "ref/netstandard1.0/ko/System.Linq.xml", - "ref/netstandard1.0/ru/System.Linq.xml", - "ref/netstandard1.0/zh-hans/System.Linq.xml", - "ref/netstandard1.0/zh-hant/System.Linq.xml", - "ref/netstandard1.6/System.Linq.dll", - "ref/netstandard1.6/System.Linq.xml", - "ref/netstandard1.6/de/System.Linq.xml", - "ref/netstandard1.6/es/System.Linq.xml", - "ref/netstandard1.6/fr/System.Linq.xml", - "ref/netstandard1.6/it/System.Linq.xml", - "ref/netstandard1.6/ja/System.Linq.xml", - "ref/netstandard1.6/ko/System.Linq.xml", - "ref/netstandard1.6/ru/System.Linq.xml", - "ref/netstandard1.6/zh-hans/System.Linq.xml", - "ref/netstandard1.6/zh-hant/System.Linq.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Linq.Expressions/4.1.0": { - "sha512": "I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==", - "type": "package", - "path": "System.Linq.Expressions/4.1.0", - "files": [ - "System.Linq.Expressions.4.1.0.nupkg.sha512", - "System.Linq.Expressions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Linq.Expressions.dll", - "lib/netcore50/System.Linq.Expressions.dll", - "lib/netstandard1.6/System.Linq.Expressions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Linq.Expressions.dll", - "ref/netcore50/System.Linq.Expressions.dll", - "ref/netcore50/System.Linq.Expressions.xml", - "ref/netcore50/de/System.Linq.Expressions.xml", - "ref/netcore50/es/System.Linq.Expressions.xml", - "ref/netcore50/fr/System.Linq.Expressions.xml", - "ref/netcore50/it/System.Linq.Expressions.xml", - "ref/netcore50/ja/System.Linq.Expressions.xml", - "ref/netcore50/ko/System.Linq.Expressions.xml", - "ref/netcore50/ru/System.Linq.Expressions.xml", - "ref/netcore50/zh-hans/System.Linq.Expressions.xml", - "ref/netcore50/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.0/System.Linq.Expressions.dll", - "ref/netstandard1.0/System.Linq.Expressions.xml", - "ref/netstandard1.0/de/System.Linq.Expressions.xml", - "ref/netstandard1.0/es/System.Linq.Expressions.xml", - "ref/netstandard1.0/fr/System.Linq.Expressions.xml", - "ref/netstandard1.0/it/System.Linq.Expressions.xml", - "ref/netstandard1.0/ja/System.Linq.Expressions.xml", - "ref/netstandard1.0/ko/System.Linq.Expressions.xml", - "ref/netstandard1.0/ru/System.Linq.Expressions.xml", - "ref/netstandard1.0/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.0/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.3/System.Linq.Expressions.dll", - "ref/netstandard1.3/System.Linq.Expressions.xml", - "ref/netstandard1.3/de/System.Linq.Expressions.xml", - "ref/netstandard1.3/es/System.Linq.Expressions.xml", - "ref/netstandard1.3/fr/System.Linq.Expressions.xml", - "ref/netstandard1.3/it/System.Linq.Expressions.xml", - "ref/netstandard1.3/ja/System.Linq.Expressions.xml", - "ref/netstandard1.3/ko/System.Linq.Expressions.xml", - "ref/netstandard1.3/ru/System.Linq.Expressions.xml", - "ref/netstandard1.3/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.3/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.6/System.Linq.Expressions.dll", - "ref/netstandard1.6/System.Linq.Expressions.xml", - "ref/netstandard1.6/de/System.Linq.Expressions.xml", - "ref/netstandard1.6/es/System.Linq.Expressions.xml", - "ref/netstandard1.6/fr/System.Linq.Expressions.xml", - "ref/netstandard1.6/it/System.Linq.Expressions.xml", - "ref/netstandard1.6/ja/System.Linq.Expressions.xml", - "ref/netstandard1.6/ko/System.Linq.Expressions.xml", - "ref/netstandard1.6/ru/System.Linq.Expressions.xml", - "ref/netstandard1.6/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.6/zh-hant/System.Linq.Expressions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Linq.Expressions.dll" - ] - }, - "System.Linq.Parallel/4.0.1": { - "sha512": "J7XCa7n2cFn32uLbtceXfBFhgCk5M++50lylHKNbqTiJkw5y4Tglpi6amuJNPCvj9bLzNSI7rs1fi4joLMNRgg==", - "type": "package", - "path": "System.Linq.Parallel/4.0.1", - "files": [ - "System.Linq.Parallel.4.0.1.nupkg.sha512", - "System.Linq.Parallel.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Linq.Parallel.dll", - "lib/netstandard1.3/System.Linq.Parallel.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Linq.Parallel.dll", - "ref/netcore50/System.Linq.Parallel.xml", - "ref/netcore50/de/System.Linq.Parallel.xml", - "ref/netcore50/es/System.Linq.Parallel.xml", - "ref/netcore50/fr/System.Linq.Parallel.xml", - "ref/netcore50/it/System.Linq.Parallel.xml", - "ref/netcore50/ja/System.Linq.Parallel.xml", - "ref/netcore50/ko/System.Linq.Parallel.xml", - "ref/netcore50/ru/System.Linq.Parallel.xml", - "ref/netcore50/zh-hans/System.Linq.Parallel.xml", - "ref/netcore50/zh-hant/System.Linq.Parallel.xml", - "ref/netstandard1.1/System.Linq.Parallel.dll", - "ref/netstandard1.1/System.Linq.Parallel.xml", - "ref/netstandard1.1/de/System.Linq.Parallel.xml", - "ref/netstandard1.1/es/System.Linq.Parallel.xml", - "ref/netstandard1.1/fr/System.Linq.Parallel.xml", - "ref/netstandard1.1/it/System.Linq.Parallel.xml", - "ref/netstandard1.1/ja/System.Linq.Parallel.xml", - "ref/netstandard1.1/ko/System.Linq.Parallel.xml", - "ref/netstandard1.1/ru/System.Linq.Parallel.xml", - "ref/netstandard1.1/zh-hans/System.Linq.Parallel.xml", - "ref/netstandard1.1/zh-hant/System.Linq.Parallel.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Linq.Queryable/4.0.1": { - "sha512": "Yn/WfYe9RoRfmSLvUt2JerP0BTGGykCZkQPgojaxgzF2N0oPo+/AhB8TXOpdCcNlrG3VRtsamtK2uzsp3cqRVw==", - "type": "package", - "path": "System.Linq.Queryable/4.0.1", - "files": [ - "System.Linq.Queryable.4.0.1.nupkg.sha512", - "System.Linq.Queryable.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/monoandroid10/_._", - "lib/monotouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Linq.Queryable.dll", - "lib/netstandard1.3/System.Linq.Queryable.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/monoandroid10/_._", - "ref/monotouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Linq.Queryable.dll", - "ref/netcore50/System.Linq.Queryable.xml", - "ref/netcore50/de/System.Linq.Queryable.xml", - "ref/netcore50/es/System.Linq.Queryable.xml", - "ref/netcore50/fr/System.Linq.Queryable.xml", - "ref/netcore50/it/System.Linq.Queryable.xml", - "ref/netcore50/ja/System.Linq.Queryable.xml", - "ref/netcore50/ko/System.Linq.Queryable.xml", - "ref/netcore50/ru/System.Linq.Queryable.xml", - "ref/netcore50/zh-hans/System.Linq.Queryable.xml", - "ref/netcore50/zh-hant/System.Linq.Queryable.xml", - "ref/netstandard1.0/System.Linq.Queryable.dll", - "ref/netstandard1.0/System.Linq.Queryable.xml", - "ref/netstandard1.0/de/System.Linq.Queryable.xml", - "ref/netstandard1.0/es/System.Linq.Queryable.xml", - "ref/netstandard1.0/fr/System.Linq.Queryable.xml", - "ref/netstandard1.0/it/System.Linq.Queryable.xml", - "ref/netstandard1.0/ja/System.Linq.Queryable.xml", - "ref/netstandard1.0/ko/System.Linq.Queryable.xml", - "ref/netstandard1.0/ru/System.Linq.Queryable.xml", - "ref/netstandard1.0/zh-hans/System.Linq.Queryable.xml", - "ref/netstandard1.0/zh-hant/System.Linq.Queryable.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Net.Http/4.1.0": { - "sha512": "ULq9g3SOPVuupt+Y3U+A37coXzdNisB1neFCSKzBwo182u0RDddKJF8I5+HfyXqK6OhJPgeoAwWXrbiUXuRDsg==", - "type": "package", - "path": "System.Net.Http/4.1.0", - "files": [ - "System.Net.Http.4.1.0.nupkg.sha512", - "System.Net.Http.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/Xamarinmac20/_._", - "lib/monoandroid10/_._", - "lib/monotouch10/_._", - "lib/net45/_._", - "lib/net46/System.Net.Http.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/Xamarinmac20/_._", - "ref/monoandroid10/_._", - "ref/monotouch10/_._", - "ref/net45/_._", - "ref/net46/System.Net.Http.dll", - "ref/net46/System.Net.Http.xml", - "ref/net46/de/System.Net.Http.xml", - "ref/net46/es/System.Net.Http.xml", - "ref/net46/fr/System.Net.Http.xml", - "ref/net46/it/System.Net.Http.xml", - "ref/net46/ja/System.Net.Http.xml", - "ref/net46/ko/System.Net.Http.xml", - "ref/net46/ru/System.Net.Http.xml", - "ref/net46/zh-hans/System.Net.Http.xml", - "ref/net46/zh-hant/System.Net.Http.xml", - "ref/netcore50/System.Net.Http.dll", - "ref/netcore50/System.Net.Http.xml", - "ref/netcore50/de/System.Net.Http.xml", - "ref/netcore50/es/System.Net.Http.xml", - "ref/netcore50/fr/System.Net.Http.xml", - "ref/netcore50/it/System.Net.Http.xml", - "ref/netcore50/ja/System.Net.Http.xml", - "ref/netcore50/ko/System.Net.Http.xml", - "ref/netcore50/ru/System.Net.Http.xml", - "ref/netcore50/zh-hans/System.Net.Http.xml", - "ref/netcore50/zh-hant/System.Net.Http.xml", - "ref/netstandard1.1/System.Net.Http.dll", - "ref/netstandard1.1/System.Net.Http.xml", - "ref/netstandard1.1/de/System.Net.Http.xml", - "ref/netstandard1.1/es/System.Net.Http.xml", - "ref/netstandard1.1/fr/System.Net.Http.xml", - "ref/netstandard1.1/it/System.Net.Http.xml", - "ref/netstandard1.1/ja/System.Net.Http.xml", - "ref/netstandard1.1/ko/System.Net.Http.xml", - "ref/netstandard1.1/ru/System.Net.Http.xml", - "ref/netstandard1.1/zh-hans/System.Net.Http.xml", - "ref/netstandard1.1/zh-hant/System.Net.Http.xml", - "ref/netstandard1.3/System.Net.Http.dll", - "ref/netstandard1.3/System.Net.Http.xml", - "ref/netstandard1.3/de/System.Net.Http.xml", - "ref/netstandard1.3/es/System.Net.Http.xml", - "ref/netstandard1.3/fr/System.Net.Http.xml", - "ref/netstandard1.3/it/System.Net.Http.xml", - "ref/netstandard1.3/ja/System.Net.Http.xml", - "ref/netstandard1.3/ko/System.Net.Http.xml", - "ref/netstandard1.3/ru/System.Net.Http.xml", - "ref/netstandard1.3/zh-hans/System.Net.Http.xml", - "ref/netstandard1.3/zh-hant/System.Net.Http.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll", - "runtimes/win/lib/net46/System.Net.Http.dll", - "runtimes/win/lib/netcore50/System.Net.Http.dll", - "runtimes/win/lib/netstandard1.3/System.Net.Http.dll" - ] - }, - "System.Net.NameResolution/4.0.0": { - "sha512": "JdqRdM1Qym3YehqdKIi5LHrpypP4JMfxKQSNCJ2z4WawkG0il+N3XfNeJOxll2XrTnG7WgYYPoeiu/KOwg0DQw==", - "type": "package", - "path": "System.Net.NameResolution/4.0.0", - "files": [ - "System.Net.NameResolution.4.0.0.nupkg.sha512", - "System.Net.NameResolution.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Net.NameResolution.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Net.NameResolution.dll", - "ref/netstandard1.3/System.Net.NameResolution.dll", - "ref/netstandard1.3/System.Net.NameResolution.xml", - "ref/netstandard1.3/de/System.Net.NameResolution.xml", - "ref/netstandard1.3/es/System.Net.NameResolution.xml", - "ref/netstandard1.3/fr/System.Net.NameResolution.xml", - "ref/netstandard1.3/it/System.Net.NameResolution.xml", - "ref/netstandard1.3/ja/System.Net.NameResolution.xml", - "ref/netstandard1.3/ko/System.Net.NameResolution.xml", - "ref/netstandard1.3/ru/System.Net.NameResolution.xml", - "ref/netstandard1.3/zh-hans/System.Net.NameResolution.xml", - "ref/netstandard1.3/zh-hant/System.Net.NameResolution.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Net.NameResolution.dll", - "runtimes/win/lib/net46/System.Net.NameResolution.dll", - "runtimes/win/lib/netcore50/System.Net.NameResolution.dll", - "runtimes/win/lib/netstandard1.3/System.Net.NameResolution.dll" - ] - }, - "System.Net.Primitives/4.0.11": { - "sha512": "hVvfl4405DRjA2408luZekbPhplJK03j2Y2lSfMlny7GHXlkByw1iLnc9mgKW0GdQn73vvMcWrWewAhylXA4Nw==", - "type": "package", - "path": "System.Net.Primitives/4.0.11", - "files": [ - "System.Net.Primitives.4.0.11.nupkg.sha512", - "System.Net.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Net.Primitives.dll", - "ref/netcore50/System.Net.Primitives.xml", - "ref/netcore50/de/System.Net.Primitives.xml", - "ref/netcore50/es/System.Net.Primitives.xml", - "ref/netcore50/fr/System.Net.Primitives.xml", - "ref/netcore50/it/System.Net.Primitives.xml", - "ref/netcore50/ja/System.Net.Primitives.xml", - "ref/netcore50/ko/System.Net.Primitives.xml", - "ref/netcore50/ru/System.Net.Primitives.xml", - "ref/netcore50/zh-hans/System.Net.Primitives.xml", - "ref/netcore50/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.0/System.Net.Primitives.dll", - "ref/netstandard1.0/System.Net.Primitives.xml", - "ref/netstandard1.0/de/System.Net.Primitives.xml", - "ref/netstandard1.0/es/System.Net.Primitives.xml", - "ref/netstandard1.0/fr/System.Net.Primitives.xml", - "ref/netstandard1.0/it/System.Net.Primitives.xml", - "ref/netstandard1.0/ja/System.Net.Primitives.xml", - "ref/netstandard1.0/ko/System.Net.Primitives.xml", - "ref/netstandard1.0/ru/System.Net.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.1/System.Net.Primitives.dll", - "ref/netstandard1.1/System.Net.Primitives.xml", - "ref/netstandard1.1/de/System.Net.Primitives.xml", - "ref/netstandard1.1/es/System.Net.Primitives.xml", - "ref/netstandard1.1/fr/System.Net.Primitives.xml", - "ref/netstandard1.1/it/System.Net.Primitives.xml", - "ref/netstandard1.1/ja/System.Net.Primitives.xml", - "ref/netstandard1.1/ko/System.Net.Primitives.xml", - "ref/netstandard1.1/ru/System.Net.Primitives.xml", - "ref/netstandard1.1/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.1/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.3/System.Net.Primitives.dll", - "ref/netstandard1.3/System.Net.Primitives.xml", - "ref/netstandard1.3/de/System.Net.Primitives.xml", - "ref/netstandard1.3/es/System.Net.Primitives.xml", - "ref/netstandard1.3/fr/System.Net.Primitives.xml", - "ref/netstandard1.3/it/System.Net.Primitives.xml", - "ref/netstandard1.3/ja/System.Net.Primitives.xml", - "ref/netstandard1.3/ko/System.Net.Primitives.xml", - "ref/netstandard1.3/ru/System.Net.Primitives.xml", - "ref/netstandard1.3/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.3/zh-hant/System.Net.Primitives.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Net.Requests/4.0.11": { - "sha512": "vxGt7C0cZixN+VqoSW4Yakc1Y9WknmxauDqzxgpw/FnBdz4kQNN51l4wxdXX5VY1xjqy//+G+4CvJWp1+f+y6Q==", - "type": "package", - "path": "System.Net.Requests/4.0.11", - "files": [ - "System.Net.Requests.4.0.11.nupkg.sha512", - "System.Net.Requests.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net46/_._", - "ref/netcore50/System.Net.Requests.dll", - "ref/netcore50/System.Net.Requests.xml", - "ref/netcore50/de/System.Net.Requests.xml", - "ref/netcore50/es/System.Net.Requests.xml", - "ref/netcore50/fr/System.Net.Requests.xml", - "ref/netcore50/it/System.Net.Requests.xml", - "ref/netcore50/ja/System.Net.Requests.xml", - "ref/netcore50/ko/System.Net.Requests.xml", - "ref/netcore50/ru/System.Net.Requests.xml", - "ref/netcore50/zh-hans/System.Net.Requests.xml", - "ref/netcore50/zh-hant/System.Net.Requests.xml", - "ref/netstandard1.0/System.Net.Requests.dll", - "ref/netstandard1.0/System.Net.Requests.xml", - "ref/netstandard1.0/de/System.Net.Requests.xml", - "ref/netstandard1.0/es/System.Net.Requests.xml", - "ref/netstandard1.0/fr/System.Net.Requests.xml", - "ref/netstandard1.0/it/System.Net.Requests.xml", - "ref/netstandard1.0/ja/System.Net.Requests.xml", - "ref/netstandard1.0/ko/System.Net.Requests.xml", - "ref/netstandard1.0/ru/System.Net.Requests.xml", - "ref/netstandard1.0/zh-hans/System.Net.Requests.xml", - "ref/netstandard1.0/zh-hant/System.Net.Requests.xml", - "ref/netstandard1.1/System.Net.Requests.dll", - "ref/netstandard1.1/System.Net.Requests.xml", - "ref/netstandard1.1/de/System.Net.Requests.xml", - "ref/netstandard1.1/es/System.Net.Requests.xml", - "ref/netstandard1.1/fr/System.Net.Requests.xml", - "ref/netstandard1.1/it/System.Net.Requests.xml", - "ref/netstandard1.1/ja/System.Net.Requests.xml", - "ref/netstandard1.1/ko/System.Net.Requests.xml", - "ref/netstandard1.1/ru/System.Net.Requests.xml", - "ref/netstandard1.1/zh-hans/System.Net.Requests.xml", - "ref/netstandard1.1/zh-hant/System.Net.Requests.xml", - "ref/netstandard1.3/System.Net.Requests.dll", - "ref/netstandard1.3/System.Net.Requests.xml", - "ref/netstandard1.3/de/System.Net.Requests.xml", - "ref/netstandard1.3/es/System.Net.Requests.xml", - "ref/netstandard1.3/fr/System.Net.Requests.xml", - "ref/netstandard1.3/it/System.Net.Requests.xml", - "ref/netstandard1.3/ja/System.Net.Requests.xml", - "ref/netstandard1.3/ko/System.Net.Requests.xml", - "ref/netstandard1.3/ru/System.Net.Requests.xml", - "ref/netstandard1.3/zh-hans/System.Net.Requests.xml", - "ref/netstandard1.3/zh-hant/System.Net.Requests.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Net.Requests.dll", - "runtimes/win/lib/net46/_._", - "runtimes/win/lib/netstandard1.3/System.Net.Requests.dll" - ] - }, - "System.Net.Security/4.0.0": { - "sha512": "uM1JaYJciCc2w7efD6du0EpQ1n5ZQqE6/P43/aI4H5E59qvP+wt3l70KIUF/Ha7NaeXGoGNFPVO0MB80pVHk2g==", - "type": "package", - "path": "System.Net.Security/4.0.0", - "files": [ - "System.Net.Security.4.0.0.nupkg.sha512", - "System.Net.Security.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Net.Security.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Net.Security.dll", - "ref/netstandard1.3/System.Net.Security.dll", - "ref/netstandard1.3/System.Net.Security.xml", - "ref/netstandard1.3/de/System.Net.Security.xml", - "ref/netstandard1.3/es/System.Net.Security.xml", - "ref/netstandard1.3/fr/System.Net.Security.xml", - "ref/netstandard1.3/it/System.Net.Security.xml", - "ref/netstandard1.3/ja/System.Net.Security.xml", - "ref/netstandard1.3/ko/System.Net.Security.xml", - "ref/netstandard1.3/ru/System.Net.Security.xml", - "ref/netstandard1.3/zh-hans/System.Net.Security.xml", - "ref/netstandard1.3/zh-hant/System.Net.Security.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Net.Security.dll", - "runtimes/win/lib/net46/System.Net.Security.dll", - "runtimes/win/lib/netstandard1.3/System.Net.Security.dll", - "runtimes/win7/lib/netcore50/_._" - ] - }, - "System.Net.Sockets/4.1.0": { - "sha512": "xAz0N3dAV/aR/9g8r0Y5oEqU1JRsz29F5EGb/WVHmX3jVSLqi2/92M5hTad2aNWovruXrJpJtgZ9fccPMG9uSw==", - "type": "package", - "path": "System.Net.Sockets/4.1.0", - "files": [ - "System.Net.Sockets.4.1.0.nupkg.sha512", - "System.Net.Sockets.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Net.Sockets.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Net.Sockets.dll", - "ref/netstandard1.3/System.Net.Sockets.dll", - "ref/netstandard1.3/System.Net.Sockets.xml", - "ref/netstandard1.3/de/System.Net.Sockets.xml", - "ref/netstandard1.3/es/System.Net.Sockets.xml", - "ref/netstandard1.3/fr/System.Net.Sockets.xml", - "ref/netstandard1.3/it/System.Net.Sockets.xml", - "ref/netstandard1.3/ja/System.Net.Sockets.xml", - "ref/netstandard1.3/ko/System.Net.Sockets.xml", - "ref/netstandard1.3/ru/System.Net.Sockets.xml", - "ref/netstandard1.3/zh-hans/System.Net.Sockets.xml", - "ref/netstandard1.3/zh-hant/System.Net.Sockets.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Net.WebHeaderCollection/4.0.1": { - "sha512": "XX2TIAN+wBSAIV51BU2FvvXMdstUa8b0FBSZmDWjZdwUMmggQSifpTOZ5fNH20z9ZCg2fkV1L5SsZnpO2RQDRQ==", - "type": "package", - "path": "System.Net.WebHeaderCollection/4.0.1", - "files": [ - "System.Net.WebHeaderCollection.4.0.1.nupkg.sha512", - "System.Net.WebHeaderCollection.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/_._", - "lib/netstandard1.3/System.Net.WebHeaderCollection.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/_._", - "ref/netstandard1.3/System.Net.WebHeaderCollection.dll", - "ref/netstandard1.3/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/de/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/es/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/fr/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/it/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/ja/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/ko/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/ru/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/zh-hans/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/zh-hant/System.Net.WebHeaderCollection.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Net.WebSockets/4.0.0": { - "sha512": "2KJo8hir6Edi9jnMDAMhiJoI691xRBmKcbNpwjrvpIMOCTYOtBpSsSEGBxBDV7PKbasJNaFp1+PZz1D7xS41Hg==", - "type": "package", - "path": "System.Net.WebSockets/4.0.0", - "files": [ - "System.Net.WebSockets.4.0.0.nupkg.sha512", - "System.Net.WebSockets.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Net.WebSockets.dll", - "lib/netstandard1.3/System.Net.WebSockets.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Net.WebSockets.dll", - "ref/netstandard1.3/System.Net.WebSockets.dll", - "ref/netstandard1.3/System.Net.WebSockets.xml", - "ref/netstandard1.3/de/System.Net.WebSockets.xml", - "ref/netstandard1.3/es/System.Net.WebSockets.xml", - "ref/netstandard1.3/fr/System.Net.WebSockets.xml", - "ref/netstandard1.3/it/System.Net.WebSockets.xml", - "ref/netstandard1.3/ja/System.Net.WebSockets.xml", - "ref/netstandard1.3/ko/System.Net.WebSockets.xml", - "ref/netstandard1.3/ru/System.Net.WebSockets.xml", - "ref/netstandard1.3/zh-hans/System.Net.WebSockets.xml", - "ref/netstandard1.3/zh-hant/System.Net.WebSockets.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Net.WebSockets.Client/4.0.0": { - "sha512": "GY5h9cn0ZVsG4ORQqMytTldrqxet2RC2CSEsgWGf4XNW5jhL5SxzcUZph03xbZsgn7K3qMr+Rq+gkbJNI+FEXg==", - "type": "package", - "path": "System.Net.WebSockets.Client/4.0.0", - "files": [ - "System.Net.WebSockets.Client.4.0.0.nupkg.sha512", - "System.Net.WebSockets.Client.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Net.WebSockets.Client.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Net.WebSockets.Client.dll", - "ref/netstandard1.3/System.Net.WebSockets.Client.dll", - "ref/netstandard1.3/System.Net.WebSockets.Client.xml", - "ref/netstandard1.3/de/System.Net.WebSockets.Client.xml", - "ref/netstandard1.3/es/System.Net.WebSockets.Client.xml", - "ref/netstandard1.3/fr/System.Net.WebSockets.Client.xml", - "ref/netstandard1.3/it/System.Net.WebSockets.Client.xml", - "ref/netstandard1.3/ja/System.Net.WebSockets.Client.xml", - "ref/netstandard1.3/ko/System.Net.WebSockets.Client.xml", - "ref/netstandard1.3/ru/System.Net.WebSockets.Client.xml", - "ref/netstandard1.3/zh-hans/System.Net.WebSockets.Client.xml", - "ref/netstandard1.3/zh-hant/System.Net.WebSockets.Client.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Net.WebSockets.Client.dll", - "runtimes/win/lib/net46/System.Net.WebSockets.Client.dll", - "runtimes/win/lib/netcore50/System.Net.WebSockets.Client.dll", - "runtimes/win/lib/netstandard1.3/System.Net.WebSockets.Client.dll" - ] - }, - "System.Numerics.Vectors/4.1.1": { - "sha512": "Ex1NSKycC2wi5XBMWUGWPc3lumh6OQWFFmmpZFZz0oLht5lQ+wWPHVZumOrMJuckfUiVMd4p67BrkBos8lcF+Q==", - "type": "package", - "path": "System.Numerics.Vectors/4.1.1", - "files": [ - "System.Numerics.Vectors.4.1.1.nupkg.sha512", - "System.Numerics.Vectors.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Numerics.Vectors.dll", - "lib/net46/System.Numerics.Vectors.xml", - "lib/netstandard1.0/System.Numerics.Vectors.dll", - "lib/netstandard1.0/System.Numerics.Vectors.xml", - "lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll", - "lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.xml", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Numerics.Vectors.dll", - "ref/net46/System.Numerics.Vectors.xml", - "ref/netstandard1.0/System.Numerics.Vectors.dll", - "ref/netstandard1.0/System.Numerics.Vectors.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.ObjectModel/4.0.12": { - "sha512": "tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==", - "type": "package", - "path": "System.ObjectModel/4.0.12", - "files": [ - "System.ObjectModel.4.0.12.nupkg.sha512", - "System.ObjectModel.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.ObjectModel.dll", - "lib/netstandard1.3/System.ObjectModel.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.ObjectModel.dll", - "ref/netcore50/System.ObjectModel.xml", - "ref/netcore50/de/System.ObjectModel.xml", - "ref/netcore50/es/System.ObjectModel.xml", - "ref/netcore50/fr/System.ObjectModel.xml", - "ref/netcore50/it/System.ObjectModel.xml", - "ref/netcore50/ja/System.ObjectModel.xml", - "ref/netcore50/ko/System.ObjectModel.xml", - "ref/netcore50/ru/System.ObjectModel.xml", - "ref/netcore50/zh-hans/System.ObjectModel.xml", - "ref/netcore50/zh-hant/System.ObjectModel.xml", - "ref/netstandard1.0/System.ObjectModel.dll", - "ref/netstandard1.0/System.ObjectModel.xml", - "ref/netstandard1.0/de/System.ObjectModel.xml", - "ref/netstandard1.0/es/System.ObjectModel.xml", - "ref/netstandard1.0/fr/System.ObjectModel.xml", - "ref/netstandard1.0/it/System.ObjectModel.xml", - "ref/netstandard1.0/ja/System.ObjectModel.xml", - "ref/netstandard1.0/ko/System.ObjectModel.xml", - "ref/netstandard1.0/ru/System.ObjectModel.xml", - "ref/netstandard1.0/zh-hans/System.ObjectModel.xml", - "ref/netstandard1.0/zh-hant/System.ObjectModel.xml", - "ref/netstandard1.3/System.ObjectModel.dll", - "ref/netstandard1.3/System.ObjectModel.xml", - "ref/netstandard1.3/de/System.ObjectModel.xml", - "ref/netstandard1.3/es/System.ObjectModel.xml", - "ref/netstandard1.3/fr/System.ObjectModel.xml", - "ref/netstandard1.3/it/System.ObjectModel.xml", - "ref/netstandard1.3/ja/System.ObjectModel.xml", - "ref/netstandard1.3/ko/System.ObjectModel.xml", - "ref/netstandard1.3/ru/System.ObjectModel.xml", - "ref/netstandard1.3/zh-hans/System.ObjectModel.xml", - "ref/netstandard1.3/zh-hant/System.ObjectModel.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Private.DataContractSerialization/4.1.1": { - "sha512": "lcqFBUaCZxPiUkA4dlSOoPZGtZsAuuElH2XHgLwGLxd7ZozWetV5yiz0qGAV2AUYOqw97MtZBjbLMN16Xz4vXA==", - "type": "package", - "path": "System.Private.DataContractSerialization/4.1.1", - "files": [ - "System.Private.DataContractSerialization.4.1.1.nupkg.sha512", - "System.Private.DataContractSerialization.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.3/System.Private.DataContractSerialization.dll", - "ref/netstandard/_._", - "runtimes/aot/lib/netcore50/System.Private.DataContractSerialization.dll" - ] - }, - "System.Reflection/4.1.0": { - "sha512": "JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==", - "type": "package", - "path": "System.Reflection/4.1.0", - "files": [ - "System.Reflection.4.1.0.nupkg.sha512", - "System.Reflection.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Reflection.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Reflection.dll", - "ref/netcore50/System.Reflection.dll", - "ref/netcore50/System.Reflection.xml", - "ref/netcore50/de/System.Reflection.xml", - "ref/netcore50/es/System.Reflection.xml", - "ref/netcore50/fr/System.Reflection.xml", - "ref/netcore50/it/System.Reflection.xml", - "ref/netcore50/ja/System.Reflection.xml", - "ref/netcore50/ko/System.Reflection.xml", - "ref/netcore50/ru/System.Reflection.xml", - "ref/netcore50/zh-hans/System.Reflection.xml", - "ref/netcore50/zh-hant/System.Reflection.xml", - "ref/netstandard1.0/System.Reflection.dll", - "ref/netstandard1.0/System.Reflection.xml", - "ref/netstandard1.0/de/System.Reflection.xml", - "ref/netstandard1.0/es/System.Reflection.xml", - "ref/netstandard1.0/fr/System.Reflection.xml", - "ref/netstandard1.0/it/System.Reflection.xml", - "ref/netstandard1.0/ja/System.Reflection.xml", - "ref/netstandard1.0/ko/System.Reflection.xml", - "ref/netstandard1.0/ru/System.Reflection.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.xml", - "ref/netstandard1.3/System.Reflection.dll", - "ref/netstandard1.3/System.Reflection.xml", - "ref/netstandard1.3/de/System.Reflection.xml", - "ref/netstandard1.3/es/System.Reflection.xml", - "ref/netstandard1.3/fr/System.Reflection.xml", - "ref/netstandard1.3/it/System.Reflection.xml", - "ref/netstandard1.3/ja/System.Reflection.xml", - "ref/netstandard1.3/ko/System.Reflection.xml", - "ref/netstandard1.3/ru/System.Reflection.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.xml", - "ref/netstandard1.5/System.Reflection.dll", - "ref/netstandard1.5/System.Reflection.xml", - "ref/netstandard1.5/de/System.Reflection.xml", - "ref/netstandard1.5/es/System.Reflection.xml", - "ref/netstandard1.5/fr/System.Reflection.xml", - "ref/netstandard1.5/it/System.Reflection.xml", - "ref/netstandard1.5/ja/System.Reflection.xml", - "ref/netstandard1.5/ko/System.Reflection.xml", - "ref/netstandard1.5/ru/System.Reflection.xml", - "ref/netstandard1.5/zh-hans/System.Reflection.xml", - "ref/netstandard1.5/zh-hant/System.Reflection.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Reflection.DispatchProxy/4.0.1": { - "sha512": "GPPgWoSxQEU3aCKSOvsAc1dhTTi4iq92PUVEVfnGPGwqCf6synaAJGYLKMs5E3CuRfel8ufACWUijXqDpOlGrA==", - "type": "package", - "path": "System.Reflection.DispatchProxy/4.0.1", - "files": [ - "System.Reflection.DispatchProxy.4.0.1.nupkg.sha512", - "System.Reflection.DispatchProxy.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/netstandard1.3/System.Reflection.DispatchProxy.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/netstandard1.3/System.Reflection.DispatchProxy.dll", - "ref/netstandard1.3/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/de/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/es/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/fr/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/it/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/ja/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/ko/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/ru/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.DispatchProxy.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Reflection.DispatchProxy.dll" - ] - }, - "System.Reflection.Emit/4.0.1": { - "sha512": "P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==", - "type": "package", - "path": "System.Reflection.Emit/4.0.1", - "files": [ - "System.Reflection.Emit.4.0.1.nupkg.sha512", - "System.Reflection.Emit.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.dll", - "lib/netstandard1.3/System.Reflection.Emit.dll", - "lib/xamarinmac20/_._", - "ref/MonoAndroid10/_._", - "ref/net45/_._", - "ref/netstandard1.1/System.Reflection.Emit.dll", - "ref/netstandard1.1/System.Reflection.Emit.xml", - "ref/netstandard1.1/de/System.Reflection.Emit.xml", - "ref/netstandard1.1/es/System.Reflection.Emit.xml", - "ref/netstandard1.1/fr/System.Reflection.Emit.xml", - "ref/netstandard1.1/it/System.Reflection.Emit.xml", - "ref/netstandard1.1/ja/System.Reflection.Emit.xml", - "ref/netstandard1.1/ko/System.Reflection.Emit.xml", - "ref/netstandard1.1/ru/System.Reflection.Emit.xml", - "ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml", - "ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml", - "ref/xamarinmac20/_._" - ] - }, - "System.Reflection.Emit.ILGeneration/4.0.1": { - "sha512": "Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==", - "type": "package", - "path": "System.Reflection.Emit.ILGeneration/4.0.1", - "files": [ - "System.Reflection.Emit.ILGeneration.4.0.1.nupkg.sha512", - "System.Reflection.Emit.ILGeneration.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.ILGeneration.dll", - "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll", - "lib/portable-net45+wp8/_._", - "lib/wp80/_._", - "ref/net45/_._", - "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll", - "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/de/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/es/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/fr/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/it/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ja/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ko/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ru/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Emit.ILGeneration.xml", - "ref/portable-net45+wp8/_._", - "ref/wp80/_._", - "runtimes/aot/lib/netcore50/_._" - ] - }, - "System.Reflection.Emit.Lightweight/4.0.1": { - "sha512": "sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==", - "type": "package", - "path": "System.Reflection.Emit.Lightweight/4.0.1", - "files": [ - "System.Reflection.Emit.Lightweight.4.0.1.nupkg.sha512", - "System.Reflection.Emit.Lightweight.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.Lightweight.dll", - "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll", - "lib/portable-net45+wp8/_._", - "lib/wp80/_._", - "ref/net45/_._", - "ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll", - "ref/netstandard1.0/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/de/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/es/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/fr/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/it/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ja/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ko/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ru/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Emit.Lightweight.xml", - "ref/portable-net45+wp8/_._", - "ref/wp80/_._", - "runtimes/aot/lib/netcore50/_._" - ] - }, - "System.Reflection.Extensions/4.0.1": { - "sha512": "GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==", - "type": "package", - "path": "System.Reflection.Extensions/4.0.1", - "files": [ - "System.Reflection.Extensions.4.0.1.nupkg.sha512", - "System.Reflection.Extensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Reflection.Extensions.dll", - "ref/netcore50/System.Reflection.Extensions.xml", - "ref/netcore50/de/System.Reflection.Extensions.xml", - "ref/netcore50/es/System.Reflection.Extensions.xml", - "ref/netcore50/fr/System.Reflection.Extensions.xml", - "ref/netcore50/it/System.Reflection.Extensions.xml", - "ref/netcore50/ja/System.Reflection.Extensions.xml", - "ref/netcore50/ko/System.Reflection.Extensions.xml", - "ref/netcore50/ru/System.Reflection.Extensions.xml", - "ref/netcore50/zh-hans/System.Reflection.Extensions.xml", - "ref/netcore50/zh-hant/System.Reflection.Extensions.xml", - "ref/netstandard1.0/System.Reflection.Extensions.dll", - "ref/netstandard1.0/System.Reflection.Extensions.xml", - "ref/netstandard1.0/de/System.Reflection.Extensions.xml", - "ref/netstandard1.0/es/System.Reflection.Extensions.xml", - "ref/netstandard1.0/fr/System.Reflection.Extensions.xml", - "ref/netstandard1.0/it/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ja/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ko/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ru/System.Reflection.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Reflection.Metadata/1.3.0": { - "sha512": "jMSCxA4LSyKBGRDm/WtfkO03FkcgRzHxwvQRib1bm2GZ8ifKM1MX1al6breGCEQK280mdl9uQS7JNPXRYk90jw==", - "type": "package", - "path": "System.Reflection.Metadata/1.3.0", - "files": [ - "System.Reflection.Metadata.1.3.0.nupkg.sha512", - "System.Reflection.Metadata.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.1/System.Reflection.Metadata.dll", - "lib/netstandard1.1/System.Reflection.Metadata.xml", - "lib/portable-net45+win8/System.Reflection.Metadata.dll", - "lib/portable-net45+win8/System.Reflection.Metadata.xml" - ] - }, - "System.Reflection.Primitives/4.0.1": { - "sha512": "4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==", - "type": "package", - "path": "System.Reflection.Primitives/4.0.1", - "files": [ - "System.Reflection.Primitives.4.0.1.nupkg.sha512", - "System.Reflection.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Reflection.Primitives.dll", - "ref/netcore50/System.Reflection.Primitives.xml", - "ref/netcore50/de/System.Reflection.Primitives.xml", - "ref/netcore50/es/System.Reflection.Primitives.xml", - "ref/netcore50/fr/System.Reflection.Primitives.xml", - "ref/netcore50/it/System.Reflection.Primitives.xml", - "ref/netcore50/ja/System.Reflection.Primitives.xml", - "ref/netcore50/ko/System.Reflection.Primitives.xml", - "ref/netcore50/ru/System.Reflection.Primitives.xml", - "ref/netcore50/zh-hans/System.Reflection.Primitives.xml", - "ref/netcore50/zh-hant/System.Reflection.Primitives.xml", - "ref/netstandard1.0/System.Reflection.Primitives.dll", - "ref/netstandard1.0/System.Reflection.Primitives.xml", - "ref/netstandard1.0/de/System.Reflection.Primitives.xml", - "ref/netstandard1.0/es/System.Reflection.Primitives.xml", - "ref/netstandard1.0/fr/System.Reflection.Primitives.xml", - "ref/netstandard1.0/it/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ja/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ko/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ru/System.Reflection.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Reflection.TypeExtensions/4.1.0": { - "sha512": "tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==", - "type": "package", - "path": "System.Reflection.TypeExtensions/4.1.0", - "files": [ - "System.Reflection.TypeExtensions.4.1.0.nupkg.sha512", - "System.Reflection.TypeExtensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Reflection.TypeExtensions.dll", - "lib/net462/System.Reflection.TypeExtensions.dll", - "lib/netcore50/System.Reflection.TypeExtensions.dll", - "lib/netstandard1.5/System.Reflection.TypeExtensions.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Reflection.TypeExtensions.dll", - "ref/net462/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.3/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.3/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/de/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/es/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/fr/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/it/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ja/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ko/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ru/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.5/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/de/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/es/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/fr/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/it/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ja/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ko/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ru/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/zh-hans/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/zh-hant/System.Reflection.TypeExtensions.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll" - ] - }, - "System.Resources.Reader/4.0.0": { - "sha512": "VX1iHAoHxgrLZv+nq/9drCZI6Q4SSCzSVyUm1e0U60sqWdj6XhY7wvKmy3RvsSal9h+/vqSWwxxJsm0J4vn/jA==", - "type": "package", - "path": "System.Resources.Reader/4.0.0", - "files": [ - "System.Resources.Reader.4.0.0.nupkg.sha512", - "System.Resources.Reader.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Resources.Reader.dll" - ] - }, - "System.Resources.ResourceManager/4.0.1": { - "sha512": "TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==", - "type": "package", - "path": "System.Resources.ResourceManager/4.0.1", - "files": [ - "System.Resources.ResourceManager.4.0.1.nupkg.sha512", - "System.Resources.ResourceManager.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Resources.ResourceManager.dll", - "ref/netcore50/System.Resources.ResourceManager.xml", - "ref/netcore50/de/System.Resources.ResourceManager.xml", - "ref/netcore50/es/System.Resources.ResourceManager.xml", - "ref/netcore50/fr/System.Resources.ResourceManager.xml", - "ref/netcore50/it/System.Resources.ResourceManager.xml", - "ref/netcore50/ja/System.Resources.ResourceManager.xml", - "ref/netcore50/ko/System.Resources.ResourceManager.xml", - "ref/netcore50/ru/System.Resources.ResourceManager.xml", - "ref/netcore50/zh-hans/System.Resources.ResourceManager.xml", - "ref/netcore50/zh-hant/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/System.Resources.ResourceManager.dll", - "ref/netstandard1.0/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/de/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/es/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/fr/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/it/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ja/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ko/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ru/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/zh-hans/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/zh-hant/System.Resources.ResourceManager.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Resources.ResourceWriter/4.0.0-beta-22816": { - "sha512": "Q6wpzkZjop1J+WJXl9H0OgXQvxDQxMkqA43AVENNW4SlTzIT8rFW7tum54xYZy3QCMKK8gIfOnVqA6VbgXRq1Q==", - "type": "package", - "path": "System.Resources.ResourceWriter/4.0.0-beta-22816", - "files": [ - "License.rtf", - "System.Resources.ResourceWriter.4.0.0-beta-22816.nupkg.sha512", - "System.Resources.ResourceWriter.nuspec", - "lib/aspnetcore50/System.Resources.ResourceWriter.dll", - "lib/contract/System.Resources.ResourceWriter.dll", - "lib/net45/System.Resources.ResourceWriter.dll", - "lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Resources.ResourceWriter.dll" - ] - }, - "System.Runtime/4.1.0": { - "sha512": "v6c/4Yaa9uWsq+JMhnOFewrYkgdNHNG2eMKuNqRn8P733rNXeRCGvV5FkkjBXn2dbVkPXOsO0xjsEeM1q2zC0g==", - "type": "package", - "path": "System.Runtime/4.1.0", - "files": [ - "System.Runtime.4.1.0.nupkg.sha512", - "System.Runtime.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.dll", - "lib/portable-net45+win8+wp80+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.dll", - "ref/netcore50/System.Runtime.dll", - "ref/netcore50/System.Runtime.xml", - "ref/netcore50/de/System.Runtime.xml", - "ref/netcore50/es/System.Runtime.xml", - "ref/netcore50/fr/System.Runtime.xml", - "ref/netcore50/it/System.Runtime.xml", - "ref/netcore50/ja/System.Runtime.xml", - "ref/netcore50/ko/System.Runtime.xml", - "ref/netcore50/ru/System.Runtime.xml", - "ref/netcore50/zh-hans/System.Runtime.xml", - "ref/netcore50/zh-hant/System.Runtime.xml", - "ref/netstandard1.0/System.Runtime.dll", - "ref/netstandard1.0/System.Runtime.xml", - "ref/netstandard1.0/de/System.Runtime.xml", - "ref/netstandard1.0/es/System.Runtime.xml", - "ref/netstandard1.0/fr/System.Runtime.xml", - "ref/netstandard1.0/it/System.Runtime.xml", - "ref/netstandard1.0/ja/System.Runtime.xml", - "ref/netstandard1.0/ko/System.Runtime.xml", - "ref/netstandard1.0/ru/System.Runtime.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.xml", - "ref/netstandard1.2/System.Runtime.dll", - "ref/netstandard1.2/System.Runtime.xml", - "ref/netstandard1.2/de/System.Runtime.xml", - "ref/netstandard1.2/es/System.Runtime.xml", - "ref/netstandard1.2/fr/System.Runtime.xml", - "ref/netstandard1.2/it/System.Runtime.xml", - "ref/netstandard1.2/ja/System.Runtime.xml", - "ref/netstandard1.2/ko/System.Runtime.xml", - "ref/netstandard1.2/ru/System.Runtime.xml", - "ref/netstandard1.2/zh-hans/System.Runtime.xml", - "ref/netstandard1.2/zh-hant/System.Runtime.xml", - "ref/netstandard1.3/System.Runtime.dll", - "ref/netstandard1.3/System.Runtime.xml", - "ref/netstandard1.3/de/System.Runtime.xml", - "ref/netstandard1.3/es/System.Runtime.xml", - "ref/netstandard1.3/fr/System.Runtime.xml", - "ref/netstandard1.3/it/System.Runtime.xml", - "ref/netstandard1.3/ja/System.Runtime.xml", - "ref/netstandard1.3/ko/System.Runtime.xml", - "ref/netstandard1.3/ru/System.Runtime.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.xml", - "ref/netstandard1.5/System.Runtime.dll", - "ref/netstandard1.5/System.Runtime.xml", - "ref/netstandard1.5/de/System.Runtime.xml", - "ref/netstandard1.5/es/System.Runtime.xml", - "ref/netstandard1.5/fr/System.Runtime.xml", - "ref/netstandard1.5/it/System.Runtime.xml", - "ref/netstandard1.5/ja/System.Runtime.xml", - "ref/netstandard1.5/ko/System.Runtime.xml", - "ref/netstandard1.5/ru/System.Runtime.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.xml", - "ref/portable-net45+win8+wp80+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Runtime.CompilerServices.Unsafe/4.0.0": { - "sha512": "LDvjxLx2fkThOFo/SC+901fJrh5artALmgzeSqnVxzvFp4q3HO8BkeLyshPdcbs5zpN7Xh9G23M6sDhgIPbG9A==", - "type": "package", - "path": "System.Runtime.CompilerServices.Unsafe/4.0.0", - "files": [ - "System.Runtime.CompilerServices.Unsafe.4.0.0.nupkg.sha512", - "System.Runtime.CompilerServices.Unsafe.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll", - "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml" - ] - }, - "System.Runtime.Extensions/4.1.0": { - "sha512": "CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==", - "type": "package", - "path": "System.Runtime.Extensions/4.1.0", - "files": [ - "System.Runtime.Extensions.4.1.0.nupkg.sha512", - "System.Runtime.Extensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.Extensions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.Extensions.dll", - "ref/netcore50/System.Runtime.Extensions.dll", - "ref/netcore50/System.Runtime.Extensions.xml", - "ref/netcore50/de/System.Runtime.Extensions.xml", - "ref/netcore50/es/System.Runtime.Extensions.xml", - "ref/netcore50/fr/System.Runtime.Extensions.xml", - "ref/netcore50/it/System.Runtime.Extensions.xml", - "ref/netcore50/ja/System.Runtime.Extensions.xml", - "ref/netcore50/ko/System.Runtime.Extensions.xml", - "ref/netcore50/ru/System.Runtime.Extensions.xml", - "ref/netcore50/zh-hans/System.Runtime.Extensions.xml", - "ref/netcore50/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.0/System.Runtime.Extensions.dll", - "ref/netstandard1.0/System.Runtime.Extensions.xml", - "ref/netstandard1.0/de/System.Runtime.Extensions.xml", - "ref/netstandard1.0/es/System.Runtime.Extensions.xml", - "ref/netstandard1.0/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.0/it/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.3/System.Runtime.Extensions.dll", - "ref/netstandard1.3/System.Runtime.Extensions.xml", - "ref/netstandard1.3/de/System.Runtime.Extensions.xml", - "ref/netstandard1.3/es/System.Runtime.Extensions.xml", - "ref/netstandard1.3/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.3/it/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.5/System.Runtime.Extensions.dll", - "ref/netstandard1.5/System.Runtime.Extensions.xml", - "ref/netstandard1.5/de/System.Runtime.Extensions.xml", - "ref/netstandard1.5/es/System.Runtime.Extensions.xml", - "ref/netstandard1.5/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.5/it/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Runtime.Handles/4.0.1": { - "sha512": "nCJvEKguXEvk2ymk1gqj625vVnlK3/xdGzx0vOKicQkoquaTBJTP13AIYkocSUwHCLNBwUbXTqTWGDxBTWpt7g==", - "type": "package", - "path": "System.Runtime.Handles/4.0.1", - "files": [ - "System.Runtime.Handles.4.0.1.nupkg.sha512", - "System.Runtime.Handles.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/_._", - "ref/netstandard1.3/System.Runtime.Handles.dll", - "ref/netstandard1.3/System.Runtime.Handles.xml", - "ref/netstandard1.3/de/System.Runtime.Handles.xml", - "ref/netstandard1.3/es/System.Runtime.Handles.xml", - "ref/netstandard1.3/fr/System.Runtime.Handles.xml", - "ref/netstandard1.3/it/System.Runtime.Handles.xml", - "ref/netstandard1.3/ja/System.Runtime.Handles.xml", - "ref/netstandard1.3/ko/System.Runtime.Handles.xml", - "ref/netstandard1.3/ru/System.Runtime.Handles.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Handles.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Handles.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Runtime.InteropServices/4.1.0": { - "sha512": "16eu3kjHS633yYdkjwShDHZLRNMKVi/s0bY8ODiqJ2RfMhDMAwxZaUaWVnZ2P71kr/or+X9o/xFWtNqz8ivieQ==", - "type": "package", - "path": "System.Runtime.InteropServices/4.1.0", - "files": [ - "System.Runtime.InteropServices.4.1.0.nupkg.sha512", - "System.Runtime.InteropServices.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.InteropServices.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.InteropServices.dll", - "ref/netcore50/System.Runtime.InteropServices.dll", - "ref/netcore50/System.Runtime.InteropServices.xml", - "ref/netcore50/de/System.Runtime.InteropServices.xml", - "ref/netcore50/es/System.Runtime.InteropServices.xml", - "ref/netcore50/fr/System.Runtime.InteropServices.xml", - "ref/netcore50/it/System.Runtime.InteropServices.xml", - "ref/netcore50/ja/System.Runtime.InteropServices.xml", - "ref/netcore50/ko/System.Runtime.InteropServices.xml", - "ref/netcore50/ru/System.Runtime.InteropServices.xml", - "ref/netcore50/zh-hans/System.Runtime.InteropServices.xml", - "ref/netcore50/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/System.Runtime.InteropServices.dll", - "ref/netstandard1.1/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/System.Runtime.InteropServices.dll", - "ref/netstandard1.2/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/System.Runtime.InteropServices.dll", - "ref/netstandard1.3/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/System.Runtime.InteropServices.dll", - "ref/netstandard1.5/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.InteropServices.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Runtime.InteropServices.RuntimeInformation/4.0.0": { - "sha512": "hWPhJxc453RCa8Z29O91EmfGeZIHX1ZH2A8L6lYQVSaKzku2DfArSfMEb1/MYYzPQRJZeu0c9dmYeJKxW5Fgng==", - "type": "package", - "path": "System.Runtime.InteropServices.RuntimeInformation/4.0.0", - "files": [ - "System.Runtime.InteropServices.RuntimeInformation.4.0.0.nupkg.sha512", - "System.Runtime.InteropServices.RuntimeInformation.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/win8/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/wpa81/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll" - ] - }, - "System.Runtime.Loader/4.0.0": { - "sha512": "4UN78GOVU/mbDFcXkEWtetJT/sJ0yic2gGk1HSlSpWI0TDf421xnrZTDZnwNBapk1GQeYN7U1lTj/aQB1by6ow==", - "type": "package", - "path": "System.Runtime.Loader/4.0.0", - "files": [ - "System.Runtime.Loader.4.0.0.nupkg.sha512", - "System.Runtime.Loader.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net462/_._", - "lib/netstandard1.5/System.Runtime.Loader.dll", - "ref/netstandard1.5/System.Runtime.Loader.dll", - "ref/netstandard1.5/System.Runtime.Loader.xml", - "ref/netstandard1.5/de/System.Runtime.Loader.xml", - "ref/netstandard1.5/es/System.Runtime.Loader.xml", - "ref/netstandard1.5/fr/System.Runtime.Loader.xml", - "ref/netstandard1.5/it/System.Runtime.Loader.xml", - "ref/netstandard1.5/ja/System.Runtime.Loader.xml", - "ref/netstandard1.5/ko/System.Runtime.Loader.xml", - "ref/netstandard1.5/ru/System.Runtime.Loader.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.Loader.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.Loader.xml" - ] - }, - "System.Runtime.Numerics/4.0.1": { - "sha512": "+XbKFuzdmLP3d1o9pdHu2nxjNr2OEPqGzKeegPLCUMM71a0t50A/rOcIRmGs9wR7a8KuHX6hYs/7/TymIGLNqg==", - "type": "package", - "path": "System.Runtime.Numerics/4.0.1", - "files": [ - "System.Runtime.Numerics.4.0.1.nupkg.sha512", - "System.Runtime.Numerics.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Runtime.Numerics.dll", - "lib/netstandard1.3/System.Runtime.Numerics.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Runtime.Numerics.dll", - "ref/netcore50/System.Runtime.Numerics.xml", - "ref/netcore50/de/System.Runtime.Numerics.xml", - "ref/netcore50/es/System.Runtime.Numerics.xml", - "ref/netcore50/fr/System.Runtime.Numerics.xml", - "ref/netcore50/it/System.Runtime.Numerics.xml", - "ref/netcore50/ja/System.Runtime.Numerics.xml", - "ref/netcore50/ko/System.Runtime.Numerics.xml", - "ref/netcore50/ru/System.Runtime.Numerics.xml", - "ref/netcore50/zh-hans/System.Runtime.Numerics.xml", - "ref/netcore50/zh-hant/System.Runtime.Numerics.xml", - "ref/netstandard1.1/System.Runtime.Numerics.dll", - "ref/netstandard1.1/System.Runtime.Numerics.xml", - "ref/netstandard1.1/de/System.Runtime.Numerics.xml", - "ref/netstandard1.1/es/System.Runtime.Numerics.xml", - "ref/netstandard1.1/fr/System.Runtime.Numerics.xml", - "ref/netstandard1.1/it/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ja/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ko/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ru/System.Runtime.Numerics.xml", - "ref/netstandard1.1/zh-hans/System.Runtime.Numerics.xml", - "ref/netstandard1.1/zh-hant/System.Runtime.Numerics.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Runtime.Serialization.Primitives/4.1.1": { - "sha512": "HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==", - "type": "package", - "path": "System.Runtime.Serialization.Primitives/4.1.1", - "files": [ - "System.Runtime.Serialization.Primitives.4.1.1.nupkg.sha512", - "System.Runtime.Serialization.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net46/System.Runtime.Serialization.Primitives.dll", - "lib/netcore50/System.Runtime.Serialization.Primitives.dll", - "lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net46/System.Runtime.Serialization.Primitives.dll", - "ref/netcore50/System.Runtime.Serialization.Primitives.dll", - "ref/netcore50/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/de/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/es/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/fr/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/it/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/ja/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/ko/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/ru/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/zh-hans/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/zh-hant/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/System.Runtime.Serialization.Primitives.dll", - "ref/netstandard1.0/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/de/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/es/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/fr/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/it/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/ja/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/ko/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/ru/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/System.Runtime.Serialization.Primitives.dll", - "ref/netstandard1.3/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/de/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/es/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/fr/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/it/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/ja/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/ko/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/ru/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Serialization.Primitives.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Runtime.Serialization.Primitives.dll" - ] - }, - "System.Runtime.Serialization.Xml/4.1.1": { - "sha512": "yqfKHkWUAdI0hdDIdD9KDzluKtZ8IIqLF3O7xIZlt6UTs1bOvFRpCvRTvGQva3Ak/ZM9/nq9IHBJ1tC4Ybcrjg==", - "type": "package", - "path": "System.Runtime.Serialization.Xml/4.1.1", - "files": [ - "System.Runtime.Serialization.Xml.4.1.1.nupkg.sha512", - "System.Runtime.Serialization.Xml.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net46/System.Runtime.Serialization.Xml.dll", - "lib/netcore50/System.Runtime.Serialization.Xml.dll", - "lib/netstandard1.3/System.Runtime.Serialization.Xml.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net46/System.Runtime.Serialization.Xml.dll", - "ref/netcore50/System.Runtime.Serialization.Xml.dll", - "ref/netcore50/System.Runtime.Serialization.Xml.xml", - "ref/netcore50/de/System.Runtime.Serialization.Xml.xml", - "ref/netcore50/es/System.Runtime.Serialization.Xml.xml", - "ref/netcore50/fr/System.Runtime.Serialization.Xml.xml", - "ref/netcore50/it/System.Runtime.Serialization.Xml.xml", - "ref/netcore50/ja/System.Runtime.Serialization.Xml.xml", - "ref/netcore50/ko/System.Runtime.Serialization.Xml.xml", - "ref/netcore50/ru/System.Runtime.Serialization.Xml.xml", - "ref/netcore50/zh-hans/System.Runtime.Serialization.Xml.xml", - "ref/netcore50/zh-hant/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.0/System.Runtime.Serialization.Xml.dll", - "ref/netstandard1.0/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.0/de/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.0/es/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.0/fr/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.0/it/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.0/ja/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.0/ko/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.0/ru/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.3/System.Runtime.Serialization.Xml.dll", - "ref/netstandard1.3/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.3/de/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.3/es/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.3/fr/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.3/it/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.3/ja/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.3/ko/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.3/ru/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Serialization.Xml.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Security.Claims/4.0.1": { - "sha512": "4Jlp0OgJLS/Voj1kyFP6MJlIYp3crgfH8kNQk2p7+4JYfc1aAmh9PZyAMMbDhuoolGNtux9HqSOazsioRiDvCw==", - "type": "package", - "path": "System.Security.Claims/4.0.1", - "files": [ - "System.Security.Claims.4.0.1.nupkg.sha512", - "System.Security.Claims.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Claims.dll", - "lib/netstandard1.3/System.Security.Claims.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Claims.dll", - "ref/netstandard1.3/System.Security.Claims.dll", - "ref/netstandard1.3/System.Security.Claims.xml", - "ref/netstandard1.3/de/System.Security.Claims.xml", - "ref/netstandard1.3/es/System.Security.Claims.xml", - "ref/netstandard1.3/fr/System.Security.Claims.xml", - "ref/netstandard1.3/it/System.Security.Claims.xml", - "ref/netstandard1.3/ja/System.Security.Claims.xml", - "ref/netstandard1.3/ko/System.Security.Claims.xml", - "ref/netstandard1.3/ru/System.Security.Claims.xml", - "ref/netstandard1.3/zh-hans/System.Security.Claims.xml", - "ref/netstandard1.3/zh-hant/System.Security.Claims.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Security.Cryptography.Algorithms/4.2.0": { - "sha512": "8JQFxbLVdrtIOKMDN38Fn0GWnqYZw/oMlwOUG/qz1jqChvyZlnUmu+0s7wLx7JYua/nAXoESpHA3iw11QFWhXg==", - "type": "package", - "path": "System.Security.Cryptography.Algorithms/4.2.0", - "files": [ - "System.Security.Cryptography.Algorithms.4.2.0.nupkg.sha512", - "System.Security.Cryptography.Algorithms.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Algorithms.dll", - "lib/net461/System.Security.Cryptography.Algorithms.dll", - "lib/net463/System.Security.Cryptography.Algorithms.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Algorithms.dll", - "ref/net461/System.Security.Cryptography.Algorithms.dll", - "ref/net463/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.3/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net463/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll" - ] - }, - "System.Security.Cryptography.Cng/4.2.0": { - "sha512": "cUJ2h+ZvONDe28Szw3st5dOHdjndhJzQ2WObDEXAWRPEQBtVItVoxbXM/OEsTthl3cNn2dk2k0I3y45igCQcLw==", - "type": "package", - "path": "System.Security.Cryptography.Cng/4.2.0", - "files": [ - "System.Security.Cryptography.Cng.4.2.0.nupkg.sha512", - "System.Security.Cryptography.Cng.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Security.Cryptography.Cng.dll", - "lib/net461/System.Security.Cryptography.Cng.dll", - "lib/net463/System.Security.Cryptography.Cng.dll", - "ref/net46/System.Security.Cryptography.Cng.dll", - "ref/net461/System.Security.Cryptography.Cng.dll", - "ref/net463/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.3/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.4/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.6/System.Security.Cryptography.Cng.dll", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net463/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll" - ] - }, - "System.Security.Cryptography.Csp/4.0.0": { - "sha512": "/i1Usuo4PgAqgbPNC0NjbO3jPW//BoBlTpcWFD1EHVbidH21y4c1ap5bbEMSGAXjAShhMH4abi/K8fILrnu4BQ==", - "type": "package", - "path": "System.Security.Cryptography.Csp/4.0.0", - "files": [ - "System.Security.Cryptography.Csp.4.0.0.nupkg.sha512", - "System.Security.Cryptography.Csp.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Csp.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Csp.dll", - "ref/netstandard1.3/System.Security.Cryptography.Csp.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Csp.dll", - "runtimes/win/lib/netcore50/_._", - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll" - ] - }, - "System.Security.Cryptography.Encoding/4.0.0": { - "sha512": "FbKgE5MbxSQMPcSVRgwM6bXN3GtyAh04NkV8E5zKCBE26X0vYW0UtTa2FIgkH33WVqBVxRgxljlVYumWtU+HcQ==", - "type": "package", - "path": "System.Security.Cryptography.Encoding/4.0.0", - "files": [ - "System.Security.Cryptography.Encoding.4.0.0.nupkg.sha512", - "System.Security.Cryptography.Encoding.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Encoding.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Encoding.dll", - "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll", - "ref/netstandard1.3/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/de/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/es/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/fr/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/it/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ja/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ko/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ru/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/zh-hans/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/zh-hant/System.Security.Cryptography.Encoding.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Encoding.dll", - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll" - ] - }, - "System.Security.Cryptography.OpenSsl/4.0.0": { - "sha512": "HUG/zNUJwEiLkoURDixzkzZdB5yGA5pQhDP93ArOpDPQMteURIGERRNzzoJlmTreLBWr5lkFSjjMSk8ySEpQMw==", - "type": "package", - "path": "System.Security.Cryptography.OpenSsl/4.0.0", - "files": [ - "System.Security.Cryptography.OpenSsl.4.0.0.nupkg.sha512", - "System.Security.Cryptography.OpenSsl.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", - "ref/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll" - ] - }, - "System.Security.Cryptography.Primitives/4.0.0": { - "sha512": "Wkd7QryWYjkQclX0bngpntW5HSlMzeJU24UaLJQ7YTfI8ydAVAaU2J+HXLLABOVJlKTVvAeL0Aj39VeTe7L+oA==", - "type": "package", - "path": "System.Security.Cryptography.Primitives/4.0.0", - "files": [ - "System.Security.Cryptography.Primitives.4.0.0.nupkg.sha512", - "System.Security.Cryptography.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Primitives.dll", - "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Primitives.dll", - "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Security.Cryptography.X509Certificates/4.1.0": { - "sha512": "4HEfsQIKAhA1+ApNn729Gi09zh+lYWwyIuViihoMDWp1vQnEkL2ct7mAbhBlLYm+x/L4Rr/pyGge1lIY635e0w==", - "type": "package", - "path": "System.Security.Cryptography.X509Certificates/4.1.0", - "files": [ - "System.Security.Cryptography.X509Certificates.4.1.0.nupkg.sha512", - "System.Security.Cryptography.X509Certificates.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.X509Certificates.dll", - "lib/net461/System.Security.Cryptography.X509Certificates.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.X509Certificates.dll", - "ref/net461/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/de/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/es/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/fr/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/it/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ja/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ko/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ru/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/zh-hans/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/zh-hant/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/de/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/es/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/fr/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/it/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ja/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ko/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ru/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/zh-hans/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/zh-hant/System.Security.Cryptography.X509Certificates.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll" - ] - }, - "System.Security.Principal/4.0.1": { - "sha512": "On+SKhXY5rzxh/S8wlH1Rm0ogBlu7zyHNxeNBiXauNrhHRXAe9EuX8Yl5IOzLPGU5Z4kLWHMvORDOCG8iu9hww==", - "type": "package", - "path": "System.Security.Principal/4.0.1", - "files": [ - "System.Security.Principal.4.0.1.nupkg.sha512", - "System.Security.Principal.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Security.Principal.dll", - "lib/netstandard1.0/System.Security.Principal.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Security.Principal.dll", - "ref/netcore50/System.Security.Principal.xml", - "ref/netcore50/de/System.Security.Principal.xml", - "ref/netcore50/es/System.Security.Principal.xml", - "ref/netcore50/fr/System.Security.Principal.xml", - "ref/netcore50/it/System.Security.Principal.xml", - "ref/netcore50/ja/System.Security.Principal.xml", - "ref/netcore50/ko/System.Security.Principal.xml", - "ref/netcore50/ru/System.Security.Principal.xml", - "ref/netcore50/zh-hans/System.Security.Principal.xml", - "ref/netcore50/zh-hant/System.Security.Principal.xml", - "ref/netstandard1.0/System.Security.Principal.dll", - "ref/netstandard1.0/System.Security.Principal.xml", - "ref/netstandard1.0/de/System.Security.Principal.xml", - "ref/netstandard1.0/es/System.Security.Principal.xml", - "ref/netstandard1.0/fr/System.Security.Principal.xml", - "ref/netstandard1.0/it/System.Security.Principal.xml", - "ref/netstandard1.0/ja/System.Security.Principal.xml", - "ref/netstandard1.0/ko/System.Security.Principal.xml", - "ref/netstandard1.0/ru/System.Security.Principal.xml", - "ref/netstandard1.0/zh-hans/System.Security.Principal.xml", - "ref/netstandard1.0/zh-hant/System.Security.Principal.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Security.Principal.Windows/4.0.0": { - "sha512": "iFx15AF3RMEPZn3COh8+Bb2Thv2zsmLd93RchS1b8Mj5SNYeGqbYNCSn5AES1+gq56p4ujGZPrl0xN7ngkXOHg==", - "type": "package", - "path": "System.Security.Principal.Windows/4.0.0", - "files": [ - "System.Security.Principal.Windows.4.0.0.nupkg.sha512", - "System.Security.Principal.Windows.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Security.Principal.Windows.dll", - "ref/net46/System.Security.Principal.Windows.dll", - "ref/netstandard1.3/System.Security.Principal.Windows.dll", - "ref/netstandard1.3/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/de/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/es/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/fr/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/it/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/ja/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/ko/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/ru/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/zh-hans/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/zh-hant/System.Security.Principal.Windows.xml", - "runtimes/unix/lib/netstandard1.3/System.Security.Principal.Windows.dll", - "runtimes/win/lib/net46/System.Security.Principal.Windows.dll", - "runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll" - ] - }, - "System.Text.Encoding/4.0.11": { - "sha512": "U3gGeMlDZXxCEiY4DwVLSacg+DFWCvoiX+JThA/rvw37Sqrku7sEFeVBBBMBnfB6FeZHsyDx85HlKL19x0HtZA==", - "type": "package", - "path": "System.Text.Encoding/4.0.11", - "files": [ - "System.Text.Encoding.4.0.11.nupkg.sha512", - "System.Text.Encoding.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Text.Encoding.dll", - "ref/netcore50/System.Text.Encoding.xml", - "ref/netcore50/de/System.Text.Encoding.xml", - "ref/netcore50/es/System.Text.Encoding.xml", - "ref/netcore50/fr/System.Text.Encoding.xml", - "ref/netcore50/it/System.Text.Encoding.xml", - "ref/netcore50/ja/System.Text.Encoding.xml", - "ref/netcore50/ko/System.Text.Encoding.xml", - "ref/netcore50/ru/System.Text.Encoding.xml", - "ref/netcore50/zh-hans/System.Text.Encoding.xml", - "ref/netcore50/zh-hant/System.Text.Encoding.xml", - "ref/netstandard1.0/System.Text.Encoding.dll", - "ref/netstandard1.0/System.Text.Encoding.xml", - "ref/netstandard1.0/de/System.Text.Encoding.xml", - "ref/netstandard1.0/es/System.Text.Encoding.xml", - "ref/netstandard1.0/fr/System.Text.Encoding.xml", - "ref/netstandard1.0/it/System.Text.Encoding.xml", - "ref/netstandard1.0/ja/System.Text.Encoding.xml", - "ref/netstandard1.0/ko/System.Text.Encoding.xml", - "ref/netstandard1.0/ru/System.Text.Encoding.xml", - "ref/netstandard1.0/zh-hans/System.Text.Encoding.xml", - "ref/netstandard1.0/zh-hant/System.Text.Encoding.xml", - "ref/netstandard1.3/System.Text.Encoding.dll", - "ref/netstandard1.3/System.Text.Encoding.xml", - "ref/netstandard1.3/de/System.Text.Encoding.xml", - "ref/netstandard1.3/es/System.Text.Encoding.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.xml", - "ref/netstandard1.3/it/System.Text.Encoding.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Text.Encoding.CodePages/4.0.1": { - "sha512": "h4z6rrA/hxWf4655D18IIZ0eaLRa3tQC/j+e26W+VinIHY0l07iEXaAvO0YSYq3MvCjMYy8Zs5AdC1sxNQOB7Q==", - "type": "package", - "path": "System.Text.Encoding.CodePages/4.0.1", - "files": [ - "System.Text.Encoding.CodePages.4.0.1.nupkg.sha512", - "System.Text.Encoding.CodePages.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Text.Encoding.CodePages.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/netstandard1.3/System.Text.Encoding.CodePages.dll", - "ref/netstandard1.3/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/de/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/es/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/it/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.CodePages.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Text.Encoding.CodePages.dll", - "runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll" - ] - }, - "System.Text.Encoding.Extensions/4.0.11": { - "sha512": "jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==", - "type": "package", - "path": "System.Text.Encoding.Extensions/4.0.11", - "files": [ - "System.Text.Encoding.Extensions.4.0.11.nupkg.sha512", - "System.Text.Encoding.Extensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Text.Encoding.Extensions.dll", - "ref/netcore50/System.Text.Encoding.Extensions.xml", - "ref/netcore50/de/System.Text.Encoding.Extensions.xml", - "ref/netcore50/es/System.Text.Encoding.Extensions.xml", - "ref/netcore50/fr/System.Text.Encoding.Extensions.xml", - "ref/netcore50/it/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ja/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ko/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ru/System.Text.Encoding.Extensions.xml", - "ref/netcore50/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netcore50/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/System.Text.Encoding.Extensions.dll", - "ref/netstandard1.0/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/de/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/es/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/fr/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/it/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ja/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ko/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ru/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/System.Text.Encoding.Extensions.dll", - "ref/netstandard1.3/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/de/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/es/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/it/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Text.Encodings.Web/4.0.0": { - "sha512": "TWZnuiJgPDAEEUfobD7njXvSVR2Toz+jvKWds6yL4oSztmKQfnWzucczjzA+6Dv1bktBdY71sZW1YN0X6m9chQ==", - "type": "package", - "path": "System.Text.Encodings.Web/4.0.0", - "files": [ - "System.Text.Encodings.Web.4.0.0.nupkg.sha512", - "System.Text.Encodings.Web.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Text.Encodings.Web.dll", - "lib/netstandard1.0/System.Text.Encodings.Web.xml" - ] - }, - "System.Text.RegularExpressions/4.1.0": { - "sha512": "i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==", - "type": "package", - "path": "System.Text.RegularExpressions/4.1.0", - "files": [ - "System.Text.RegularExpressions.4.1.0.nupkg.sha512", - "System.Text.RegularExpressions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Text.RegularExpressions.dll", - "lib/netcore50/System.Text.RegularExpressions.dll", - "lib/netstandard1.6/System.Text.RegularExpressions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Text.RegularExpressions.dll", - "ref/netcore50/System.Text.RegularExpressions.dll", - "ref/netcore50/System.Text.RegularExpressions.xml", - "ref/netcore50/de/System.Text.RegularExpressions.xml", - "ref/netcore50/es/System.Text.RegularExpressions.xml", - "ref/netcore50/fr/System.Text.RegularExpressions.xml", - "ref/netcore50/it/System.Text.RegularExpressions.xml", - "ref/netcore50/ja/System.Text.RegularExpressions.xml", - "ref/netcore50/ko/System.Text.RegularExpressions.xml", - "ref/netcore50/ru/System.Text.RegularExpressions.xml", - "ref/netcore50/zh-hans/System.Text.RegularExpressions.xml", - "ref/netcore50/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/System.Text.RegularExpressions.dll", - "ref/netstandard1.0/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/System.Text.RegularExpressions.dll", - "ref/netstandard1.3/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/System.Text.RegularExpressions.dll", - "ref/netstandard1.6/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/zh-hant/System.Text.RegularExpressions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Threading/4.0.11": { - "sha512": "N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==", - "type": "package", - "path": "System.Threading/4.0.11", - "files": [ - "System.Threading.4.0.11.nupkg.sha512", - "System.Threading.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Threading.dll", - "lib/netstandard1.3/System.Threading.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.dll", - "ref/netcore50/System.Threading.xml", - "ref/netcore50/de/System.Threading.xml", - "ref/netcore50/es/System.Threading.xml", - "ref/netcore50/fr/System.Threading.xml", - "ref/netcore50/it/System.Threading.xml", - "ref/netcore50/ja/System.Threading.xml", - "ref/netcore50/ko/System.Threading.xml", - "ref/netcore50/ru/System.Threading.xml", - "ref/netcore50/zh-hans/System.Threading.xml", - "ref/netcore50/zh-hant/System.Threading.xml", - "ref/netstandard1.0/System.Threading.dll", - "ref/netstandard1.0/System.Threading.xml", - "ref/netstandard1.0/de/System.Threading.xml", - "ref/netstandard1.0/es/System.Threading.xml", - "ref/netstandard1.0/fr/System.Threading.xml", - "ref/netstandard1.0/it/System.Threading.xml", - "ref/netstandard1.0/ja/System.Threading.xml", - "ref/netstandard1.0/ko/System.Threading.xml", - "ref/netstandard1.0/ru/System.Threading.xml", - "ref/netstandard1.0/zh-hans/System.Threading.xml", - "ref/netstandard1.0/zh-hant/System.Threading.xml", - "ref/netstandard1.3/System.Threading.dll", - "ref/netstandard1.3/System.Threading.xml", - "ref/netstandard1.3/de/System.Threading.xml", - "ref/netstandard1.3/es/System.Threading.xml", - "ref/netstandard1.3/fr/System.Threading.xml", - "ref/netstandard1.3/it/System.Threading.xml", - "ref/netstandard1.3/ja/System.Threading.xml", - "ref/netstandard1.3/ko/System.Threading.xml", - "ref/netstandard1.3/ru/System.Threading.xml", - "ref/netstandard1.3/zh-hans/System.Threading.xml", - "ref/netstandard1.3/zh-hant/System.Threading.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Threading.dll" - ] - }, - "System.Threading.Overlapped/4.0.1": { - "sha512": "f7aLuLkBoCQM2kng7zqLFBXz9Gk48gDK8lk1ih9rH/1arJJzZK9gJwNvPDhL6Ps/l6rwOr8jw+4FCHL0KKWiEg==", - "type": "package", - "path": "System.Threading.Overlapped/4.0.1", - "files": [ - "System.Threading.Overlapped.4.0.1.nupkg.sha512", - "System.Threading.Overlapped.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Threading.Overlapped.dll", - "ref/net46/System.Threading.Overlapped.dll", - "ref/netstandard1.3/System.Threading.Overlapped.dll", - "ref/netstandard1.3/System.Threading.Overlapped.xml", - "ref/netstandard1.3/de/System.Threading.Overlapped.xml", - "ref/netstandard1.3/es/System.Threading.Overlapped.xml", - "ref/netstandard1.3/fr/System.Threading.Overlapped.xml", - "ref/netstandard1.3/it/System.Threading.Overlapped.xml", - "ref/netstandard1.3/ja/System.Threading.Overlapped.xml", - "ref/netstandard1.3/ko/System.Threading.Overlapped.xml", - "ref/netstandard1.3/ru/System.Threading.Overlapped.xml", - "ref/netstandard1.3/zh-hans/System.Threading.Overlapped.xml", - "ref/netstandard1.3/zh-hant/System.Threading.Overlapped.xml", - "runtimes/unix/lib/netstandard1.3/System.Threading.Overlapped.dll", - "runtimes/win/lib/net46/System.Threading.Overlapped.dll", - "runtimes/win/lib/netcore50/System.Threading.Overlapped.dll", - "runtimes/win/lib/netstandard1.3/System.Threading.Overlapped.dll" - ] - }, - "System.Threading.Tasks/4.0.11": { - "sha512": "k1S4Gc6IGwtHGT8188RSeGaX86Qw/wnrgNLshJvsdNUOPP9etMmo8S07c+UlOAx4K/xLuN9ivA1bD0LVurtIxQ==", - "type": "package", - "path": "System.Threading.Tasks/4.0.11", - "files": [ - "System.Threading.Tasks.4.0.11.nupkg.sha512", - "System.Threading.Tasks.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.Tasks.dll", - "ref/netcore50/System.Threading.Tasks.xml", - "ref/netcore50/de/System.Threading.Tasks.xml", - "ref/netcore50/es/System.Threading.Tasks.xml", - "ref/netcore50/fr/System.Threading.Tasks.xml", - "ref/netcore50/it/System.Threading.Tasks.xml", - "ref/netcore50/ja/System.Threading.Tasks.xml", - "ref/netcore50/ko/System.Threading.Tasks.xml", - "ref/netcore50/ru/System.Threading.Tasks.xml", - "ref/netcore50/zh-hans/System.Threading.Tasks.xml", - "ref/netcore50/zh-hant/System.Threading.Tasks.xml", - "ref/netstandard1.0/System.Threading.Tasks.dll", - "ref/netstandard1.0/System.Threading.Tasks.xml", - "ref/netstandard1.0/de/System.Threading.Tasks.xml", - "ref/netstandard1.0/es/System.Threading.Tasks.xml", - "ref/netstandard1.0/fr/System.Threading.Tasks.xml", - "ref/netstandard1.0/it/System.Threading.Tasks.xml", - "ref/netstandard1.0/ja/System.Threading.Tasks.xml", - "ref/netstandard1.0/ko/System.Threading.Tasks.xml", - "ref/netstandard1.0/ru/System.Threading.Tasks.xml", - "ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml", - "ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml", - "ref/netstandard1.3/System.Threading.Tasks.dll", - "ref/netstandard1.3/System.Threading.Tasks.xml", - "ref/netstandard1.3/de/System.Threading.Tasks.xml", - "ref/netstandard1.3/es/System.Threading.Tasks.xml", - "ref/netstandard1.3/fr/System.Threading.Tasks.xml", - "ref/netstandard1.3/it/System.Threading.Tasks.xml", - "ref/netstandard1.3/ja/System.Threading.Tasks.xml", - "ref/netstandard1.3/ko/System.Threading.Tasks.xml", - "ref/netstandard1.3/ru/System.Threading.Tasks.xml", - "ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml", - "ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Threading.Tasks.Dataflow/4.6.0": { - "sha512": "2hRjGu2r2jxRZ55wmcHO/WbdX+YAOz9x6FE8xqkHZgPaoFMKQZRe9dk8xTZIas8fRjxRmzawnTEWIrhlM+Un7w==", - "type": "package", - "path": "System.Threading.Tasks.Dataflow/4.6.0", - "files": [ - "System.Threading.Tasks.Dataflow.4.6.0.nupkg.sha512", - "System.Threading.Tasks.Dataflow.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Threading.Tasks.Dataflow.XML", - "lib/netstandard1.0/System.Threading.Tasks.Dataflow.dll", - "lib/netstandard1.1/System.Threading.Tasks.Dataflow.XML", - "lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll" - ] - }, - "System.Threading.Tasks.Extensions/4.0.0": { - "sha512": "pH4FZDsZQ/WmgJtN4LWYmRdJAEeVkyriSwrv2Teoe5FOU0Yxlb6II6GL8dBPOfRmutHGATduj3ooMt7dJ2+i+w==", - "type": "package", - "path": "System.Threading.Tasks.Extensions/4.0.0", - "files": [ - "System.Threading.Tasks.Extensions.4.0.0.nupkg.sha512", - "System.Threading.Tasks.Extensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll", - "lib/netstandard1.0/System.Threading.Tasks.Extensions.xml", - "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll", - "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml" - ] - }, - "System.Threading.Tasks.Parallel/4.0.1": { - "sha512": "7Pc9t25bcynT9FpMvkUw4ZjYwUiGup/5cJFW72/5MgCG+np2cfVUMdh29u8d7onxX7d8PS3J+wL73zQRqkdrSA==", - "type": "package", - "path": "System.Threading.Tasks.Parallel/4.0.1", - "files": [ - "System.Threading.Tasks.Parallel.4.0.1.nupkg.sha512", - "System.Threading.Tasks.Parallel.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Threading.Tasks.Parallel.dll", - "lib/netstandard1.3/System.Threading.Tasks.Parallel.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.Tasks.Parallel.dll", - "ref/netcore50/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/de/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/es/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/fr/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/it/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/ja/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/ko/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/ru/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/zh-hans/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/zh-hant/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/System.Threading.Tasks.Parallel.dll", - "ref/netstandard1.1/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/de/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/es/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/fr/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/it/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/ja/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/ko/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/ru/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/zh-hans/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/zh-hant/System.Threading.Tasks.Parallel.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Threading.Thread/4.0.0": { - "sha512": "gIdJqDXlOr5W9zeqFErLw3dsOsiShSCYtF9SEHitACycmvNvY8odf9kiKvp6V7aibc8C4HzzNBkWXjyfn7plbQ==", - "type": "package", - "path": "System.Threading.Thread/4.0.0", - "files": [ - "System.Threading.Thread.4.0.0.nupkg.sha512", - "System.Threading.Thread.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Threading.Thread.dll", - "lib/netcore50/_._", - "lib/netstandard1.3/System.Threading.Thread.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Threading.Thread.dll", - "ref/netstandard1.3/System.Threading.Thread.dll", - "ref/netstandard1.3/System.Threading.Thread.xml", - "ref/netstandard1.3/de/System.Threading.Thread.xml", - "ref/netstandard1.3/es/System.Threading.Thread.xml", - "ref/netstandard1.3/fr/System.Threading.Thread.xml", - "ref/netstandard1.3/it/System.Threading.Thread.xml", - "ref/netstandard1.3/ja/System.Threading.Thread.xml", - "ref/netstandard1.3/ko/System.Threading.Thread.xml", - "ref/netstandard1.3/ru/System.Threading.Thread.xml", - "ref/netstandard1.3/zh-hans/System.Threading.Thread.xml", - "ref/netstandard1.3/zh-hant/System.Threading.Thread.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Threading.ThreadPool/4.0.10": { - "sha512": "IMXgB5Vf/5Qw1kpoVgJMOvUO1l32aC+qC3OaIZjWJOjvcxuxNWOK2ZTWWYXfij22NHxT2j1yWX5vlAeQWld9vA==", - "type": "package", - "path": "System.Threading.ThreadPool/4.0.10", - "files": [ - "System.Threading.ThreadPool.4.0.10.nupkg.sha512", - "System.Threading.ThreadPool.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Threading.ThreadPool.dll", - "lib/netcore50/_._", - "lib/netstandard1.3/System.Threading.ThreadPool.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Threading.ThreadPool.dll", - "ref/netstandard1.3/System.Threading.ThreadPool.dll", - "ref/netstandard1.3/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/de/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/es/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/fr/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/it/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/ja/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/ko/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/ru/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/zh-hans/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/zh-hant/System.Threading.ThreadPool.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Threading.Timer/4.0.1": { - "sha512": "saGfUV8uqVW6LeURiqxcGhZ24PzuRNaUBtbhVeuUAvky1naH395A/1nY0P2bWvrw/BreRtIB/EzTDkGBpqCwEw==", - "type": "package", - "path": "System.Threading.Timer/4.0.1", - "files": [ - "System.Threading.Timer.4.0.1.nupkg.sha512", - "System.Threading.Timer.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net451/_._", - "lib/portable-net451+win81+wpa81/_._", - "lib/win81/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net451/_._", - "ref/netcore50/System.Threading.Timer.dll", - "ref/netcore50/System.Threading.Timer.xml", - "ref/netcore50/de/System.Threading.Timer.xml", - "ref/netcore50/es/System.Threading.Timer.xml", - "ref/netcore50/fr/System.Threading.Timer.xml", - "ref/netcore50/it/System.Threading.Timer.xml", - "ref/netcore50/ja/System.Threading.Timer.xml", - "ref/netcore50/ko/System.Threading.Timer.xml", - "ref/netcore50/ru/System.Threading.Timer.xml", - "ref/netcore50/zh-hans/System.Threading.Timer.xml", - "ref/netcore50/zh-hant/System.Threading.Timer.xml", - "ref/netstandard1.2/System.Threading.Timer.dll", - "ref/netstandard1.2/System.Threading.Timer.xml", - "ref/netstandard1.2/de/System.Threading.Timer.xml", - "ref/netstandard1.2/es/System.Threading.Timer.xml", - "ref/netstandard1.2/fr/System.Threading.Timer.xml", - "ref/netstandard1.2/it/System.Threading.Timer.xml", - "ref/netstandard1.2/ja/System.Threading.Timer.xml", - "ref/netstandard1.2/ko/System.Threading.Timer.xml", - "ref/netstandard1.2/ru/System.Threading.Timer.xml", - "ref/netstandard1.2/zh-hans/System.Threading.Timer.xml", - "ref/netstandard1.2/zh-hant/System.Threading.Timer.xml", - "ref/portable-net451+win81+wpa81/_._", - "ref/win81/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Xml.ReaderWriter/4.0.11": { - "sha512": "ZIiLPsf67YZ9zgr31vzrFaYQqxRPX9cVHjtPSnmx4eN6lbS/yEyYNr2vs1doGDEscF0tjCZFsk9yUg1sC9e8tg==", - "type": "package", - "path": "System.Xml.ReaderWriter/4.0.11", - "files": [ - "System.Xml.ReaderWriter.4.0.11.nupkg.sha512", - "System.Xml.ReaderWriter.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Xml.ReaderWriter.dll", - "lib/netstandard1.3/System.Xml.ReaderWriter.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Xml.ReaderWriter.dll", - "ref/netcore50/System.Xml.ReaderWriter.xml", - "ref/netcore50/de/System.Xml.ReaderWriter.xml", - "ref/netcore50/es/System.Xml.ReaderWriter.xml", - "ref/netcore50/fr/System.Xml.ReaderWriter.xml", - "ref/netcore50/it/System.Xml.ReaderWriter.xml", - "ref/netcore50/ja/System.Xml.ReaderWriter.xml", - "ref/netcore50/ko/System.Xml.ReaderWriter.xml", - "ref/netcore50/ru/System.Xml.ReaderWriter.xml", - "ref/netcore50/zh-hans/System.Xml.ReaderWriter.xml", - "ref/netcore50/zh-hant/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/System.Xml.ReaderWriter.dll", - "ref/netstandard1.0/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/de/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/es/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/fr/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/it/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/ja/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/ko/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/ru/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/zh-hans/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/zh-hant/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/System.Xml.ReaderWriter.dll", - "ref/netstandard1.3/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/de/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/es/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/fr/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/it/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/ja/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/ko/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/ru/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/zh-hans/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/zh-hant/System.Xml.ReaderWriter.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Xml.XDocument/4.0.11": { - "sha512": "Mk2mKmPi0nWaoiYeotq1dgeNK1fqWh61+EK+w4Wu8SWuTYLzpUnschb59bJtGywaPq7SmTuPf44wrXRwbIrukg==", - "type": "package", - "path": "System.Xml.XDocument/4.0.11", - "files": [ - "System.Xml.XDocument.4.0.11.nupkg.sha512", - "System.Xml.XDocument.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Xml.XDocument.dll", - "lib/netstandard1.3/System.Xml.XDocument.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Xml.XDocument.dll", - "ref/netcore50/System.Xml.XDocument.xml", - "ref/netcore50/de/System.Xml.XDocument.xml", - "ref/netcore50/es/System.Xml.XDocument.xml", - "ref/netcore50/fr/System.Xml.XDocument.xml", - "ref/netcore50/it/System.Xml.XDocument.xml", - "ref/netcore50/ja/System.Xml.XDocument.xml", - "ref/netcore50/ko/System.Xml.XDocument.xml", - "ref/netcore50/ru/System.Xml.XDocument.xml", - "ref/netcore50/zh-hans/System.Xml.XDocument.xml", - "ref/netcore50/zh-hant/System.Xml.XDocument.xml", - "ref/netstandard1.0/System.Xml.XDocument.dll", - "ref/netstandard1.0/System.Xml.XDocument.xml", - "ref/netstandard1.0/de/System.Xml.XDocument.xml", - "ref/netstandard1.0/es/System.Xml.XDocument.xml", - "ref/netstandard1.0/fr/System.Xml.XDocument.xml", - "ref/netstandard1.0/it/System.Xml.XDocument.xml", - "ref/netstandard1.0/ja/System.Xml.XDocument.xml", - "ref/netstandard1.0/ko/System.Xml.XDocument.xml", - "ref/netstandard1.0/ru/System.Xml.XDocument.xml", - "ref/netstandard1.0/zh-hans/System.Xml.XDocument.xml", - "ref/netstandard1.0/zh-hant/System.Xml.XDocument.xml", - "ref/netstandard1.3/System.Xml.XDocument.dll", - "ref/netstandard1.3/System.Xml.XDocument.xml", - "ref/netstandard1.3/de/System.Xml.XDocument.xml", - "ref/netstandard1.3/es/System.Xml.XDocument.xml", - "ref/netstandard1.3/fr/System.Xml.XDocument.xml", - "ref/netstandard1.3/it/System.Xml.XDocument.xml", - "ref/netstandard1.3/ja/System.Xml.XDocument.xml", - "ref/netstandard1.3/ko/System.Xml.XDocument.xml", - "ref/netstandard1.3/ru/System.Xml.XDocument.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XDocument.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XDocument.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Xml.XmlDocument/4.0.1": { - "sha512": "2eZu6IP+etFVBBFUFzw2w6J21DqIN5eL9Y8r8JfJWUmV28Z5P0SNU01oCisVHQgHsDhHPnmq2s1hJrJCFZWloQ==", - "type": "package", - "path": "System.Xml.XmlDocument/4.0.1", - "files": [ - "System.Xml.XmlDocument.4.0.1.nupkg.sha512", - "System.Xml.XmlDocument.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Xml.XmlDocument.dll", - "lib/netstandard1.3/System.Xml.XmlDocument.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Xml.XmlDocument.dll", - "ref/netstandard1.3/System.Xml.XmlDocument.dll", - "ref/netstandard1.3/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/de/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/es/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/fr/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/it/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/ja/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/ko/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/ru/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XmlDocument.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Xml.XmlSerializer/4.0.11": { - "sha512": "FrazwwqfIXTfq23mfv4zH+BjqkSFNaNFBtjzu3I9NRmG8EELYyrv/fJnttCIwRMFRR/YKXF1hmsMmMEnl55HGw==", - "type": "package", - "path": "System.Xml.XmlSerializer/4.0.11", - "files": [ - "System.Xml.XmlSerializer.4.0.11.nupkg.sha512", - "System.Xml.XmlSerializer.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Xml.XmlSerializer.dll", - "lib/netstandard1.3/System.Xml.XmlSerializer.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Xml.XmlSerializer.dll", - "ref/netcore50/System.Xml.XmlSerializer.xml", - "ref/netcore50/de/System.Xml.XmlSerializer.xml", - "ref/netcore50/es/System.Xml.XmlSerializer.xml", - "ref/netcore50/fr/System.Xml.XmlSerializer.xml", - "ref/netcore50/it/System.Xml.XmlSerializer.xml", - "ref/netcore50/ja/System.Xml.XmlSerializer.xml", - "ref/netcore50/ko/System.Xml.XmlSerializer.xml", - "ref/netcore50/ru/System.Xml.XmlSerializer.xml", - "ref/netcore50/zh-hans/System.Xml.XmlSerializer.xml", - "ref/netcore50/zh-hant/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/System.Xml.XmlSerializer.dll", - "ref/netstandard1.0/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/de/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/es/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/fr/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/it/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/ja/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/ko/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/ru/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/zh-hans/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/zh-hant/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/System.Xml.XmlSerializer.dll", - "ref/netstandard1.3/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/de/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/es/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/fr/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/it/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/ja/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/ko/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/ru/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XmlSerializer.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Xml.XmlSerializer.dll" - ] - }, - "System.Xml.XPath/4.0.1": { - "sha512": "UWd1H+1IJ9Wlq5nognZ/XJdyj8qPE4XufBUkAW59ijsCPjZkZe0MUzKKJFBr+ZWBe5Wq1u1d5f2CYgE93uH7DA==", - "type": "package", - "path": "System.Xml.XPath/4.0.1", - "files": [ - "System.Xml.XPath.4.0.1.nupkg.sha512", - "System.Xml.XPath.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Xml.XPath.dll", - "lib/netstandard1.3/System.Xml.XPath.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Xml.XPath.dll", - "ref/netstandard1.3/System.Xml.XPath.dll", - "ref/netstandard1.3/System.Xml.XPath.xml", - "ref/netstandard1.3/de/System.Xml.XPath.xml", - "ref/netstandard1.3/es/System.Xml.XPath.xml", - "ref/netstandard1.3/fr/System.Xml.XPath.xml", - "ref/netstandard1.3/it/System.Xml.XPath.xml", - "ref/netstandard1.3/ja/System.Xml.XPath.xml", - "ref/netstandard1.3/ko/System.Xml.XPath.xml", - "ref/netstandard1.3/ru/System.Xml.XPath.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XPath.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XPath.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Xml.XPath.XDocument/4.0.1": { - "sha512": "FLhdYJx4331oGovQypQ8JIw2kEmNzCsjVOVYY/16kZTUoquZG85oVn7yUhBE2OZt1yGPSXAL0HTEfzjlbNpM7Q==", - "type": "package", - "path": "System.Xml.XPath.XDocument/4.0.1", - "files": [ - "System.Xml.XPath.XDocument.4.0.1.nupkg.sha512", - "System.Xml.XPath.XDocument.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Xml.XPath.XDocument.dll", - "lib/netstandard1.3/System.Xml.XPath.XDocument.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Xml.XPath.XDocument.dll", - "ref/netstandard1.3/System.Xml.XPath.XDocument.dll", - "ref/netstandard1.3/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/de/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/es/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/fr/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/it/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/ja/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/ko/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/ru/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XPath.XDocument.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "VideoLibrary/1.3.4": { - "sha512": "HZ2RAE9xx/sjJGnwm8etawoJXYluaYGas4bAFpE14S62NFodNKzUf7Cm9TQ+JFJxAdY+1g1FEKk1b6FPSv9aMg==", - "type": "package", - "path": "VideoLibrary/1.3.4", - "files": [ - "VideoLibrary.1.3.4.nupkg.sha512", - "VideoLibrary.nuspec", - "lib/portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10/libvideo.dll" - ] - }, - "Discord.Net/1.0.0-beta": { - "type": "project", - "path": "../../discord.net/src/Discord.Net/project.json", - "msbuildProject": "../../discord.net/src/Discord.Net/Discord.Net.xproj" - }, - "Discord.Net.Commands/1.0.0-beta": { - "type": "project", - "path": "../../discord.net/src/Discord.Net.Commands/project.json", - "msbuildProject": "../../discord.net/src/Discord.Net.Commands/Discord.Net.Commands.xproj" - } - }, - "projectFileDependencyGroups": { - "": [ - "CoreCLR-NCalc >= 2.1.0", - "Discord.Net >= 1.0.0-beta-*", - "Discord.Net.Commands >= 1.0.0-beta-*", - "Google.Apis.Customsearch.v1 >= 1.16.0.466", - "Google.Apis.Urlshortener.v1 >= 1.15.0.138", - "Google.Apis.YouTube.v3 >= 1.15.0.582", - "ImageProcessorCore >= 1.0.0-alpha1045", - "Microsoft.EntityFrameworkCore >= 1.0.0", - "Microsoft.EntityFrameworkCore.Design >= 1.0.0-preview2-final", - "Microsoft.EntityFrameworkCore.Sqlite >= 1.0.0", - "Microsoft.Extensions.DependencyInjection >= 1.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions >= 1.0.0", - "Microsoft.Extensions.PlatformAbstractions >= 1.0.0", - "Microsoft.NETCore.App >= 1.0.0", - "NLog >= 4.4.0-betaV15", - "Newtonsoft.Json >= 9.0.1", - "System.Diagnostics.Contracts >= 4.0.1", - "System.Resources.ResourceWriter >= 4.0.0-beta-22816", - "VideoLibrary >= 1.3.4" - ], - ".NETCoreApp,Version=v1.0": [] - }, - "tools": { - ".NETCoreApp,Version=v1.0": { - "Microsoft.EntityFrameworkCore.Tools/1.0.0-preview2-final": { - "type": "package", - "dependencies": { - "Microsoft.DotNet.Cli.Utils": "1.0.0-preview2-003121", - "Microsoft.DotNet.ProjectModel": "1.0.0-rc3-003121", - "Microsoft.EntityFrameworkCore.Design": "1.0.0-preview2-final", - "Microsoft.Extensions.CommandLineUtils": "1.0.0", - "Microsoft.NETCore.App": "1.0.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.0.0" - }, - "compile": { - "lib/netcoreapp1.0/dotnet-ef.dll": {} - }, - "runtime": { - "lib/netcoreapp1.0/dotnet-ef.dll": {} - } - } - } - }, - "projectFileToolGroups": { - ".NETCoreApp,Version=v1.0": [ - "Microsoft.EntityFrameworkCore.Tools >= 1.0.0-preview2-final" - ] - } -} \ No newline at end of file diff --git a/src/tests/project.lock.json b/src/tests/project.lock.json deleted file mode 100644 index c952c18f..00000000 --- a/src/tests/project.lock.json +++ /dev/null @@ -1,9842 +0,0 @@ -{ - "locked": false, - "version": 2, - "targets": { - ".NETCoreApp,Version=v1.0": { - "CoreCLR-NCalc/2.1.0": { - "type": "package", - "dependencies": { - "NETStandard.Library": "1.6.0", - "System.Diagnostics.Debug": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Serialization.Xml": "4.1.1", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading.Thread": "4.0.0" - }, - "compile": { - "lib/netstandard1.3/NCalc.dll": {} - }, - "runtime": { - "lib/netstandard1.3/NCalc.dll": {} - } - }, - "dotnet-test-xunit/1.0.0-rc2-build10015": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Testing.Abstractions": "1.0.0-preview1-002702", - "Microsoft.NETCore.App": "1.0.0-rc2-3002702", - "xunit.runner.reporters": "2.1.0" - }, - "compile": { - "lib/netcoreapp1.0/dotnet-test-xunit.dll": {} - }, - "runtime": { - "lib/netcoreapp1.0/dotnet-test-xunit.dll": {} - } - }, - "Google.Apis/1.16.0": { - "type": "package", - "dependencies": { - "Google.Apis.Core": "1.16.0", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.IO": "4.1.0", - "System.IO.Compression": "4.1.0", - "System.Linq": "4.1.0", - "System.Net.Http": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Reflection": "4.1.0", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/Google.Apis.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Google.Apis.dll": {} - } - }, - "Google.Apis.Auth/1.15.0": { - "type": "package", - "dependencies": { - "Google.Apis.Core": "1.15.0", - "Newtonsoft.Json": "9.0.1", - "Portable.BouncyCastle": "1.8.1.1", - "System.Collections": "4.0.11", - "System.Console": "4.0.0", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Process": "4.1.0", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Linq": "4.1.0", - "System.Net.Http": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Net.Requests": "4.0.11", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/Google.Apis.Auth.PlatformServices.dll": {}, - "lib/netstandard1.3/Google.Apis.Auth.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Google.Apis.Auth.PlatformServices.dll": {}, - "lib/netstandard1.3/Google.Apis.Auth.dll": {} - } - }, - "Google.Apis.Core/1.16.0": { - "type": "package", - "dependencies": { - "Newtonsoft.Json": "9.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.Net.Http": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/Google.Apis.Core.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Google.Apis.Core.dll": {} - } - }, - "Google.Apis.Customsearch.v1/1.16.0.466": { - "type": "package", - "dependencies": { - "Google.Apis": "1.16.0" - }, - "compile": { - "lib/netstandard1.3/Google.Apis.Customsearch.v1.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Google.Apis.Customsearch.v1.dll": {} - } - }, - "Google.Apis.Urlshortener.v1/1.15.0.138": { - "type": "package", - "dependencies": { - "Google.Apis": "1.15.0", - "Google.Apis.Auth": "1.15.0" - }, - "compile": { - "lib/netstandard1.3/Google.Apis.Urlshortener.v1.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Google.Apis.Urlshortener.v1.dll": {} - } - }, - "Google.Apis.YouTube.v3/1.15.0.582": { - "type": "package", - "dependencies": { - "Google.Apis": "1.15.0", - "Google.Apis.Auth": "1.15.0" - }, - "compile": { - "lib/netstandard1.3/Google.Apis.YouTube.v3.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Google.Apis.YouTube.v3.dll": {} - } - }, - "ImageProcessorCore/1.0.0-alpha1045": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tools": "4.0.1", - "System.IO": "4.1.0", - "System.IO.Compression": "4.1.0", - "System.Linq": "4.1.0", - "System.Numerics.Vectors": "4.1.1", - "System.ObjectModel": "4.0.12", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime.CompilerServices.Unsafe": "4.0.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.Numerics": "4.0.1", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Tasks.Parallel": "4.0.1" - }, - "compile": { - "lib/netstandard1.1/ImageProcessorCore.dll": {} - }, - "runtime": { - "lib/netstandard1.1/ImageProcessorCore.dll": {} - } - }, - "Libuv/1.9.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1" - }, - "runtimeTargets": { - "runtimes/debian-x64/native/libuv.so": { - "assetType": "native", - "rid": "debian-x64" - }, - "runtimes/fedora-x64/native/libuv.so": { - "assetType": "native", - "rid": "fedora-x64" - }, - "runtimes/opensuse-x64/native/libuv.so": { - "assetType": "native", - "rid": "opensuse-x64" - }, - "runtimes/osx/native/libuv.dylib": { - "assetType": "native", - "rid": "osx" - }, - "runtimes/rhel-x64/native/libuv.so": { - "assetType": "native", - "rid": "rhel-x64" - }, - "runtimes/win7-arm/native/libuv.dll": { - "assetType": "native", - "rid": "win7-arm" - }, - "runtimes/win7-x64/native/libuv.dll": { - "assetType": "native", - "rid": "win7-x64" - }, - "runtimes/win7-x86/native/libuv.dll": { - "assetType": "native", - "rid": "win7-x86" - } - } - }, - "Microsoft.AspNetCore.Hosting.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Hosting.Server.Abstractions": "1.0.0", - "Microsoft.AspNetCore.Http.Abstractions": "1.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "1.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", - "Microsoft.Extensions.FileProviders.Abstractions": "1.0.0", - "Microsoft.Extensions.Logging.Abstractions": "1.0.0" - }, - "compile": { - "lib/netstandard1.3/Microsoft.AspNetCore.Hosting.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.AspNetCore.Hosting.Abstractions.dll": {} - } - }, - "Microsoft.AspNetCore.Hosting.Server.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "1.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "1.0.0" - }, - "compile": { - "lib/netstandard1.3/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll": {} - } - }, - "Microsoft.AspNetCore.Http.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Http.Features": "1.0.0", - "System.Globalization.Extensions": "4.0.1", - "System.Linq.Expressions": "4.1.0", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encodings.Web": "4.0.0" - }, - "compile": { - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Abstractions.dll": {} - } - }, - "Microsoft.AspNetCore.Http.Features/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "1.0.0", - "System.Collections": "4.0.11", - "System.ComponentModel": "4.0.1", - "System.Linq": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Net.WebSockets": "4.0.0", - "System.Runtime.Extensions": "4.1.0", - "System.Security.Claims": "4.0.1", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Security.Principal": "4.0.1" - }, - "compile": { - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Features.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Features.dll": {} - } - }, - "Microsoft.CodeAnalysis.Analyzers/1.1.0": { - "type": "package" - }, - "Microsoft.CodeAnalysis.Common/1.3.0": { - "type": "package", - "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "1.1.0", - "System.AppContext": "4.1.0", - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Collections.Immutable": "1.2.0", - "System.Console": "4.0.0", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.FileVersionInfo": "4.0.0", - "System.Diagnostics.StackTrace": "4.0.1", - "System.Diagnostics.Tools": "4.0.1", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Metadata": "1.3.0", - "System.Reflection.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.CodePages": "4.0.1", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Tasks.Parallel": "4.0.1", - "System.Threading.Thread": "4.0.0", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XDocument": "4.0.11", - "System.Xml.XPath.XDocument": "4.0.1", - "System.Xml.XmlDocument": "4.0.1" - }, - "compile": { - "lib/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.CodeAnalysis.dll": {} - } - }, - "Microsoft.CodeAnalysis.CSharp/1.3.0": { - "type": "package", - "dependencies": { - "Microsoft.CodeAnalysis.Common": "[1.3.0]" - }, - "compile": { - "lib/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.dll": {} - } - }, - "Microsoft.CodeAnalysis.VisualBasic/1.3.0": { - "type": "package", - "dependencies": { - "Microsoft.CodeAnalysis.Common": "1.3.0" - }, - "compile": { - "lib/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.CodeAnalysis.VisualBasic.dll": {} - } - }, - "Microsoft.CSharp/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.0/Microsoft.CSharp.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.CSharp.dll": {} - } - }, - "Microsoft.Data.Sqlite/1.0.0": { - "type": "package", - "dependencies": { - "SQLite": "3.12.2", - "System.AppContext": "4.1.0", - "System.Data.Common": "4.1.0", - "System.Diagnostics.Debug": "4.0.11", - "System.Linq": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/Microsoft.Data.Sqlite.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.Data.Sqlite.dll": {} - } - }, - "Microsoft.DiaSymReader/1.0.6": { - "type": "package", - "compile": { - "lib/portable-net45+win8/Microsoft.DiaSymReader.dll": {} - }, - "runtime": { - "lib/portable-net45+win8/Microsoft.DiaSymReader.dll": {} - } - }, - "Microsoft.DiaSymReader.Native/1.3.3": { - "type": "package", - "runtimeTargets": { - "runtimes/win-x64/native/Microsoft.DiaSymReader.Native.amd64.dll": { - "assetType": "native", - "rid": "win-x64" - }, - "runtimes/win-x86/native/Microsoft.DiaSymReader.Native.x86.dll": { - "assetType": "native", - "rid": "win-x86" - }, - "runtimes/win/native/Microsoft.DiaSymReader.Native.amd64.dll": { - "assetType": "native", - "rid": "win" - }, - "runtimes/win/native/Microsoft.DiaSymReader.Native.arm.dll": { - "assetType": "native", - "rid": "win" - }, - "runtimes/win/native/Microsoft.DiaSymReader.Native.x86.dll": { - "assetType": "native", - "rid": "win" - }, - "runtimes/win8-arm/native/Microsoft.DiaSymReader.Native.arm.dll": { - "assetType": "native", - "rid": "win8-arm" - } - } - }, - "Microsoft.DotNet.InternalAbstractions/1.0.0-rc2-002702": { - "type": "package", - "dependencies": { - "System.AppContext": "4.1.0-rc2-24027", - "System.Collections": "4.0.11-rc2-24027", - "System.IO": "4.1.0-rc2-24027", - "System.IO.FileSystem": "4.0.1-rc2-24027", - "System.Reflection.TypeExtensions": "4.1.0-rc2-24027", - "System.Runtime.Extensions": "4.1.0-rc2-24027", - "System.Runtime.InteropServices": "4.1.0-rc2-24027", - "System.Runtime.InteropServices.RuntimeInformation": "4.0.0-rc2-24027" - }, - "compile": { - "lib/netstandard1.3/Microsoft.DotNet.InternalAbstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.DotNet.InternalAbstractions.dll": {} - } - }, - "Microsoft.DotNet.ProjectModel/1.0.0-rc2-002702": { - "type": "package", - "dependencies": { - "Microsoft.CSharp": "4.0.1-rc2-24027", - "Microsoft.Extensions.DependencyModel": "1.0.0-rc2-002702", - "Newtonsoft.Json": "7.0.1", - "NuGet.Packaging": "3.5.0-beta-final", - "NuGet.RuntimeModel": "3.5.0-beta-final", - "System.Dynamic.Runtime": "4.0.11-rc2-24027", - "System.Reflection.Metadata": "1.3.0-rc2-24027", - "System.Runtime.Loader": "4.0.0-rc2-24027", - "System.Runtime.Serialization.Primitives": "4.1.1-rc2-24027", - "System.Security.Cryptography.Algorithms": "4.1.0-rc2-24027", - "System.Threading.Thread": "4.0.0-rc2-24027", - "System.Xml.XDocument": "4.0.11-rc2-24027" - }, - "compile": { - "lib/netstandard1.5/Microsoft.DotNet.ProjectModel.dll": {} - }, - "runtime": { - "lib/netstandard1.5/Microsoft.DotNet.ProjectModel.dll": {} - } - }, - "Microsoft.EntityFrameworkCore/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Caching.Memory": "1.0.0", - "Microsoft.Extensions.DependencyInjection": "1.0.0", - "Microsoft.Extensions.Logging": "1.0.0", - "Remotion.Linq": "2.1.1", - "System.Collections.Concurrent": "4.0.12", - "System.Collections.Immutable": "1.2.0", - "System.ComponentModel.Annotations": "4.1.0", - "System.Interactive.Async": "3.0.0", - "System.Linq.Queryable": "4.0.1", - "System.ObjectModel": "4.0.12", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0" - }, - "compile": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.dll": {} - } - }, - "Microsoft.EntityFrameworkCore.Design/1.0.0-preview2-final": { - "type": "package", - "dependencies": { - "Microsoft.EntityFrameworkCore.Design.Core": "1.0.0-preview2-final", - "Microsoft.Extensions.CommandLineUtils": "1.0.0", - "Microsoft.NETCore.App": "1.0.0" - }, - "compile": { - "lib/netcoreapp1.0/Microsoft.EntityFrameworkCore.Design.dll": {} - }, - "runtime": { - "lib/netcoreapp1.0/Microsoft.EntityFrameworkCore.Design.dll": {} - } - }, - "Microsoft.EntityFrameworkCore.Design.Core/1.0.0-preview2-final": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.Hosting.Abstractions": "1.0.0", - "Microsoft.EntityFrameworkCore.Relational.Design": "1.0.0", - "System.AppContext": "4.1.0", - "System.Collections.NonGeneric": "4.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1" - }, - "compile": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Design.Core.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Design.Core.dll": {} - } - }, - "Microsoft.EntityFrameworkCore.Relational/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.CSharp": "4.0.1", - "Microsoft.EntityFrameworkCore": "1.0.0", - "System.Data.Common": "4.1.0", - "System.Diagnostics.DiagnosticSource": "4.0.0", - "System.Text.RegularExpressions": "4.1.0" - }, - "compile": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Relational.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Relational.dll": {} - } - }, - "Microsoft.EntityFrameworkCore.Relational.Design/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.EntityFrameworkCore.Relational": "1.0.0" - }, - "compile": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Relational.Design.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Relational.Design.dll": {} - } - }, - "Microsoft.EntityFrameworkCore.Sqlite/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Data.Sqlite": "1.0.0", - "Microsoft.EntityFrameworkCore.Relational": "1.0.0", - "System.IO.FileSystem": "4.0.1" - }, - "compile": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Sqlite.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Sqlite.dll": {} - } - }, - "Microsoft.Extensions.Caching.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "1.0.0", - "System.Collections": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.Caching.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.Caching.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.Caching.Memory/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "1.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", - "Microsoft.Extensions.Options": "1.0.0", - "System.Linq": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/Microsoft.Extensions.Caching.Memory.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.Extensions.Caching.Memory.dll": {} - } - }, - "Microsoft.Extensions.CommandLineUtils/1.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Console": "4.0.0", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1" - }, - "compile": { - "lib/netstandard1.3/Microsoft.Extensions.CommandLineUtils.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.Extensions.CommandLineUtils.dll": {} - } - }, - "Microsoft.Extensions.Configuration.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "1.0.0", - "System.Linq": "4.1.0" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.Configuration.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.Configuration.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.DependencyInjection/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.1/Microsoft.Extensions.DependencyInjection.dll": {} - }, - "runtime": { - "lib/netstandard1.1/Microsoft.Extensions.DependencyInjection.dll": {} - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "System.ComponentModel": "4.0.1", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.DependencyModel/1.0.0-rc2-002702": { - "type": "package", - "dependencies": { - "Microsoft.DotNet.InternalAbstractions": "1.0.0-rc2-002702", - "Newtonsoft.Json": "7.0.1", - "System.Diagnostics.Debug": "4.0.11-rc2-24027", - "System.Dynamic.Runtime": "4.0.11-rc2-24027", - "System.Linq": "4.1.0-rc2-24027" - }, - "compile": { - "lib/netstandard1.5/Microsoft.Extensions.DependencyModel.dll": {} - }, - "runtime": { - "lib/netstandard1.5/Microsoft.Extensions.DependencyModel.dll": {} - } - }, - "Microsoft.Extensions.FileProviders.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Primitives": "1.0.0", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.Logging/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", - "Microsoft.Extensions.Logging.Abstractions": "1.0.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.1/Microsoft.Extensions.Logging.dll": {} - }, - "runtime": { - "lib/netstandard1.1/Microsoft.Extensions.Logging.dll": {} - } - }, - "Microsoft.Extensions.Logging.Abstractions/1.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0" - }, - "compile": { - "lib/netstandard1.1/Microsoft.Extensions.Logging.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.1/Microsoft.Extensions.Logging.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.Options/1.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", - "Microsoft.Extensions.Primitives": "1.0.0", - "System.ComponentModel": "4.0.1", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.Options.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.Options.dll": {} - } - }, - "Microsoft.Extensions.PlatformAbstractions/1.0.0": { - "type": "package", - "dependencies": { - "System.AppContext": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "lib/netstandard1.3/Microsoft.Extensions.PlatformAbstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.Extensions.PlatformAbstractions.dll": {} - } - }, - "Microsoft.Extensions.Primitives/1.0.0": { - "type": "package", - "dependencies": { - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "lib/netstandard1.0/Microsoft.Extensions.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Microsoft.Extensions.Primitives.dll": {} - } - }, - "Microsoft.Extensions.Testing.Abstractions/1.0.0-preview1-002702": { - "type": "package", - "dependencies": { - "Microsoft.DiaSymReader": "1.0.6", - "Microsoft.DiaSymReader.Native": "1.3.3", - "Microsoft.DotNet.ProjectModel": "1.0.0-rc2-002702", - "Newtonsoft.Json": "7.0.1", - "System.Reflection.TypeExtensions": "4.1.0-rc2-24027", - "System.Resources.ResourceManager": "4.0.1-rc2-24027" - }, - "compile": { - "lib/netstandard1.5/Microsoft.Extensions.Testing.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard1.5/Microsoft.Extensions.Testing.Abstractions.dll": {} - } - }, - "Microsoft.NETCore.App/1.0.0": { - "type": "package", - "dependencies": { - "Libuv": "1.9.0", - "Microsoft.CSharp": "4.0.1", - "Microsoft.CodeAnalysis.CSharp": "1.3.0", - "Microsoft.CodeAnalysis.VisualBasic": "1.3.0", - "Microsoft.NETCore.DotNetHostPolicy": "1.0.1", - "Microsoft.NETCore.Runtime.CoreCLR": "1.0.2", - "Microsoft.VisualBasic": "10.0.1", - "NETStandard.Library": "1.6.0", - "System.Buffers": "4.0.0", - "System.Collections.Immutable": "1.2.0", - "System.ComponentModel": "4.0.1", - "System.ComponentModel.Annotations": "4.1.0", - "System.Diagnostics.DiagnosticSource": "4.0.0", - "System.Diagnostics.Process": "4.1.0", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization.Extensions": "4.0.1", - "System.IO.FileSystem.Watcher": "4.0.0", - "System.IO.MemoryMappedFiles": "4.0.0", - "System.IO.UnmanagedMemoryStream": "4.0.1", - "System.Linq.Expressions": "4.1.0", - "System.Linq.Parallel": "4.0.1", - "System.Linq.Queryable": "4.0.1", - "System.Net.NameResolution": "4.0.0", - "System.Net.Requests": "4.0.11", - "System.Net.Security": "4.0.0", - "System.Net.WebHeaderCollection": "4.0.1", - "System.Numerics.Vectors": "4.1.1", - "System.Reflection.DispatchProxy": "4.0.1", - "System.Reflection.Metadata": "1.3.0", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.Reader": "4.0.0", - "System.Runtime.Loader": "4.0.0", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Threading.Tasks.Dataflow": "4.6.0", - "System.Threading.Tasks.Extensions": "4.0.0", - "System.Threading.Tasks.Parallel": "4.0.1", - "System.Threading.Thread": "4.0.0", - "System.Threading.ThreadPool": "4.0.10" - }, - "compile": { - "lib/netcoreapp1.0/_._": {} - }, - "runtime": { - "lib/netcoreapp1.0/_._": {} - } - }, - "Microsoft.NETCore.DotNetHost/1.0.1": { - "type": "package" - }, - "Microsoft.NETCore.DotNetHostPolicy/1.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.DotNetHostResolver": "1.0.1" - } - }, - "Microsoft.NETCore.DotNetHostResolver/1.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.DotNetHost": "1.0.1" - } - }, - "Microsoft.NETCore.Jit/1.0.2": { - "type": "package" - }, - "Microsoft.NETCore.Platforms/1.0.1": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "Microsoft.NETCore.Runtime.CoreCLR/1.0.2": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Jit": "1.0.2", - "Microsoft.NETCore.Windows.ApiSets": "1.0.1" - } - }, - "Microsoft.NETCore.Targets/1.0.1": { - "type": "package", - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "Microsoft.NETCore.Windows.ApiSets/1.0.1": { - "type": "package" - }, - "Microsoft.VisualBasic/10.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.1/Microsoft.VisualBasic.dll": {} - }, - "runtime": { - "lib/netstandard1.3/Microsoft.VisualBasic.dll": {} - } - }, - "Microsoft.Win32.Primitives/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/Microsoft.Win32.Primitives.dll": {} - } - }, - "Microsoft.Win32.Registry/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/Microsoft.Win32.Registry.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "NETStandard.Library/1.6.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "System.AppContext": "4.1.0", - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Console": "4.0.0", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tools": "4.0.1", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Globalization.Calendars": "4.0.1", - "System.IO": "4.1.0", - "System.IO.Compression": "4.1.0", - "System.IO.Compression.ZipFile": "4.0.1", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Net.Http": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Net.Sockets": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.0.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Timer": "4.0.1", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XDocument": "4.0.11" - } - }, - "Newtonsoft.Json/9.0.1": { - "type": "package", - "dependencies": { - "Microsoft.CSharp": "4.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Serialization.Primitives": "4.1.1", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XDocument": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/Newtonsoft.Json.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Newtonsoft.Json.dll": {} - } - }, - "NLog/4.4.0-betav15": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.PlatformAbstractions": "1.0.0", - "NETStandard.Library": "1.6.0", - "System.Collections.NonGeneric": "4.0.1", - "System.ComponentModel.TypeConverter": "4.1.0", - "System.Data.Common": "4.1.0", - "System.Diagnostics.Contracts": "4.0.1", - "System.Diagnostics.StackTrace": "4.0.1", - "System.Diagnostics.TraceSource": "4.0.0", - "System.IO.FileSystem.Watcher": "4.0.0", - "System.Net.NameResolution": "4.0.0", - "System.Net.Requests": "4.0.11", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Runtime.Serialization.Primitives": "4.1.1", - "System.Threading.Thread": "4.0.0", - "System.Threading.ThreadPool": "4.0.10", - "System.Xml.XmlDocument": "4.0.1" - }, - "compile": { - "lib/netstandard1.5/NLog.dll": {} - }, - "runtime": { - "lib/netstandard1.5/NLog.dll": {} - } - }, - "NuGet.Common/3.5.0-beta-final": { - "type": "package", - "dependencies": { - "NETStandard.Library": "1.5.0-rc2-24027", - "System.Diagnostics.Process": "4.1.0-rc2-24027", - "System.Security.Cryptography.Algorithms": "4.1.0-rc2-24027", - "System.Threading.Thread": "4.0.0-rc2-24027" - }, - "compile": { - "lib/netstandard1.3/NuGet.Common.dll": {} - }, - "runtime": { - "lib/netstandard1.3/NuGet.Common.dll": {} - } - }, - "NuGet.Frameworks/3.5.0-beta-final": { - "type": "package", - "dependencies": { - "NETStandard.Library": "1.5.0-rc2-24027", - "NuGet.Versioning": "3.5.0-beta-final" - }, - "compile": { - "lib/netstandard1.3/NuGet.Frameworks.dll": {} - }, - "runtime": { - "lib/netstandard1.3/NuGet.Frameworks.dll": {} - } - }, - "NuGet.Packaging/3.5.0-beta-final": { - "type": "package", - "dependencies": { - "NETStandard.Library": "1.5.0-rc2-24027", - "NuGet.Common": "3.5.0-beta-final", - "NuGet.Packaging.Core": "3.5.0-beta-final", - "System.IO.Compression": "4.1.0-rc2-24027" - }, - "compile": { - "lib/netstandard1.3/NuGet.Packaging.dll": {} - }, - "runtime": { - "lib/netstandard1.3/NuGet.Packaging.dll": {} - } - }, - "NuGet.Packaging.Core/3.5.0-beta-final": { - "type": "package", - "dependencies": { - "NETStandard.Library": "1.5.0-rc2-24027", - "NuGet.Packaging.Core.Types": "3.5.0-beta-final", - "System.Xml.XDocument": "4.0.11-rc2-24027" - }, - "compile": { - "lib/netstandard1.3/NuGet.Packaging.Core.dll": {} - }, - "runtime": { - "lib/netstandard1.3/NuGet.Packaging.Core.dll": {} - } - }, - "NuGet.Packaging.Core.Types/3.5.0-beta-final": { - "type": "package", - "dependencies": { - "NETStandard.Library": "1.5.0-rc2-24027", - "NuGet.Frameworks": "3.5.0-beta-final" - }, - "compile": { - "lib/netstandard1.3/NuGet.Packaging.Core.Types.dll": {} - }, - "runtime": { - "lib/netstandard1.3/NuGet.Packaging.Core.Types.dll": {} - } - }, - "NuGet.RuntimeModel/3.5.0-beta-final": { - "type": "package", - "dependencies": { - "NETStandard.Library": "1.5.0-rc2-24027", - "Newtonsoft.Json": "6.0.4", - "NuGet.Frameworks": "3.5.0-beta-final", - "NuGet.Versioning": "3.5.0-beta-final", - "System.Dynamic.Runtime": "4.0.11-rc2-24027", - "System.ObjectModel": "4.0.12-rc2-24027" - }, - "compile": { - "lib/netstandard1.3/NuGet.RuntimeModel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/NuGet.RuntimeModel.dll": {} - } - }, - "NuGet.Versioning/3.5.0-beta-final": { - "type": "package", - "dependencies": { - "NETStandard.Library": "1.5.0-rc2-24027" - }, - "compile": { - "lib/netstandard1.0/NuGet.Versioning.dll": {} - }, - "runtime": { - "lib/netstandard1.0/NuGet.Versioning.dll": {} - } - }, - "Portable.BouncyCastle/1.8.1.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/crypto.dll": {} - }, - "runtime": { - "lib/netstandard1.3/crypto.dll": {} - } - }, - "Remotion.Linq/2.1.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Linq.Queryable": "4.0.1", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/Remotion.Linq.dll": {} - }, - "runtime": { - "lib/netstandard1.0/Remotion.Linq.dll": {} - } - }, - "runtime.native.System/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.IO.Compression/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Net.Http/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Net.Security/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Security.Cryptography/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "SQLite/3.12.2": { - "type": "package", - "dependencies": { - "SQLite.Native": "3.12.2" - } - }, - "SQLite.Native/3.12.2": { - "type": "package", - "runtimeTargets": { - "runtimes/linux-x64/native/libsqlite3.so": { - "assetType": "native", - "rid": "linux-x64" - }, - "runtimes/osx-x64/native/libsqlite3.dylib": { - "assetType": "native", - "rid": "osx-x64" - }, - "runtimes/win7-x64/native/sqlite3.dll": { - "assetType": "native", - "rid": "win7-x64" - }, - "runtimes/win7-x86/native/sqlite3.dll": { - "assetType": "native", - "rid": "win7-x86" - } - } - }, - "System.AppContext/4.1.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.6/System.AppContext.dll": {} - }, - "runtime": { - "lib/netstandard1.6/System.AppContext.dll": {} - } - }, - "System.Buffers/4.0.0": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.1/System.Buffers.dll": {} - }, - "runtime": { - "lib/netstandard1.1/System.Buffers.dll": {} - } - }, - "System.Collections/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Collections.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Collections.Concurrent/4.0.12": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Collections.Concurrent.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Collections.Concurrent.dll": {} - } - }, - "System.Collections.Immutable/1.2.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/System.Collections.Immutable.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Collections.Immutable.dll": {} - } - }, - "System.Collections.NonGeneric/4.0.1": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Collections.NonGeneric.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Collections.NonGeneric.dll": {} - } - }, - "System.Collections.Specialized/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections.NonGeneric": "4.0.1", - "System.Globalization": "4.0.11", - "System.Globalization.Extensions": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Collections.Specialized.dll": {} - } - }, - "System.ComponentModel/4.0.1": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.ComponentModel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.ComponentModel.dll": {} - } - }, - "System.ComponentModel.Annotations/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.ComponentModel": "4.0.1", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.4/System.ComponentModel.Annotations.dll": {} - }, - "runtime": { - "lib/netstandard1.4/System.ComponentModel.Annotations.dll": {} - } - }, - "System.ComponentModel.Primitives/4.1.0": { - "type": "package", - "dependencies": { - "System.ComponentModel": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.ComponentModel.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.ComponentModel.Primitives.dll": {} - } - }, - "System.ComponentModel.TypeConverter/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Collections.NonGeneric": "4.0.1", - "System.Collections.Specialized": "4.0.1", - "System.ComponentModel": "4.0.1", - "System.ComponentModel.Primitives": "4.1.0", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.5/System.ComponentModel.TypeConverter.dll": {} - }, - "runtime": { - "lib/netstandard1.5/System.ComponentModel.TypeConverter.dll": {} - } - }, - "System.Console/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.Runtime": "4.1.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Console.dll": {} - } - }, - "System.Data.Common/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.2/System.Data.Common.dll": {} - }, - "runtime": { - "lib/netstandard1.2/System.Data.Common.dll": {} - } - }, - "System.Diagnostics.Contracts/4.0.1": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Diagnostics.Contracts.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Diagnostics.Contracts.dll": {} - } - }, - "System.Diagnostics.Debug/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Diagnostics.Debug.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Diagnostics.DiagnosticSource/4.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": {} - } - }, - "System.Diagnostics.FileVersionInfo/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Reflection.Metadata": "1.3.0", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Diagnostics.Process/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "Microsoft.Win32.Registry": "4.0.0", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Thread": "4.0.0", - "System.Threading.ThreadPool": "4.0.10", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.4/System.Diagnostics.Process.dll": {} - }, - "runtimeTargets": { - "runtimes/linux/lib/netstandard1.4/System.Diagnostics.Process.dll": { - "assetType": "runtime", - "rid": "linux" - }, - "runtimes/osx/lib/netstandard1.4/System.Diagnostics.Process.dll": { - "assetType": "runtime", - "rid": "osx" - }, - "runtimes/win/lib/netstandard1.4/System.Diagnostics.Process.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Diagnostics.StackTrace/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections.Immutable": "1.2.0", - "System.IO.FileSystem": "4.0.1", - "System.Reflection": "4.1.0", - "System.Reflection.Metadata": "1.3.0", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Diagnostics.StackTrace.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Diagnostics.StackTrace.dll": {} - } - }, - "System.Diagnostics.Tools/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Diagnostics.Tools.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Diagnostics.TraceSource/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Diagnostics.TraceSource.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Diagnostics.TraceSource.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Diagnostics.TraceSource.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Diagnostics.Tracing/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Diagnostics.Tracing.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wpa81/_._": {} - } - }, - "System.Dynamic.Runtime/4.0.11": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Dynamic.Runtime.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Dynamic.Runtime.dll": {} - } - }, - "System.Globalization/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Globalization.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Globalization.Calendars/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Globalization": "4.0.11", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Globalization.Calendars.dll": {} - } - }, - "System.Globalization.Extensions/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Globalization.Extensions.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Interactive.Async/3.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/System.Interactive.Async.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Interactive.Async.dll": {} - } - }, - "System.IO/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.5/System.IO.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.IO.Compression/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "runtime.native.System": "4.0.0", - "runtime.native.System.IO.Compression": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.Compression.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wpa81/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.IO.Compression.ZipFile/4.0.1": { - "type": "package", - "dependencies": { - "System.Buffers": "4.0.0", - "System.IO": "4.1.0", - "System.IO.Compression": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.IO.Compression.ZipFile.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.IO.Compression.ZipFile.dll": {} - } - }, - "System.IO.FileSystem/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Text.Encoding": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.dll": {} - } - }, - "System.IO.FileSystem.Primitives/4.0.1": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} - } - }, - "System.IO.FileSystem.Watcher/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "System.Collections": "4.0.11", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Overlapped": "4.0.1", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Thread": "4.0.0", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.FileSystem.Watcher.dll": {} - }, - "runtimeTargets": { - "runtimes/linux/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll": { - "assetType": "runtime", - "rid": "linux" - }, - "runtimes/osx/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll": { - "assetType": "runtime", - "rid": "osx" - }, - "runtimes/win/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.IO.MemoryMappedFiles/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.IO.UnmanagedMemoryStream": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.MemoryMappedFiles.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.IO.MemoryMappedFiles.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.IO.MemoryMappedFiles.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.IO.UnmanagedMemoryStream/4.0.1": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll": {} - } - }, - "System.Linq/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.6/System.Linq.dll": {} - }, - "runtime": { - "lib/netstandard1.6/System.Linq.dll": {} - } - }, - "System.Linq.Expressions/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Emit.Lightweight": "4.0.1", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.6/System.Linq.Expressions.dll": {} - }, - "runtime": { - "lib/netstandard1.6/System.Linq.Expressions.dll": {} - } - }, - "System.Linq.Parallel/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.1/System.Linq.Parallel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Linq.Parallel.dll": {} - } - }, - "System.Linq.Queryable/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Linq.Queryable.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Linq.Queryable.dll": {} - } - }, - "System.Net.Http/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.DiagnosticSource": "4.0.0", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Globalization.Extensions": "4.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.Net.Primitives": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.OpenSsl": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "runtime.native.System": "4.0.0", - "runtime.native.System.Net.Http": "4.0.1", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.Http.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wpa81/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Net.Http.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Net.NameResolution/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Net.Primitives": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Principal.Windows": "4.0.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.NameResolution.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Net.NameResolution.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Net.NameResolution.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Net.Primitives/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/System.Net.Primitives.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Net.Requests/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Net.Http": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Net.WebHeaderCollection": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Net.Requests.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Net.Requests.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Net.Requests.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Net.Security/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Globalization.Extensions": "4.0.1", - "System.IO": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Claims": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.OpenSsl": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Security.Principal": "4.0.1", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Threading.ThreadPool": "4.0.10", - "runtime.native.System": "4.0.0", - "runtime.native.System.Net.Security": "4.0.1", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.Security.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Net.Security.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Net.Security.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Net.Sockets/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.Net.Primitives": "4.0.11", - "System.Runtime": "4.1.0", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Net.Sockets.dll": {} - } - }, - "System.Net.WebHeaderCollection/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.WebHeaderCollection.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Net.WebHeaderCollection.dll": {} - } - }, - "System.Net.WebSockets/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.Win32.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Net.WebSockets.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Net.WebSockets.dll": {} - } - }, - "System.Net.WebSockets.Client/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Globalization": "4.0.11", - "System.Net.Primitives": "4.0.11", - "System.Net.WebHeaderCollection": "4.0.1", - "System.Net.WebSockets": "4.0.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.X509Certificates": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Net.WebSockets.Client.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Net.WebSockets.Client.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Net.WebSockets.Client.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Numerics.Vectors/4.1.1": { - "type": "package", - "dependencies": { - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Numerics.Vectors.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Numerics.Vectors.dll": {} - } - }, - "System.ObjectModel/4.0.12": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.ObjectModel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.ObjectModel.dll": {} - } - }, - "System.Private.DataContractSerialization/4.1.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Emit.Lightweight": "4.0.1", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Serialization.Primitives": "4.1.1", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XmlDocument": "4.0.1", - "System.Xml.XmlSerializer": "4.0.11" - }, - "compile": { - "ref/netstandard/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Private.DataContractSerialization.dll": {} - } - }, - "System.Reflection/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.IO": "4.1.0", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Reflection.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Reflection.DispatchProxy/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Reflection.DispatchProxy.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.DispatchProxy.dll": {} - } - }, - "System.Reflection.Emit/4.0.1": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.1/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.dll": {} - } - }, - "System.Reflection.Emit.ILGeneration/4.0.1": { - "type": "package", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll": {} - } - }, - "System.Reflection.Emit.Lightweight/4.0.1": { - "type": "package", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll": {} - } - }, - "System.Reflection.Extensions/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Reflection.Extensions.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Reflection.Metadata/1.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Collections.Immutable": "1.2.0", - "System.Diagnostics.Debug": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.1/System.Reflection.Metadata.dll": {} - }, - "runtime": { - "lib/netstandard1.1/System.Reflection.Metadata.dll": {} - } - }, - "System.Reflection.Primitives/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Reflection.Primitives.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Reflection.TypeExtensions/4.1.0": { - "type": "package", - "dependencies": { - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Reflection.TypeExtensions.dll": {} - }, - "runtime": { - "lib/netstandard1.5/System.Reflection.TypeExtensions.dll": {} - } - }, - "System.Resources.Reader/4.0.0": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/System.Resources.Reader.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Resources.Reader.dll": {} - } - }, - "System.Resources.ResourceManager/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Globalization": "4.0.11", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Resources.ResourceManager.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Resources.ResourceWriter/4.0.0-beta-22816": { - "type": "package", - "dependencies": { - "System.IO": "4.0.10-beta-22816", - "System.Runtime": "4.0.20-beta-22816" - }, - "compile": { - "lib/contract/System.Resources.ResourceWriter.dll": {} - }, - "runtime": { - "lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Resources.ResourceWriter.dll": {} - } - }, - "System.Runtime/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp80+wpa81/_._": {} - } - }, - "System.Runtime.CompilerServices.Unsafe/4.0.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll": {} - } - }, - "System.Runtime.Extensions/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.Extensions.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Runtime.Handles/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Runtime.Handles.dll": {} - } - }, - "System.Runtime.InteropServices/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Reflection": "4.1.0", - "System.Reflection.Primitives": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.InteropServices.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wpa81/_._": {} - } - }, - "System.Runtime.InteropServices.RuntimeInformation/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Threading": "4.0.11", - "runtime.native.System": "4.0.0" - }, - "compile": { - "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Runtime.Loader/4.0.0": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.5/System.Runtime.Loader.dll": {} - }, - "runtime": { - "lib/netstandard1.5/System.Runtime.Loader.dll": {} - } - }, - "System.Runtime.Numerics/4.0.1": { - "type": "package", - "dependencies": { - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0" - }, - "compile": { - "ref/netstandard1.1/System.Runtime.Numerics.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Runtime.Numerics.dll": {} - } - }, - "System.Runtime.Serialization.Primitives/4.1.1": { - "type": "package", - "dependencies": { - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Runtime.Serialization.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll": {} - } - }, - "System.Runtime.Serialization.Xml/4.1.1": { - "type": "package", - "dependencies": { - "System.IO": "4.1.0", - "System.Private.DataContractSerialization": "4.1.1", - "System.Runtime": "4.1.0", - "System.Runtime.Serialization.Primitives": "4.1.1", - "System.Text.Encoding": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Runtime.Serialization.Xml.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Runtime.Serialization.Xml.dll": {} - } - }, - "System.Security.Claims/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Security.Principal": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/System.Security.Claims.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Security.Claims.dll": {} - } - }, - "System.Security.Cryptography.Algorithms/4.2.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Cng/4.2.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.6/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Csp/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Encoding/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.OpenSsl/4.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.6/_._": {} - }, - "runtime": { - "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": { - "assetType": "runtime", - "rid": "unix" - } - } - }, - "System.Security.Cryptography.Primitives/4.0.0": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} - } - }, - "System.Security.Cryptography.X509Certificates/4.1.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.Globalization.Calendars": "4.0.1", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.Numerics": "4.0.1", - "System.Security.Cryptography.Algorithms": "4.2.0", - "System.Security.Cryptography.Cng": "4.2.0", - "System.Security.Cryptography.Csp": "4.0.0", - "System.Security.Cryptography.Encoding": "4.0.0", - "System.Security.Cryptography.OpenSsl": "4.0.0", - "System.Security.Cryptography.Primitives": "4.0.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "runtime.native.System": "4.0.0", - "runtime.native.System.Net.Http": "4.0.1", - "runtime.native.System.Security.Cryptography": "4.0.0" - }, - "compile": { - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Principal/4.0.1": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.0/System.Security.Principal.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Security.Principal.dll": {} - } - }, - "System.Security.Principal.Windows/4.0.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.Win32.Primitives": "4.0.1", - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Security.Claims": "4.0.1", - "System.Security.Principal": "4.0.1", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Security.Principal.Windows.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Text.Encoding/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Text.Encoding.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Text.Encoding.CodePages/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.Handles": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Text.Encoding.CodePages.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Text.Encoding.Extensions/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0", - "System.Text.Encoding": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Text.Encoding.Extensions.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Text.Encodings.Web/4.0.0": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/System.Text.Encodings.Web.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Text.Encodings.Web.dll": {} - } - }, - "System.Text.RegularExpressions/4.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11" - }, - "compile": { - "ref/netstandard1.6/System.Text.RegularExpressions.dll": {} - }, - "runtime": { - "lib/netstandard1.6/System.Text.RegularExpressions.dll": {} - } - }, - "System.Threading/4.0.11": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Threading.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Threading.dll": {} - } - }, - "System.Threading.Overlapped/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Threading.Overlapped.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Threading.Overlapped.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Threading.Tasks/4.0.11": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Threading.Tasks.dll": {} - }, - "runtime": { - "lib/portable-net45+win8+wp8+wpa81/_._": {} - } - }, - "System.Threading.Tasks.Dataflow/4.6.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Dynamic.Runtime": "4.0.11", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll": {} - }, - "runtime": { - "lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll": {} - } - }, - "System.Threading.Tasks.Extensions/4.0.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Runtime": "4.1.0", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll": {} - }, - "runtime": { - "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll": {} - } - }, - "System.Threading.Tasks.Parallel/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections.Concurrent": "4.0.12", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tracing": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Threading.Tasks": "4.0.11" - }, - "compile": { - "ref/netstandard1.1/System.Threading.Tasks.Parallel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Threading.Tasks.Parallel.dll": {} - } - }, - "System.Threading.Thread/4.0.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.3/System.Threading.Thread.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Threading.Thread.dll": {} - } - }, - "System.Threading.ThreadPool/4.0.10": { - "type": "package", - "dependencies": { - "System.Runtime": "4.1.0", - "System.Runtime.Handles": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/System.Threading.ThreadPool.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Threading.ThreadPool.dll": {} - } - }, - "System.Threading.Timer/4.0.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.0.1", - "Microsoft.NETCore.Targets": "1.0.1", - "System.Runtime": "4.1.0" - }, - "compile": { - "ref/netstandard1.2/System.Threading.Timer.dll": {} - } - }, - "System.Xml.ReaderWriter/4.0.11": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.IO.FileSystem.Primitives": "4.0.1", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Text.Encoding.Extensions": "4.0.11", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading.Tasks": "4.0.11", - "System.Threading.Tasks.Extensions": "4.0.0" - }, - "compile": { - "ref/netstandard1.3/System.Xml.ReaderWriter.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.ReaderWriter.dll": {} - } - }, - "System.Xml.XDocument/4.0.11": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Diagnostics.Tools": "4.0.1", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Reflection": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Xml.XDocument.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.XDocument.dll": {} - } - }, - "System.Xml.XmlDocument/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.Encoding": "4.0.11", - "System.Threading": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/System.Xml.XmlDocument.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.XmlDocument.dll": {} - } - }, - "System.Xml.XmlSerializer/4.0.11": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Linq": "4.1.0", - "System.Reflection": "4.1.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Extensions": "4.0.1", - "System.Reflection.Primitives": "4.0.1", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XmlDocument": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.XmlSerializer.dll": {} - } - }, - "System.Xml.XPath/4.0.1": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.0.11", - "System.IO": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.XPath.dll": {} - } - }, - "System.Xml.XPath.XDocument/4.0.1": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Linq": "4.1.0", - "System.Resources.ResourceManager": "4.0.1", - "System.Runtime": "4.1.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.0.11", - "System.Xml.ReaderWriter": "4.0.11", - "System.Xml.XDocument": "4.0.11", - "System.Xml.XPath": "4.0.1" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.XPath.XDocument.dll": {} - } - }, - "VideoLibrary/1.3.4": { - "type": "package", - "compile": { - "lib/portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10/libvideo.dll": {} - }, - "runtime": { - "lib/portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10/libvideo.dll": {} - } - }, - "xunit/2.1.0": { - "type": "package", - "dependencies": { - "xunit.assert": "[2.1.0]", - "xunit.core": "[2.1.0]" - } - }, - "xunit.abstractions/2.0.0": { - "type": "package", - "compile": { - "lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS/xunit.abstractions.dll": {} - }, - "runtime": { - "lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS/xunit.abstractions.dll": {} - } - }, - "xunit.assert/2.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.0", - "System.Diagnostics.Debug": "4.0.0", - "System.Globalization": "4.0.0", - "System.Linq": "4.0.0", - "System.ObjectModel": "4.0.0", - "System.Reflection": "4.0.0", - "System.Reflection.Extensions": "4.0.0", - "System.Runtime": "4.0.0", - "System.Runtime.Extensions": "4.0.0", - "System.Text.RegularExpressions": "4.0.0", - "System.Threading.Tasks": "4.0.0" - }, - "compile": { - "lib/dotnet/xunit.assert.dll": {} - }, - "runtime": { - "lib/dotnet/xunit.assert.dll": {} - } - }, - "xunit.core/2.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.0", - "System.Diagnostics.Debug": "4.0.0", - "System.Globalization": "4.0.0", - "System.Linq": "4.0.0", - "System.Reflection": "4.0.0", - "System.Reflection.Extensions": "4.0.0", - "System.Runtime": "4.0.0", - "System.Runtime.Extensions": "4.0.0", - "System.Threading.Tasks": "4.0.0", - "xunit.abstractions": "2.0.0", - "xunit.extensibility.core": "[2.1.0]", - "xunit.extensibility.execution": "[2.1.0]" - } - }, - "xunit.extensibility.core/2.1.0": { - "type": "package", - "dependencies": { - "xunit.abstractions": "[2.0.0]" - }, - "compile": { - "lib/dotnet/xunit.core.dll": {} - }, - "runtime": { - "lib/dotnet/xunit.core.dll": {} - } - }, - "xunit.extensibility.execution/2.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.0", - "System.Diagnostics.Debug": "4.0.0", - "System.Globalization": "4.0.0", - "System.IO": "4.0.0", - "System.Linq": "4.0.0", - "System.Linq.Expressions": "4.0.0", - "System.Reflection": "4.0.0", - "System.Reflection.Extensions": "4.0.0", - "System.Runtime": "4.0.0", - "System.Runtime.Extensions": "4.0.0", - "System.Text.Encoding": "4.0.0", - "System.Threading": "4.0.0", - "System.Threading.Tasks": "4.0.0", - "xunit.abstractions": "2.0.0", - "xunit.extensibility.core": "[2.1.0]" - }, - "compile": { - "lib/dotnet/xunit.execution.dotnet.dll": {} - }, - "runtime": { - "lib/dotnet/xunit.execution.dotnet.dll": {} - } - }, - "xunit.runner.reporters/2.1.0": { - "type": "package", - "dependencies": { - "Newtonsoft.Json": "7.0.1", - "System.Collections": "4.0.0", - "System.Diagnostics.Debug": "4.0.0", - "System.Net.Http": "4.0.0", - "System.Net.Primitives": "4.0.0", - "System.Reflection": "4.0.0", - "System.Reflection.Extensions": "4.0.0", - "System.Runtime": "4.0.0", - "System.Runtime.Extensions": "4.0.0", - "System.Text.Encoding": "4.0.0", - "System.Threading": "4.0.0", - "System.Threading.Tasks": "4.0.0", - "xunit.abstractions": "2.0.0", - "xunit.runner.utility": "[2.1.0]" - }, - "compile": { - "lib/dotnet/xunit.runner.reporters.dotnet.dll": {} - }, - "runtime": { - "lib/dotnet/xunit.runner.reporters.dotnet.dll": {} - } - }, - "xunit.runner.utility/2.1.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.0.0", - "System.Diagnostics.Debug": "4.0.0", - "System.Globalization": "4.0.0", - "System.IO": "4.0.0", - "System.Linq": "4.0.0", - "System.Reflection": "4.0.0", - "System.Reflection.Extensions": "4.0.0", - "System.Runtime": "4.0.0", - "System.Runtime.Extensions": "4.0.0", - "System.Text.RegularExpressions": "4.0.0", - "System.Threading": "4.0.0", - "System.Threading.Tasks": "4.0.0", - "xunit.abstractions": "2.0.0" - }, - "compile": { - "lib/dotnet/xunit.runner.utility.dotnet.dll": {} - }, - "runtime": { - "lib/dotnet/xunit.runner.utility.dotnet.dll": {} - } - }, - "Discord.Net/1.0.0-beta": { - "type": "project", - "framework": ".NETStandard,Version=v1.3", - "dependencies": { - "Microsoft.Win32.Primitives": "4.0.1", - "Newtonsoft.Json": "8.0.3", - "System.Collections.Concurrent": "4.0.12", - "System.Collections.Immutable": "1.2.0", - "System.IO.Compression": "4.1.0", - "System.IO.FileSystem": "4.0.1", - "System.Net.Http": "4.1.0", - "System.Net.NameResolution": "4.0.0", - "System.Net.Sockets": "4.1.0", - "System.Net.WebSockets.Client": "4.0.0", - "System.Reflection.Extensions": "4.0.1", - "System.Runtime.InteropServices": "4.1.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.0.0", - "System.Runtime.Serialization.Primitives": "4.1.1", - "System.Text.RegularExpressions": "4.1.0" - }, - "compile": { - "netstandard1.3/Discord.Net.dll": {} - }, - "runtime": { - "netstandard1.3/Discord.Net.dll": {} - } - }, - "Discord.Net.Commands/1.0.0-beta": { - "type": "project", - "framework": ".NETStandard,Version=v1.3", - "dependencies": { - "Discord.Net": "1.0.0" - }, - "compile": { - "netstandard1.3/Discord.Net.Commands.dll": {} - }, - "runtime": { - "netstandard1.3/Discord.Net.Commands.dll": {} - } - }, - "NadekoBot/1.0.0": { - "type": "project", - "framework": ".NETCoreApp,Version=v1.0", - "dependencies": { - "CoreCLR-NCalc": "2.1.0", - "Discord.Net": "1.0.0-beta", - "Discord.Net.Commands": "1.0.0-beta", - "Google.Apis.Customsearch.v1": "1.16.0.466", - "Google.Apis.Urlshortener.v1": "1.15.0.138", - "Google.Apis.YouTube.v3": "1.15.0.582", - "ImageProcessorCore": "1.0.0-alpha1045", - "Microsoft.EntityFrameworkCore": "1.0.0", - "Microsoft.EntityFrameworkCore.Design": "1.0.0-preview2-final", - "Microsoft.EntityFrameworkCore.Sqlite": "1.0.0", - "Microsoft.Extensions.DependencyInjection": "1.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0", - "Microsoft.Extensions.PlatformAbstractions": "1.0.0", - "Microsoft.NETCore.App": "1.0.0", - "NLog": "4.4.0-betaV15", - "Newtonsoft.Json": "9.0.1", - "System.Diagnostics.Contracts": "4.0.1", - "System.Resources.ResourceWriter": "4.0.0-beta-22816", - "VideoLibrary": "1.3.4" - }, - "compile": { - "netcoreapp1.0/NadekoBot.dll": {} - }, - "runtime": { - "netcoreapp1.0/NadekoBot.dll": {} - } - } - } - }, - "libraries": { - "CoreCLR-NCalc/2.1.0": { - "sha512": "GUPPo99NUeAgLR5oIOLrApJx3Mx5BZEaKkK9OlDd/CmAYaACLHo68FnO+kCamsLH2+rvr6Rw3hAwzap4GVFV8Q==", - "type": "package", - "path": "CoreCLR-NCalc/2.1.0", - "files": [ - "CoreCLR-NCalc.2.1.0.nupkg.sha512", - "CoreCLR-NCalc.nuspec", - "lib/net451/NCalc.dll", - "lib/netstandard1.3/NCalc.dll" - ] - }, - "dotnet-test-xunit/1.0.0-rc2-build10015": { - "sha512": "2traZWYeJiFzau+1j9HcnSZ3rQLDyIrqKyYKCTbPPmu6lsQAtaOG5q+fuKS9Vaxczmh0IcvZ2hdWEuYmtVb9zw==", - "type": "package", - "path": "dotnet-test-xunit/1.0.0-rc2-build10015", - "files": [ - "dotnet-test-xunit.1.0.0-rc2-build10015.nupkg.sha512", - "dotnet-test-xunit.nuspec", - "lib/net451/dotnet-test-xunit.exe", - "lib/netcoreapp1.0/dotnet-test-xunit.dll", - "lib/netcoreapp1.0/dotnet-test-xunit.runtimeconfig.json", - "runtimes/unix-x64/lib/net451/dotnet-test-xunit.exe", - "runtimes/win7-x64/lib/net451/dotnet-test-xunit.exe", - "runtimes/win7-x86/lib/net451/dotnet-test-xunit.exe" - ] - }, - "Google.Apis/1.16.0": { - "sha512": "/p657K7J7p9aRl6QxUjQfNK0AobxnLHwDWdSqAr/17lZeQR+XMuEbIy7No80+zDeS39kKrRVWFlu1vHiws7gRQ==", - "type": "package", - "path": "Google.Apis/1.16.0", - "files": [ - "Google.Apis.1.16.0.nupkg.sha512", - "Google.Apis.nuspec", - "License.txt", - "lib/net45/Google.Apis.PlatformServices.dll", - "lib/net45/Google.Apis.PlatformServices.pdb", - "lib/net45/Google.Apis.PlatformServices.xml", - "lib/net45/Google.Apis.dll", - "lib/net45/Google.Apis.pdb", - "lib/net45/Google.Apis.xml", - "lib/netstandard1.3/Google.Apis.dll", - "lib/netstandard1.3/Google.Apis.pdb", - "lib/netstandard1.3/Google.Apis.xml", - "lib/portable-net45+sl50+netcore45+wpa81+wp8/Google.Apis.dll", - "lib/portable-net45+sl50+netcore45+wpa81+wp8/Google.Apis.pdb", - "lib/portable-net45+sl50+netcore45+wpa81+wp8/Google.Apis.xml", - "lib/win81/Google.Apis.PlatformServices.dll", - "lib/win81/Google.Apis.PlatformServices.pdb", - "lib/win81/Google.Apis.PlatformServices.xml", - "lib/win81/Google.Apis.dll", - "lib/win81/Google.Apis.pdb", - "lib/win81/Google.Apis.xml", - "lib/wp8/Google.Apis.PlatformServices.dll", - "lib/wp8/Google.Apis.PlatformServices.pdb", - "lib/wp8/Google.Apis.PlatformServices.xml", - "lib/wp8/Google.Apis.dll", - "lib/wp8/Google.Apis.pdb", - "lib/wp8/Google.Apis.xml", - "lib/wpa81/Google.Apis.PlatformServices.dll", - "lib/wpa81/Google.Apis.PlatformServices.pdb", - "lib/wpa81/Google.Apis.PlatformServices.xml", - "lib/wpa81/Google.Apis.dll", - "lib/wpa81/Google.Apis.pdb", - "lib/wpa81/Google.Apis.xml" - ] - }, - "Google.Apis.Auth/1.15.0": { - "sha512": "gBMi03/CjodxVVjByVvvaE4To9905Oe6o59oxzP6AI5uZaab9zNclR+2cu6OcnS5wOIpf5DKAWd+jlSshuZ/cw==", - "type": "package", - "path": "Google.Apis.Auth/1.15.0", - "files": [ - "Google.Apis.Auth.1.15.0.nupkg.sha512", - "Google.Apis.Auth.nuspec", - "License.txt", - "lib/net45/Google.Apis.Auth.PlatformServices.dll", - "lib/net45/Google.Apis.Auth.PlatformServices.pdb", - "lib/net45/Google.Apis.Auth.PlatformServices.xml", - "lib/net45/Google.Apis.Auth.dll", - "lib/net45/Google.Apis.Auth.pdb", - "lib/net45/Google.Apis.Auth.xml", - "lib/netstandard1.3/Google.Apis.Auth.PlatformServices.dll", - "lib/netstandard1.3/Google.Apis.Auth.PlatformServices.pdb", - "lib/netstandard1.3/Google.Apis.Auth.PlatformServices.xml", - "lib/netstandard1.3/Google.Apis.Auth.dll", - "lib/netstandard1.3/Google.Apis.Auth.pdb", - "lib/netstandard1.3/Google.Apis.Auth.xml", - "lib/portable-net45+sl50+netcore45+wpa81+wp8/Google.Apis.Auth.dll", - "lib/portable-net45+sl50+netcore45+wpa81+wp8/Google.Apis.Auth.pdb", - "lib/portable-net45+sl50+netcore45+wpa81+wp8/Google.Apis.Auth.xml", - "lib/win81/Google.Apis.Auth.PlatformServices.dll", - "lib/win81/Google.Apis.Auth.PlatformServices.pdb", - "lib/win81/Google.Apis.Auth.PlatformServices.xml", - "lib/win81/Google.Apis.Auth.dll", - "lib/win81/Google.Apis.Auth.pdb", - "lib/win81/Google.Apis.Auth.xml", - "lib/wp8/Google.Apis.Auth.PlatformServices.dll", - "lib/wp8/Google.Apis.Auth.PlatformServices.pdb", - "lib/wp8/Google.Apis.Auth.PlatformServices.xml", - "lib/wp8/Google.Apis.Auth.dll", - "lib/wp8/Google.Apis.Auth.pdb", - "lib/wp8/Google.Apis.Auth.xml", - "lib/wpa81/Google.Apis.Auth.PlatformServices.dll", - "lib/wpa81/Google.Apis.Auth.PlatformServices.pdb", - "lib/wpa81/Google.Apis.Auth.PlatformServices.xml", - "lib/wpa81/Google.Apis.Auth.dll", - "lib/wpa81/Google.Apis.Auth.pdb", - "lib/wpa81/Google.Apis.Auth.xml" - ] - }, - "Google.Apis.Core/1.16.0": { - "sha512": "uATqVAsPHlpOf+3VV51xFEIghAMSLJyh1hqoVpnPOlkXBx7fkOcs0qP3tKXtmsaeuyC/7BYM1Tt42lyIyhY2lQ==", - "type": "package", - "path": "Google.Apis.Core/1.16.0", - "files": [ - "Google.Apis.Core.1.16.0.nupkg.sha512", - "Google.Apis.Core.nuspec", - "License.txt", - "lib/net45/Google.Apis.Core.dll", - "lib/net45/Google.Apis.Core.pdb", - "lib/net45/Google.Apis.Core.xml", - "lib/netstandard1.3/Google.Apis.Core.dll", - "lib/netstandard1.3/Google.Apis.Core.pdb", - "lib/netstandard1.3/Google.Apis.Core.xml", - "lib/portable-net45+sl50+netcore45+wpa81+wp8/Google.Apis.Core.dll", - "lib/portable-net45+sl50+netcore45+wpa81+wp8/Google.Apis.Core.pdb", - "lib/portable-net45+sl50+netcore45+wpa81+wp8/Google.Apis.Core.xml" - ] - }, - "Google.Apis.Customsearch.v1/1.16.0.466": { - "sha512": "uZ5VP/xKgTZCMJXgEfwHYEIR/7FsbtvL+bncm08a07RhWLFZTdRpCAkNL4b5wADHkblpkBe1VWKv43W77I4tJw==", - "type": "package", - "path": "Google.Apis.Customsearch.v1/1.16.0.466", - "files": [ - "Google.Apis.Customsearch.v1.1.16.0.466.nupkg.sha512", - "Google.Apis.Customsearch.v1.nuspec", - "lib/netstandard1.3/Google.Apis.Customsearch.v1.dll", - "lib/netstandard1.3/Google.Apis.Customsearch.v1.pdb", - "lib/netstandard1.3/Google.Apis.Customsearch.v1.xml", - "lib/portable-net40+sl50+netcore45+wpa81+wp8/Google.Apis.Customsearch.v1.dll", - "lib/portable-net40+sl50+netcore45+wpa81+wp8/Google.Apis.Customsearch.v1.pdb", - "lib/portable-net40+sl50+netcore45+wpa81+wp8/Google.Apis.Customsearch.v1.xml", - "lib/portable-net45+netcore45+wpa81+wp8/Google.Apis.Customsearch.v1.dll", - "lib/portable-net45+netcore45+wpa81+wp8/Google.Apis.Customsearch.v1.pdb", - "lib/portable-net45+netcore45+wpa81+wp8/Google.Apis.Customsearch.v1.xml" - ] - }, - "Google.Apis.Urlshortener.v1/1.15.0.138": { - "sha512": "67USnpqrk8tWO3LAgaK9qDQT6h8A7i7eUIOKm+OISThZoQuHiLCn6dbg46FVb597LUh57AxClSSbhnweYcYC3Q==", - "type": "package", - "path": "Google.Apis.Urlshortener.v1/1.15.0.138", - "files": [ - "Google.Apis.Urlshortener.v1.1.15.0.138.nupkg.sha512", - "Google.Apis.Urlshortener.v1.nuspec", - "lib/netstandard1.3/Google.Apis.Urlshortener.v1.dll", - "lib/netstandard1.3/Google.Apis.Urlshortener.v1.pdb", - "lib/netstandard1.3/Google.Apis.Urlshortener.v1.xml", - "lib/portable-net40+sl50+netcore45+wpa81+wp8/Google.Apis.Urlshortener.v1.dll", - "lib/portable-net40+sl50+netcore45+wpa81+wp8/Google.Apis.Urlshortener.v1.pdb", - "lib/portable-net40+sl50+netcore45+wpa81+wp8/Google.Apis.Urlshortener.v1.xml", - "lib/portable-net45+netcore45+wpa81+wp8/Google.Apis.Urlshortener.v1.dll", - "lib/portable-net45+netcore45+wpa81+wp8/Google.Apis.Urlshortener.v1.pdb", - "lib/portable-net45+netcore45+wpa81+wp8/Google.Apis.Urlshortener.v1.xml" - ] - }, - "Google.Apis.YouTube.v3/1.15.0.582": { - "sha512": "isR8FdI417PKLgLlNdOVDhduO+8yqPJ+vfID1Zx0MjAa/y3q655Plk2E/KNmsrjvXkqSSWwDCQHPz/Q1fat4tA==", - "type": "package", - "path": "Google.Apis.YouTube.v3/1.15.0.582", - "files": [ - "Google.Apis.YouTube.v3.1.15.0.582.nupkg.sha512", - "Google.Apis.YouTube.v3.nuspec", - "lib/netstandard1.3/Google.Apis.YouTube.v3.dll", - "lib/netstandard1.3/Google.Apis.YouTube.v3.pdb", - "lib/netstandard1.3/Google.Apis.YouTube.v3.xml", - "lib/portable-net40+sl50+netcore45+wpa81+wp8/Google.Apis.YouTube.v3.dll", - "lib/portable-net40+sl50+netcore45+wpa81+wp8/Google.Apis.YouTube.v3.pdb", - "lib/portable-net40+sl50+netcore45+wpa81+wp8/Google.Apis.YouTube.v3.xml", - "lib/portable-net45+netcore45+wpa81+wp8/Google.Apis.YouTube.v3.dll", - "lib/portable-net45+netcore45+wpa81+wp8/Google.Apis.YouTube.v3.pdb", - "lib/portable-net45+netcore45+wpa81+wp8/Google.Apis.YouTube.v3.xml" - ] - }, - "ImageProcessorCore/1.0.0-alpha1045": { - "sha512": "A5oL7SwFnzcu5eF26u49nf73joQghpEpCGwLb54dm6VI6ZGpjBJpKAyNKtJP30HtXy1VngiGJn/EcvCl8+JGcg==", - "type": "package", - "path": "ImageProcessorCore/1.0.0-alpha1045", - "files": [ - "ImageProcessorCore.1.0.0-alpha1045.nupkg.sha512", - "ImageProcessorCore.nuspec", - "lib/netstandard1.1/ImageProcessorCore.dll" - ] - }, - "Libuv/1.9.0": { - "sha512": "9Q7AaqtQhS8JDSIvRBt6ODSLWDBI4c8YxNxyCQemWebBFUtBbc6M5Vi5Gz1ZyIUlTW3rZK9bIr5gnVyv0z7a2Q==", - "type": "package", - "path": "Libuv/1.9.0", - "files": [ - "Libuv.1.9.0.nupkg.sha512", - "Libuv.nuspec", - "License.txt", - "runtimes/debian-x64/native/libuv.so", - "runtimes/fedora-x64/native/libuv.so", - "runtimes/opensuse-x64/native/libuv.so", - "runtimes/osx/native/libuv.dylib", - "runtimes/rhel-x64/native/libuv.so", - "runtimes/win7-arm/native/libuv.dll", - "runtimes/win7-x64/native/libuv.dll", - "runtimes/win7-x86/native/libuv.dll" - ] - }, - "Microsoft.AspNetCore.Hosting.Abstractions/1.0.0": { - "sha512": "8r6qOl1jYyC523ZKM1QNl+6ijIoYWELWm0tpEWqtTIOg9DytHJWshB7usgqiuRmfHXM0EUziR6ouFY7iP7Tuzw==", - "type": "package", - "path": "Microsoft.AspNetCore.Hosting.Abstractions/1.0.0", - "files": [ - "Microsoft.AspNetCore.Hosting.Abstractions.1.0.0.nupkg.sha512", - "Microsoft.AspNetCore.Hosting.Abstractions.nuspec", - "lib/net451/Microsoft.AspNetCore.Hosting.Abstractions.dll", - "lib/net451/Microsoft.AspNetCore.Hosting.Abstractions.xml", - "lib/netstandard1.3/Microsoft.AspNetCore.Hosting.Abstractions.dll", - "lib/netstandard1.3/Microsoft.AspNetCore.Hosting.Abstractions.xml" - ] - }, - "Microsoft.AspNetCore.Hosting.Server.Abstractions/1.0.0": { - "sha512": "sHZyhQEoW15T9E36rfdm5Ux6a6RZB0KNM79ccf2IplWASqmlRGhX4ydU3dzQRLhkHpLx16fnWOL0KScsO6BevQ==", - "type": "package", - "path": "Microsoft.AspNetCore.Hosting.Server.Abstractions/1.0.0", - "files": [ - "Microsoft.AspNetCore.Hosting.Server.Abstractions.1.0.0.nupkg.sha512", - "Microsoft.AspNetCore.Hosting.Server.Abstractions.nuspec", - "lib/net451/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll", - "lib/net451/Microsoft.AspNetCore.Hosting.Server.Abstractions.xml", - "lib/netstandard1.3/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll", - "lib/netstandard1.3/Microsoft.AspNetCore.Hosting.Server.Abstractions.xml" - ] - }, - "Microsoft.AspNetCore.Http.Abstractions/1.0.0": { - "sha512": "OJHlqdJOWKKBfsiVdX4Z4KCNuqvBIu6+1MVKuejRDyHnGyMkNHNoP/dtVzhPqvJXaJg9N4HlD0XNc6GDCFVffg==", - "type": "package", - "path": "Microsoft.AspNetCore.Http.Abstractions/1.0.0", - "files": [ - "Microsoft.AspNetCore.Http.Abstractions.1.0.0.nupkg.sha512", - "Microsoft.AspNetCore.Http.Abstractions.nuspec", - "lib/net451/Microsoft.AspNetCore.Http.Abstractions.dll", - "lib/net451/Microsoft.AspNetCore.Http.Abstractions.xml", - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Abstractions.dll", - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Abstractions.xml" - ] - }, - "Microsoft.AspNetCore.Http.Features/1.0.0": { - "sha512": "6x7zgfbTo1gL9xMEb7EMO2ES/48bqwnWyfH09z+ubWhnzxdhHls8rtqstPylu5FPD9nid6Vo2pgDm5vufRAy5Q==", - "type": "package", - "path": "Microsoft.AspNetCore.Http.Features/1.0.0", - "files": [ - "Microsoft.AspNetCore.Http.Features.1.0.0.nupkg.sha512", - "Microsoft.AspNetCore.Http.Features.nuspec", - "lib/net451/Microsoft.AspNetCore.Http.Features.dll", - "lib/net451/Microsoft.AspNetCore.Http.Features.xml", - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Features.dll", - "lib/netstandard1.3/Microsoft.AspNetCore.Http.Features.xml" - ] - }, - "Microsoft.CodeAnalysis.Analyzers/1.1.0": { - "sha512": "HS3iRWZKcUw/8eZ/08GXKY2Bn7xNzQPzf8gRPHGSowX7u7XXu9i9YEaBeBNKUXWfI7qjvT2zXtLUvbN0hds8vg==", - "type": "package", - "path": "Microsoft.CodeAnalysis.Analyzers/1.1.0", - "files": [ - "Microsoft.CodeAnalysis.Analyzers.1.1.0.nupkg.sha512", - "Microsoft.CodeAnalysis.Analyzers.nuspec", - "ThirdPartyNotices.rtf", - "analyzers/dotnet/cs/Microsoft.CodeAnalysis.Analyzers.dll", - "analyzers/dotnet/cs/Microsoft.CodeAnalysis.CSharp.Analyzers.dll", - "analyzers/dotnet/vb/Microsoft.CodeAnalysis.Analyzers.dll", - "analyzers/dotnet/vb/Microsoft.CodeAnalysis.VisualBasic.Analyzers.dll", - "tools/install.ps1", - "tools/uninstall.ps1" - ] - }, - "Microsoft.CodeAnalysis.Common/1.3.0": { - "sha512": "V09G35cs0CT1C4Dr1IEOh8IGfnWALEVAOO5JXsqagxXwmYR012TlorQ+vx2eXxfZRKs3gAS/r92gN9kRBLba5A==", - "type": "package", - "path": "Microsoft.CodeAnalysis.Common/1.3.0", - "files": [ - "Microsoft.CodeAnalysis.Common.1.3.0.nupkg.sha512", - "Microsoft.CodeAnalysis.Common.nuspec", - "ThirdPartyNotices.rtf", - "lib/net45/Microsoft.CodeAnalysis.dll", - "lib/net45/Microsoft.CodeAnalysis.xml", - "lib/netstandard1.3/Microsoft.CodeAnalysis.dll", - "lib/netstandard1.3/Microsoft.CodeAnalysis.xml", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.dll", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.xml" - ] - }, - "Microsoft.CodeAnalysis.CSharp/1.3.0": { - "sha512": "BgWDIAbSFsHuGeLSn/rljLi51nXqkSo4DZ0qEIrHyPVasrhxEVq7aV8KKZ3HEfSFB+GIhBmOogE+mlOLYg19eg==", - "type": "package", - "path": "Microsoft.CodeAnalysis.CSharp/1.3.0", - "files": [ - "Microsoft.CodeAnalysis.CSharp.1.3.0.nupkg.sha512", - "Microsoft.CodeAnalysis.CSharp.nuspec", - "ThirdPartyNotices.rtf", - "lib/net45/Microsoft.CodeAnalysis.CSharp.dll", - "lib/net45/Microsoft.CodeAnalysis.CSharp.xml", - "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.dll", - "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.xml", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.dll", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.xml" - ] - }, - "Microsoft.CodeAnalysis.VisualBasic/1.3.0": { - "sha512": "Sf3k8PkTkWqBmXnnblJbvb7ewO6mJzX6WO2t7m04BmOY5qBq6yhhyXnn/BMM+QCec3Arw3X35Zd8f9eBql0qgg==", - "type": "package", - "path": "Microsoft.CodeAnalysis.VisualBasic/1.3.0", - "files": [ - "Microsoft.CodeAnalysis.VisualBasic.1.3.0.nupkg.sha512", - "Microsoft.CodeAnalysis.VisualBasic.nuspec", - "ThirdPartyNotices.rtf", - "lib/net45/Microsoft.CodeAnalysis.VisualBasic.dll", - "lib/net45/Microsoft.CodeAnalysis.VisualBasic.xml", - "lib/netstandard1.3/Microsoft.CodeAnalysis.VisualBasic.dll", - "lib/netstandard1.3/Microsoft.CodeAnalysis.VisualBasic.xml", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.VisualBasic.dll", - "lib/portable-net45+win8/Microsoft.CodeAnalysis.VisualBasic.xml" - ] - }, - "Microsoft.CSharp/4.0.1": { - "sha512": "17h8b5mXa87XYKrrVqdgZ38JefSUqLChUQpXgSnpzsM0nDOhE40FTeNWOJ/YmySGV6tG6T8+hjz6vxbknHJr6A==", - "type": "package", - "path": "Microsoft.CSharp/4.0.1", - "files": [ - "Microsoft.CSharp.4.0.1.nupkg.sha512", - "Microsoft.CSharp.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/Microsoft.CSharp.dll", - "lib/netstandard1.3/Microsoft.CSharp.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/Microsoft.CSharp.dll", - "ref/netcore50/Microsoft.CSharp.xml", - "ref/netcore50/de/Microsoft.CSharp.xml", - "ref/netcore50/es/Microsoft.CSharp.xml", - "ref/netcore50/fr/Microsoft.CSharp.xml", - "ref/netcore50/it/Microsoft.CSharp.xml", - "ref/netcore50/ja/Microsoft.CSharp.xml", - "ref/netcore50/ko/Microsoft.CSharp.xml", - "ref/netcore50/ru/Microsoft.CSharp.xml", - "ref/netcore50/zh-hans/Microsoft.CSharp.xml", - "ref/netcore50/zh-hant/Microsoft.CSharp.xml", - "ref/netstandard1.0/Microsoft.CSharp.dll", - "ref/netstandard1.0/Microsoft.CSharp.xml", - "ref/netstandard1.0/de/Microsoft.CSharp.xml", - "ref/netstandard1.0/es/Microsoft.CSharp.xml", - "ref/netstandard1.0/fr/Microsoft.CSharp.xml", - "ref/netstandard1.0/it/Microsoft.CSharp.xml", - "ref/netstandard1.0/ja/Microsoft.CSharp.xml", - "ref/netstandard1.0/ko/Microsoft.CSharp.xml", - "ref/netstandard1.0/ru/Microsoft.CSharp.xml", - "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", - "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "Microsoft.Data.Sqlite/1.0.0": { - "sha512": "dezlCGK9zVrPNfoX1SL50GmWDdRQNcV1SBy3wuCn/a0g7Gc26PyvlA4BKapjnCK5N8LSQ2+1PdW2imiRr+YvxA==", - "type": "package", - "path": "Microsoft.Data.Sqlite/1.0.0", - "files": [ - "Microsoft.Data.Sqlite.1.0.0.nupkg.sha512", - "Microsoft.Data.Sqlite.nuspec", - "lib/net451/Microsoft.Data.Sqlite.dll", - "lib/net451/Microsoft.Data.Sqlite.xml", - "lib/netstandard1.3/Microsoft.Data.Sqlite.dll", - "lib/netstandard1.3/Microsoft.Data.Sqlite.xml" - ] - }, - "Microsoft.DiaSymReader/1.0.6": { - "sha512": "ai2eBJrXlHa0hecUKnEyacH0iXxGNOMpc9X0s7VAeqqh5TSTW70QMhTRZ0FNCtf3R/W67K4a+uf3R7MASmAjrg==", - "type": "package", - "path": "Microsoft.DiaSymReader/1.0.6", - "files": [ - "Microsoft.DiaSymReader.1.0.6.nupkg.sha512", - "Microsoft.DiaSymReader.nuspec", - "lib/net20/Microsoft.DiaSymReader.dll", - "lib/net20/Microsoft.DiaSymReader.xml", - "lib/portable-net45+win8/Microsoft.DiaSymReader.dll", - "lib/portable-net45+win8/Microsoft.DiaSymReader.xml" - ] - }, - "Microsoft.DiaSymReader.Native/1.3.3": { - "sha512": "mjATkm+L2UlP35gO/ExNutLDfgX4iiwz1l/8sYVoeGHp5WnkEDu0NfIEsC4Oy/pCYeRw0/6SGB+kArJVNNvENQ==", - "type": "package", - "path": "Microsoft.DiaSymReader.Native/1.3.3", - "files": [ - "Microsoft.DiaSymReader.Native.1.3.3.nupkg.sha512", - "Microsoft.DiaSymReader.Native.nuspec", - "build/Microsoft.DiaSymReader.Native.props", - "runtimes/win-x64/native/Microsoft.DiaSymReader.Native.amd64.dll", - "runtimes/win-x86/native/Microsoft.DiaSymReader.Native.x86.dll", - "runtimes/win/native/Microsoft.DiaSymReader.Native.amd64.dll", - "runtimes/win/native/Microsoft.DiaSymReader.Native.arm.dll", - "runtimes/win/native/Microsoft.DiaSymReader.Native.x86.dll", - "runtimes/win8-arm/native/Microsoft.DiaSymReader.Native.arm.dll" - ] - }, - "Microsoft.DotNet.InternalAbstractions/1.0.0-rc2-002702": { - "sha512": "81Zp6K3oJY5zyoCtf7eguaZ+EnM3zawCtUKszBCLob1KH6Bu44ET2hokkk/6eMhTI2aQhbGrV9SaSjJ2K8DUDg==", - "type": "package", - "path": "Microsoft.DotNet.InternalAbstractions/1.0.0-rc2-002702", - "files": [ - "Microsoft.DotNet.InternalAbstractions.1.0.0-rc2-002702.nupkg.sha512", - "Microsoft.DotNet.InternalAbstractions.nuspec", - "lib/net451/Microsoft.DotNet.InternalAbstractions.dll", - "lib/netstandard1.3/Microsoft.DotNet.InternalAbstractions.dll" - ] - }, - "Microsoft.DotNet.ProjectModel/1.0.0-rc2-002702": { - "sha512": "ryslqqMpPRcJma9kJn3V1/GydzUny6i6xfpQ0cqfWmlPdSQ9Hnh6x2l8yVqU+ueCiVffKWn/Or80moLwroXP/A==", - "type": "package", - "path": "Microsoft.DotNet.ProjectModel/1.0.0-rc2-002702", - "files": [ - "Microsoft.DotNet.ProjectModel.1.0.0-rc2-002702.nupkg.sha512", - "Microsoft.DotNet.ProjectModel.nuspec", - "lib/net451/Microsoft.DotNet.ProjectModel.dll", - "lib/netstandard1.5/Microsoft.DotNet.ProjectModel.dll" - ] - }, - "Microsoft.EntityFrameworkCore/1.0.0": { - "sha512": "Vqg/v0cXRQZQH0gY3VHHqt0Bt5WZEkDReVpI1sNYKHVbVtnMYFKPp5SiNygosUJYrJk1rSGb8UVkplDNNUkEgg==", - "type": "package", - "path": "Microsoft.EntityFrameworkCore/1.0.0", - "files": [ - "Microsoft.EntityFrameworkCore.1.0.0.nupkg.sha512", - "Microsoft.EntityFrameworkCore.nuspec", - "lib/net451/Microsoft.EntityFrameworkCore.dll", - "lib/net451/Microsoft.EntityFrameworkCore.xml", - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.dll", - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.xml" - ] - }, - "Microsoft.EntityFrameworkCore.Design/1.0.0-preview2-final": { - "sha512": "RhyjntECuOVsrKjgFog9rv+V7oBsxBNxz5NviF7uHvDDQXLyHH3os/CewQxRNsve114AQH5RX/Bww6qAXlSORQ==", - "type": "package", - "path": "Microsoft.EntityFrameworkCore.Design/1.0.0-preview2-final", - "files": [ - "Microsoft.EntityFrameworkCore.Design.1.0.0-preview2-final.nupkg.sha512", - "Microsoft.EntityFrameworkCore.Design.nuspec", - "lib/net451/_._", - "lib/netcore50/_._", - "lib/netcoreapp1.0/Microsoft.EntityFrameworkCore.Design.dll", - "lib/netcoreapp1.0/Microsoft.EntityFrameworkCore.Design.runtimeconfig.json", - "lib/netcoreapp1.0/Microsoft.EntityFrameworkCore.Design.xml", - "runtimes/win7-x64/lib/net451/Microsoft.EntityFrameworkCore.Design.exe", - "runtimes/win7-x86/lib/net451/Microsoft.EntityFrameworkCore.Design.exe" - ] - }, - "Microsoft.EntityFrameworkCore.Design.Core/1.0.0-preview2-final": { - "sha512": "H3pHksGErQSEwWyvISlDYMslIXftS4XB2m0AvqBS08ECGHagh27mqm/oIyUetzzRad+C2V0zpguJmR14eMiRaA==", - "type": "package", - "path": "Microsoft.EntityFrameworkCore.Design.Core/1.0.0-preview2-final", - "files": [ - "Microsoft.EntityFrameworkCore.Design.Core.1.0.0-preview2-final.nupkg.sha512", - "Microsoft.EntityFrameworkCore.Design.Core.nuspec", - "lib/net451/Microsoft.EntityFrameworkCore.Design.Core.dll", - "lib/net451/Microsoft.EntityFrameworkCore.Design.Core.xml", - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Design.Core.dll", - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Design.Core.xml" - ] - }, - "Microsoft.EntityFrameworkCore.Relational/1.0.0": { - "sha512": "LGBab+7o0eq4C3YtvkAxK8W7Ia57eO0Ue0viQgt0STptQ2bUpLzV7q5LfbNl475rt6yTWa/vDQlYVaI64fwqdw==", - "type": "package", - "path": "Microsoft.EntityFrameworkCore.Relational/1.0.0", - "files": [ - "Microsoft.EntityFrameworkCore.Relational.1.0.0.nupkg.sha512", - "Microsoft.EntityFrameworkCore.Relational.nuspec", - "lib/net451/Microsoft.EntityFrameworkCore.Relational.dll", - "lib/net451/Microsoft.EntityFrameworkCore.Relational.xml", - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Relational.dll", - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Relational.xml" - ] - }, - "Microsoft.EntityFrameworkCore.Relational.Design/1.0.0": { - "sha512": "pw4EmGTp5U645is0Lyf0C6yU1uQGHVIZiRyxlDNNrRllL0ZjSFKTShv9qbE+fBpvvvArNp2HhDmP7d6vJAt0Dw==", - "type": "package", - "path": "Microsoft.EntityFrameworkCore.Relational.Design/1.0.0", - "files": [ - "Microsoft.EntityFrameworkCore.Relational.Design.1.0.0.nupkg.sha512", - "Microsoft.EntityFrameworkCore.Relational.Design.nuspec", - "lib/net451/Microsoft.EntityFrameworkCore.Relational.Design.dll", - "lib/net451/Microsoft.EntityFrameworkCore.Relational.Design.xml", - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Relational.Design.dll", - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Relational.Design.xml" - ] - }, - "Microsoft.EntityFrameworkCore.Sqlite/1.0.0": { - "sha512": "GF5xfn90zVKbnCdNrjeH4j1IaAQ7FsHCWkTrdUKISzrPxG3LIizJaU2iu8YMfNhMYd5N1Y7R7SxF2dBh+5A+Ew==", - "type": "package", - "path": "Microsoft.EntityFrameworkCore.Sqlite/1.0.0", - "files": [ - "Microsoft.EntityFrameworkCore.Sqlite.1.0.0.nupkg.sha512", - "Microsoft.EntityFrameworkCore.Sqlite.nuspec", - "lib/net451/Microsoft.EntityFrameworkCore.Sqlite.dll", - "lib/net451/Microsoft.EntityFrameworkCore.Sqlite.xml", - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Sqlite.dll", - "lib/netstandard1.3/Microsoft.EntityFrameworkCore.Sqlite.xml" - ] - }, - "Microsoft.Extensions.Caching.Abstractions/1.0.0": { - "sha512": "IxlFDVOchL6tdR05bk7EiJvMtvZrVkZXBhkbXqc3GxOHOrHFGcN+92WoWFPeBpdpy8ot/Px5ZdXzt7k+2n1Bdg==", - "type": "package", - "path": "Microsoft.Extensions.Caching.Abstractions/1.0.0", - "files": [ - "Microsoft.Extensions.Caching.Abstractions.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Caching.Abstractions.nuspec", - "lib/netstandard1.0/Microsoft.Extensions.Caching.Abstractions.dll", - "lib/netstandard1.0/Microsoft.Extensions.Caching.Abstractions.xml" - ] - }, - "Microsoft.Extensions.Caching.Memory/1.0.0": { - "sha512": "6+7zTufCnZ+tfrUo7RbIRR3LB0BxwOwxfXuo0IbLyIvgoToGpWuz5wYEDfCYNOvpig9tY8FA0I1uRHYmITMXMQ==", - "type": "package", - "path": "Microsoft.Extensions.Caching.Memory/1.0.0", - "files": [ - "Microsoft.Extensions.Caching.Memory.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Caching.Memory.nuspec", - "lib/net451/Microsoft.Extensions.Caching.Memory.dll", - "lib/net451/Microsoft.Extensions.Caching.Memory.xml", - "lib/netstandard1.3/Microsoft.Extensions.Caching.Memory.dll", - "lib/netstandard1.3/Microsoft.Extensions.Caching.Memory.xml" - ] - }, - "Microsoft.Extensions.CommandLineUtils/1.0.0": { - "sha512": "kXJ8+YvEjp1j7ezJ7yvQMLYbRL6QlpBUjRoBfqghoe80yqZ5azYB90lL4iNeyRCznWF+cGm41aaIoFU0aOq7TQ==", - "type": "package", - "path": "Microsoft.Extensions.CommandLineUtils/1.0.0", - "files": [ - "Microsoft.Extensions.CommandLineUtils.1.0.0.nupkg.sha512", - "Microsoft.Extensions.CommandLineUtils.nuspec", - "lib/net451/Microsoft.Extensions.CommandLineUtils.dll", - "lib/net451/Microsoft.Extensions.CommandLineUtils.xml", - "lib/netstandard1.3/Microsoft.Extensions.CommandLineUtils.dll", - "lib/netstandard1.3/Microsoft.Extensions.CommandLineUtils.xml" - ] - }, - "Microsoft.Extensions.Configuration.Abstractions/1.0.0": { - "sha512": "nJ+Et/rnDMDmGhxvFAKdN3va7y+YDPICv1nUEP8I4IKgOkWwr/dCZHMqxVhJFrkbW9ux8Kd7erC4mvxfZh0WnA==", - "type": "package", - "path": "Microsoft.Extensions.Configuration.Abstractions/1.0.0", - "files": [ - "Microsoft.Extensions.Configuration.Abstractions.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Configuration.Abstractions.nuspec", - "lib/netstandard1.0/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/netstandard1.0/Microsoft.Extensions.Configuration.Abstractions.xml" - ] - }, - "Microsoft.Extensions.DependencyInjection/1.0.0": { - "sha512": "zdtkiZNV6LB8xtpmfyUjP/9N9ZCL/ydQ+0bfjun38fbrk+MDEm9M2yeLzRdq+OIt5xExw/KU04wFaVwJ1bhQPg==", - "type": "package", - "path": "Microsoft.Extensions.DependencyInjection/1.0.0", - "files": [ - "Microsoft.Extensions.DependencyInjection.1.0.0.nupkg.sha512", - "Microsoft.Extensions.DependencyInjection.nuspec", - "lib/netstandard1.1/Microsoft.Extensions.DependencyInjection.dll", - "lib/netstandard1.1/Microsoft.Extensions.DependencyInjection.xml" - ] - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/1.0.0": { - "sha512": "+XwaNo3o9RhLQhUnnOBCaukeRi1X9yYc0Fzye9RlErSflKZdw0VgHtn6rvKo0FTionsW0x8QVULhKH+nkqVjQA==", - "type": "package", - "path": "Microsoft.Extensions.DependencyInjection.Abstractions/1.0.0", - "files": [ - "Microsoft.Extensions.DependencyInjection.Abstractions.1.0.0.nupkg.sha512", - "Microsoft.Extensions.DependencyInjection.Abstractions.nuspec", - "lib/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml" - ] - }, - "Microsoft.Extensions.DependencyModel/1.0.0-rc2-002702": { - "sha512": "xLEhTaEJw+3o49TNfPJ0I4ZBPe56kIIgHYmrQo6AibTfdaIV36TyvjznIGwRc53x87xKavq88PlV4tpL+jUiJQ==", - "type": "package", - "path": "Microsoft.Extensions.DependencyModel/1.0.0-rc2-002702", - "files": [ - "Microsoft.Extensions.DependencyModel.1.0.0-rc2-002702.nupkg.sha512", - "Microsoft.Extensions.DependencyModel.nuspec", - "lib/net451/Microsoft.Extensions.DependencyModel.dll", - "lib/netstandard1.5/Microsoft.Extensions.DependencyModel.dll" - ] - }, - "Microsoft.Extensions.FileProviders.Abstractions/1.0.0": { - "sha512": "4jsqTxG3py/hYSsOtZMkNJ2/CQqPdpwyK7bDUkrwHgqowCFSmx/C+R4IzQ+2AK2Up1fVcu+ldC0gktwidL828A==", - "type": "package", - "path": "Microsoft.Extensions.FileProviders.Abstractions/1.0.0", - "files": [ - "Microsoft.Extensions.FileProviders.Abstractions.1.0.0.nupkg.sha512", - "Microsoft.Extensions.FileProviders.Abstractions.nuspec", - "lib/netstandard1.0/Microsoft.Extensions.FileProviders.Abstractions.dll", - "lib/netstandard1.0/Microsoft.Extensions.FileProviders.Abstractions.xml" - ] - }, - "Microsoft.Extensions.Logging/1.0.0": { - "sha512": "0mDuASVrd/nMeBYIJSK+9lT3TSmWxUXP/ipVB1pF1ApMN5fqGCckPTNwmOfT4Z9wPkXGnhbwFTGrxZvbzTWxOg==", - "type": "package", - "path": "Microsoft.Extensions.Logging/1.0.0", - "files": [ - "Microsoft.Extensions.Logging.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Logging.nuspec", - "lib/netstandard1.1/Microsoft.Extensions.Logging.dll", - "lib/netstandard1.1/Microsoft.Extensions.Logging.xml" - ] - }, - "Microsoft.Extensions.Logging.Abstractions/1.0.0": { - "sha512": "wHT6oY50q36mAXBRKtFaB7u07WxKC5u2M8fi3PqHOOnHyUo9gD0u1TlCNR8UObHQxKMYwqlgI8TLcErpt29n8A==", - "type": "package", - "path": "Microsoft.Extensions.Logging.Abstractions/1.0.0", - "files": [ - "Microsoft.Extensions.Logging.Abstractions.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Logging.Abstractions.nuspec", - "lib/netstandard1.1/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/netstandard1.1/Microsoft.Extensions.Logging.Abstractions.xml" - ] - }, - "Microsoft.Extensions.Options/1.0.0": { - "sha512": "SdP3yPKF++JTkoa91pBDiE70uQkR/gdXWzOnMPbSj+eOqY1vgY+b8RVl+gh7TrJ2wlCK2QqnQtvCQlPPZRK36w==", - "type": "package", - "path": "Microsoft.Extensions.Options/1.0.0", - "files": [ - "Microsoft.Extensions.Options.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Options.nuspec", - "lib/netstandard1.0/Microsoft.Extensions.Options.dll", - "lib/netstandard1.0/Microsoft.Extensions.Options.xml" - ] - }, - "Microsoft.Extensions.PlatformAbstractions/1.0.0": { - "sha512": "zyjUzrOmuevOAJpIo3Mt5GmpALVYCVdLZ99keMbmCxxgQH7oxzU58kGHzE6hAgYEiWsdfMJLjVR7r+vSmaJmtg==", - "type": "package", - "path": "Microsoft.Extensions.PlatformAbstractions/1.0.0", - "files": [ - "Microsoft.Extensions.PlatformAbstractions.1.0.0.nupkg.sha512", - "Microsoft.Extensions.PlatformAbstractions.nuspec", - "lib/net451/Microsoft.Extensions.PlatformAbstractions.dll", - "lib/net451/Microsoft.Extensions.PlatformAbstractions.xml", - "lib/netstandard1.3/Microsoft.Extensions.PlatformAbstractions.dll", - "lib/netstandard1.3/Microsoft.Extensions.PlatformAbstractions.xml" - ] - }, - "Microsoft.Extensions.Primitives/1.0.0": { - "sha512": "3q2vzfKEDjL6JFkRpk5SFA3zarYsO6+ZYgoucNImrUMzDn0mFbEOL5p9oPoWiypwypbJVVjWTf557bXZ0YFLig==", - "type": "package", - "path": "Microsoft.Extensions.Primitives/1.0.0", - "files": [ - "Microsoft.Extensions.Primitives.1.0.0.nupkg.sha512", - "Microsoft.Extensions.Primitives.nuspec", - "lib/netstandard1.0/Microsoft.Extensions.Primitives.dll", - "lib/netstandard1.0/Microsoft.Extensions.Primitives.xml" - ] - }, - "Microsoft.Extensions.Testing.Abstractions/1.0.0-preview1-002702": { - "sha512": "NE4Efz4kvkztJ80CSifUlP0UaBP4iOOaeTVk6nrj+ZIJzhsRGLbecIe4oX8G82pkCkqFF9i8KTl7YYUwpQY5Wg==", - "type": "package", - "path": "Microsoft.Extensions.Testing.Abstractions/1.0.0-preview1-002702", - "files": [ - "Microsoft.Extensions.Testing.Abstractions.1.0.0-preview1-002702.nupkg.sha512", - "Microsoft.Extensions.Testing.Abstractions.nuspec", - "lib/net451/Microsoft.Extensions.Testing.Abstractions.dll", - "lib/netstandard1.5/Microsoft.Extensions.Testing.Abstractions.dll" - ] - }, - "Microsoft.NETCore.App/1.0.0": { - "sha512": "Bv40dLDrT+Igcg1e6otW3D8voeJCfcAxOlsxSVlDz+J+cdWls5kblZvPHHvx7gX3/oJoQVIkEeO3sMyv5PSVJA==", - "type": "package", - "path": "Microsoft.NETCore.App/1.0.0", - "files": [ - "Microsoft.NETCore.App.1.0.0.nupkg.sha512", - "Microsoft.NETCore.App.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netcoreapp1.0/_._" - ] - }, - "Microsoft.NETCore.DotNetHost/1.0.1": { - "sha512": "uaMgykq6AckP3hZW4dsD6zjocxyXPz0tcTl8OX7mlSUWsyFXdtf45sjdwI0JIHxt3gnI6GihAlOAwYK8HE4niQ==", - "type": "package", - "path": "Microsoft.NETCore.DotNetHost/1.0.1", - "files": [ - "Microsoft.NETCore.DotNetHost.1.0.1.nupkg.sha512", - "Microsoft.NETCore.DotNetHost.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.NETCore.DotNetHostPolicy/1.0.1": { - "sha512": "d8AQ+ZVj2iK9sbgl3IEsshCSaumhM1PNTPHxldZAQLOoI1BKF8QZ1zPCNqwBGisPiWOE3f/1SHDbQi1BTRBxuA==", - "type": "package", - "path": "Microsoft.NETCore.DotNetHostPolicy/1.0.1", - "files": [ - "Microsoft.NETCore.DotNetHostPolicy.1.0.1.nupkg.sha512", - "Microsoft.NETCore.DotNetHostPolicy.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.NETCore.DotNetHostResolver/1.0.1": { - "sha512": "GEXgpAHB9E0OhfcmNJ664Xcd2bJkz2qkGIAFmCgEI5ANlQy4qEEmBVfUqA+Z9HB85ZwWxZc1eIJ6fxdxcjrctg==", - "type": "package", - "path": "Microsoft.NETCore.DotNetHostResolver/1.0.1", - "files": [ - "Microsoft.NETCore.DotNetHostResolver.1.0.1.nupkg.sha512", - "Microsoft.NETCore.DotNetHostResolver.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.NETCore.Jit/1.0.2": { - "sha512": "Ok2vWofa6X8WD9vc4pfLHwvJz1/B6t3gOAoZcjrjrQf7lQOlNIuZIZtLn3wnWX28DuQGpPJkRlBxFj7Z5txNqw==", - "type": "package", - "path": "Microsoft.NETCore.Jit/1.0.2", - "files": [ - "Microsoft.NETCore.Jit.1.0.2.nupkg.sha512", - "Microsoft.NETCore.Jit.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.NETCore.Platforms/1.0.1": { - "sha512": "2G6OjjJzwBfNOO8myRV/nFrbTw5iA+DEm0N+qUqhrOmaVtn4pC77h38I1jsXGw5VH55+dPfQsqHD0We9sCl9FQ==", - "type": "package", - "path": "Microsoft.NETCore.Platforms/1.0.1", - "files": [ - "Microsoft.NETCore.Platforms.1.0.1.nupkg.sha512", - "Microsoft.NETCore.Platforms.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.json" - ] - }, - "Microsoft.NETCore.Runtime.CoreCLR/1.0.2": { - "sha512": "A0x1xtTjYJWZr2DRzgfCOXgB0JkQg8twnmtTJ79wFje+IihlLbXtx6Z2AxyVokBM5ruwTedR6YdCmHk39QJdtQ==", - "type": "package", - "path": "Microsoft.NETCore.Runtime.CoreCLR/1.0.2", - "files": [ - "Microsoft.NETCore.Runtime.CoreCLR.1.0.2.nupkg.sha512", - "Microsoft.NETCore.Runtime.CoreCLR.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.NETCore.Targets/1.0.1": { - "sha512": "rkn+fKobF/cbWfnnfBOQHKVKIOpxMZBvlSHkqDWgBpwGDcLRduvs3D9OLGeV6GWGvVwNlVi2CBbTjuPmtHvyNw==", - "type": "package", - "path": "Microsoft.NETCore.Targets/1.0.1", - "files": [ - "Microsoft.NETCore.Targets.1.0.1.nupkg.sha512", - "Microsoft.NETCore.Targets.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.json" - ] - }, - "Microsoft.NETCore.Windows.ApiSets/1.0.1": { - "sha512": "SaToCvvsGMxTgtLv/BrFQ5IFMPRE1zpWbnqbpwykJa8W5XiX82CXI6K2o7yf5xS7EP6t/JzFLV0SIDuWpvBZVw==", - "type": "package", - "path": "Microsoft.NETCore.Windows.ApiSets/1.0.1", - "files": [ - "Microsoft.NETCore.Windows.ApiSets.1.0.1.nupkg.sha512", - "Microsoft.NETCore.Windows.ApiSets.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.json" - ] - }, - "Microsoft.VisualBasic/10.0.1": { - "sha512": "HpNyOf/4Tp2lh4FyywB55VITk0SqVxEjDzsVDDyF1yafDN6Bq18xcHowzCPINyYHUTgGcEtmpYiRsFdSo0KKdQ==", - "type": "package", - "path": "Microsoft.VisualBasic/10.0.1", - "files": [ - "Microsoft.VisualBasic.10.0.1.nupkg.sha512", - "Microsoft.VisualBasic.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net45/_._", - "lib/netcore50/Microsoft.VisualBasic.dll", - "lib/netstandard1.3/Microsoft.VisualBasic.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "ref/net45/_._", - "ref/netcore50/Microsoft.VisualBasic.dll", - "ref/netcore50/Microsoft.VisualBasic.xml", - "ref/netcore50/de/Microsoft.VisualBasic.xml", - "ref/netcore50/es/Microsoft.VisualBasic.xml", - "ref/netcore50/fr/Microsoft.VisualBasic.xml", - "ref/netcore50/it/Microsoft.VisualBasic.xml", - "ref/netcore50/ja/Microsoft.VisualBasic.xml", - "ref/netcore50/ko/Microsoft.VisualBasic.xml", - "ref/netcore50/ru/Microsoft.VisualBasic.xml", - "ref/netcore50/zh-hans/Microsoft.VisualBasic.xml", - "ref/netcore50/zh-hant/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/Microsoft.VisualBasic.dll", - "ref/netstandard1.1/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/de/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/es/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/fr/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/it/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/ja/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/ko/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/ru/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/zh-hans/Microsoft.VisualBasic.xml", - "ref/netstandard1.1/zh-hant/Microsoft.VisualBasic.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._" - ] - }, - "Microsoft.Win32.Primitives/4.0.1": { - "sha512": "fQnBHO9DgcmkC9dYSJoBqo6sH1VJwJprUHh8F3hbcRlxiQiBUuTntdk8tUwV490OqC2kQUrinGwZyQHTieuXRA==", - "type": "package", - "path": "Microsoft.Win32.Primitives/4.0.1", - "files": [ - "Microsoft.Win32.Primitives.4.0.1.nupkg.sha512", - "Microsoft.Win32.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/Microsoft.Win32.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/Microsoft.Win32.Primitives.dll", - "ref/netstandard1.3/Microsoft.Win32.Primitives.dll", - "ref/netstandard1.3/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/de/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/es/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/fr/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/it/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ja/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ko/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ru/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/zh-hans/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/zh-hant/Microsoft.Win32.Primitives.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "Microsoft.Win32.Registry/4.0.0": { - "sha512": "q+eLtROUAQ3OxYA5mpQrgyFgzLQxIyrfT2eLpYX5IEPlHmIio2nh4F5bgOaQoGOV865kFKZZso9Oq9RlazvXtg==", - "type": "package", - "path": "Microsoft.Win32.Registry/4.0.0", - "files": [ - "Microsoft.Win32.Registry.4.0.0.nupkg.sha512", - "Microsoft.Win32.Registry.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/Microsoft.Win32.Registry.dll", - "ref/net46/Microsoft.Win32.Registry.dll", - "ref/netstandard1.3/Microsoft.Win32.Registry.dll", - "ref/netstandard1.3/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/de/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/es/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/fr/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/it/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/ja/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/ko/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/ru/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/zh-hans/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/zh-hant/Microsoft.Win32.Registry.xml", - "runtimes/unix/lib/netstandard1.3/Microsoft.Win32.Registry.dll", - "runtimes/win/lib/net46/Microsoft.Win32.Registry.dll", - "runtimes/win/lib/netcore50/_._", - "runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll" - ] - }, - "NETStandard.Library/1.6.0": { - "sha512": "ypsCvIdCZ4IoYASJHt6tF2fMo7N30NLgV1EbmC+snO490OMl9FvVxmumw14rhReWU3j3g7BYudG6YCrchwHJlA==", - "type": "package", - "path": "NETStandard.Library/1.6.0", - "files": [ - "NETStandard.Library.1.6.0.nupkg.sha512", - "NETStandard.Library.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt" - ] - }, - "Newtonsoft.Json/9.0.1": { - "sha512": "U82mHQSKaIk+lpSVCbWYKNavmNH1i5xrExDEquU1i6I5pV6UMOqRnJRSlKO3cMPfcpp0RgDY+8jUXHdQ4IfXvw==", - "type": "package", - "path": "Newtonsoft.Json/9.0.1", - "files": [ - "Newtonsoft.Json.9.0.1.nupkg.sha512", - "Newtonsoft.Json.nuspec", - "lib/net20/Newtonsoft.Json.dll", - "lib/net20/Newtonsoft.Json.xml", - "lib/net35/Newtonsoft.Json.dll", - "lib/net35/Newtonsoft.Json.xml", - "lib/net40/Newtonsoft.Json.dll", - "lib/net40/Newtonsoft.Json.xml", - "lib/net45/Newtonsoft.Json.dll", - "lib/net45/Newtonsoft.Json.xml", - "lib/netstandard1.0/Newtonsoft.Json.dll", - "lib/netstandard1.0/Newtonsoft.Json.xml", - "lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.dll", - "lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.xml", - "lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll", - "lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.xml", - "tools/install.ps1" - ] - }, - "NLog/4.4.0-betav15": { - "sha512": "LDRcdjv5VG9EWz+mnFqdSolUci+j+DBPIPjm7Xdam3xa1F9Rt7o0UpYoCnNRulqHzpKbU704o7Ad4ck9WxDhnw==", - "type": "package", - "path": "NLog/4.4.0-betav15", - "files": [ - "NLog.4.4.0-betav15.nupkg.sha512", - "NLog.nuspec", - "lib/monoandroid23/NLog.dll", - "lib/monoandroid23/NLog.xml", - "lib/net35/NLog.dll", - "lib/net35/NLog.xml", - "lib/net40/NLog.dll", - "lib/net40/NLog.xml", - "lib/net45/NLog.dll", - "lib/net45/NLog.xml", - "lib/netstandard1.3/NLog.dll", - "lib/netstandard1.3/NLog.xml", - "lib/netstandard1.5/NLog.dll", - "lib/netstandard1.5/NLog.xml", - "lib/sl40/NLog.dll", - "lib/sl40/NLog.xml", - "lib/sl50/NLog.dll", - "lib/sl50/NLog.xml", - "lib/wp80/NLog.dll", - "lib/wp80/NLog.xml", - "lib/xamarinios10/NLog.dll", - "lib/xamarinios10/NLog.xml" - ] - }, - "NuGet.Common/3.5.0-beta-final": { - "sha512": "7eCg4ky9NtTnxY1+2VtDKIYX137QejH8Dsuw6fENU53N6OeoROsrv1MUm0pu4e3TF8VH1eL5G3Vx/G30VdXEDg==", - "type": "package", - "path": "NuGet.Common/3.5.0-beta-final", - "files": [ - "NuGet.Common.3.5.0-beta-final.nupkg.sha512", - "NuGet.Common.nuspec", - "lib/net45/NuGet.Common.dll", - "lib/net45/NuGet.Common.xml", - "lib/netstandard1.3/NuGet.Common.dll", - "lib/netstandard1.3/NuGet.Common.xml" - ] - }, - "NuGet.Frameworks/3.5.0-beta-final": { - "sha512": "Si7O1OFxUryBq3xuq2AIwADM8WUMIBQOmUdTJBSaxV+KesShLJfgrr7Dl+Tg/nVETSEArJS8ktscv7gjKqtosg==", - "type": "package", - "path": "NuGet.Frameworks/3.5.0-beta-final", - "files": [ - "NuGet.Frameworks.3.5.0-beta-final.nupkg.sha512", - "NuGet.Frameworks.nuspec", - "lib/net45/NuGet.Frameworks.dll", - "lib/net45/NuGet.Frameworks.xml", - "lib/netstandard1.3/NuGet.Frameworks.dll", - "lib/netstandard1.3/NuGet.Frameworks.xml" - ] - }, - "NuGet.Packaging/3.5.0-beta-final": { - "sha512": "wJSrtokTPmpIkNhJLiG5GPxdRFCVl6XB3MmgLCyRhD2O2wZVQqvvL6SELOz/61EU0C8m9ni/UiiNRqTEtH5QZw==", - "type": "package", - "path": "NuGet.Packaging/3.5.0-beta-final", - "files": [ - "NuGet.Packaging.3.5.0-beta-final.nupkg.sha512", - "NuGet.Packaging.nuspec", - "lib/net45/NuGet.Packaging.dll", - "lib/net45/NuGet.Packaging.xml", - "lib/netstandard1.3/NuGet.Packaging.dll", - "lib/netstandard1.3/NuGet.Packaging.xml" - ] - }, - "NuGet.Packaging.Core/3.5.0-beta-final": { - "sha512": "sdc8dUnbjEpNzIK5h5frJgn7ARQjQLdXMC5YrMHoEh0sCJnd2p1Lu4JvHK7mqn/MurVCAvoAjNDyazzFaVCD0w==", - "type": "package", - "path": "NuGet.Packaging.Core/3.5.0-beta-final", - "files": [ - "NuGet.Packaging.Core.3.5.0-beta-final.nupkg.sha512", - "NuGet.Packaging.Core.nuspec", - "lib/net45/NuGet.Packaging.Core.dll", - "lib/net45/NuGet.Packaging.Core.xml", - "lib/netstandard1.3/NuGet.Packaging.Core.dll", - "lib/netstandard1.3/NuGet.Packaging.Core.xml" - ] - }, - "NuGet.Packaging.Core.Types/3.5.0-beta-final": { - "sha512": "35AVdtLFJFp66CI9EDS61iviOe4UsCwfGh7RILK3j2ihZtlbTIIS5ygjmS8GnTkhNpmdwQRIk/rUempv4ABBxQ==", - "type": "package", - "path": "NuGet.Packaging.Core.Types/3.5.0-beta-final", - "files": [ - "NuGet.Packaging.Core.Types.3.5.0-beta-final.nupkg.sha512", - "NuGet.Packaging.Core.Types.nuspec", - "lib/net45/NuGet.Packaging.Core.Types.dll", - "lib/net45/NuGet.Packaging.Core.Types.xml", - "lib/netstandard1.3/NuGet.Packaging.Core.Types.dll", - "lib/netstandard1.3/NuGet.Packaging.Core.Types.xml" - ] - }, - "NuGet.RuntimeModel/3.5.0-beta-final": { - "sha512": "5opNw7zHG5wC0Qx9AzlopdPg48Tf/QVcVVKmPRuwUa3VBA1b9DBjY+1jCkaof8JRzyHZqLnxd6T9BuT98Jk0YQ==", - "type": "package", - "path": "NuGet.RuntimeModel/3.5.0-beta-final", - "files": [ - "NuGet.RuntimeModel.3.5.0-beta-final.nupkg.sha512", - "NuGet.RuntimeModel.nuspec", - "lib/net45/NuGet.RuntimeModel.dll", - "lib/net45/NuGet.RuntimeModel.xml", - "lib/netstandard1.3/NuGet.RuntimeModel.dll", - "lib/netstandard1.3/NuGet.RuntimeModel.xml" - ] - }, - "NuGet.Versioning/3.5.0-beta-final": { - "sha512": "fwFF9Mck1hgZVDvvJLU81gcaidMksfRoCwyjBALEXxnp1fJr4xLyGbTRdbf2OKI5OODGuUpxaMkcz7P4T8HsXw==", - "type": "package", - "path": "NuGet.Versioning/3.5.0-beta-final", - "files": [ - "NuGet.Versioning.3.5.0-beta-final.nupkg.sha512", - "NuGet.Versioning.nuspec", - "lib/net45/NuGet.Versioning.dll", - "lib/net45/NuGet.Versioning.xml", - "lib/netstandard1.0/NuGet.Versioning.dll", - "lib/netstandard1.0/NuGet.Versioning.xml" - ] - }, - "Portable.BouncyCastle/1.8.1.1": { - "sha512": "bKqC2Me9ukybNYTBhlYd2sJ6j2kRV7SgB+JfiP2GueYq6QdM4Ym6PYV5eyrqb6KViOyd3zqQfJp0o6UW5ZG+GQ==", - "type": "package", - "path": "Portable.BouncyCastle/1.8.1.1", - "files": [ - "Portable.BouncyCastle.1.8.1.1.nupkg.sha512", - "Portable.BouncyCastle.nuspec", - "Readme.html", - "lib/netstandard1.0/crypto.dll", - "lib/netstandard1.0/crypto.pdb", - "lib/netstandard1.0/crypto.xml", - "lib/netstandard1.3/crypto.dll", - "lib/netstandard1.3/crypto.pdb", - "lib/netstandard1.3/crypto.xml", - "lib/portable-net4+sl5+wp8+win8+wpa81/crypto.dll", - "lib/portable-net4+sl5+wp8+win8+wpa81/crypto.pdb", - "lib/portable-net4+sl5+wp8+win8+wpa81/crypto.xml" - ] - }, - "Remotion.Linq/2.1.1": { - "sha512": "IJn0BqkvwEDpP+2qjvci7n4/a9f7DhKESLWb2/uG4xQh3rTkGTBUz69bI4IivCoKkTFAqjXxYDZw2K/npohjsw==", - "type": "package", - "path": "Remotion.Linq/2.1.1", - "files": [ - "Remotion.Linq.2.1.1.nupkg.sha512", - "Remotion.Linq.nuspec", - "lib/net35/Remotion.Linq.XML", - "lib/net35/Remotion.Linq.dll", - "lib/net40/Remotion.Linq.XML", - "lib/net40/Remotion.Linq.dll", - "lib/net45/Remotion.Linq.XML", - "lib/net45/Remotion.Linq.dll", - "lib/netstandard1.0/Remotion.Linq.dll", - "lib/netstandard1.0/Remotion.Linq.xml", - "lib/portable-net45+win+wpa81+wp80/Remotion.Linq.dll", - "lib/portable-net45+win+wpa81+wp80/Remotion.Linq.xml" - ] - }, - "runtime.native.System/4.0.0": { - "sha512": "QfS/nQI7k/BLgmLrw7qm7YBoULEvgWnPI+cYsbfCVFTW8Aj+i8JhccxcFMu1RWms0YZzF+UHguNBK4Qn89e2Sg==", - "type": "package", - "path": "runtime.native.System/4.0.0", - "files": [ - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.System.4.0.0.nupkg.sha512", - "runtime.native.System.nuspec" - ] - }, - "runtime.native.System.IO.Compression/4.1.0": { - "sha512": "Ob7nvnJBox1aaB222zSVZSkf4WrebPG4qFscfK7vmD7P7NxoSxACQLtO7ytWpqXDn2wcd/+45+EAZ7xjaPip8A==", - "type": "package", - "path": "runtime.native.System.IO.Compression/4.1.0", - "files": [ - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.System.IO.Compression.4.1.0.nupkg.sha512", - "runtime.native.System.IO.Compression.nuspec" - ] - }, - "runtime.native.System.Net.Http/4.0.1": { - "sha512": "Nh0UPZx2Vifh8r+J+H2jxifZUD3sBrmolgiFWJd2yiNrxO0xTa6bAw3YwRn1VOiSen/tUXMS31ttNItCZ6lKuA==", - "type": "package", - "path": "runtime.native.System.Net.Http/4.0.1", - "files": [ - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.System.Net.Http.4.0.1.nupkg.sha512", - "runtime.native.System.Net.Http.nuspec" - ] - }, - "runtime.native.System.Net.Security/4.0.1": { - "sha512": "Az6Ff6rZFb8nYGAaejFR6jr8ktt9f3e1Q/yKdw0pwHNTLaO/1eCAC9vzBoR9YAb0QeZD6fZXl1A9tRB5stpzXA==", - "type": "package", - "path": "runtime.native.System.Net.Security/4.0.1", - "files": [ - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.System.Net.Security.4.0.1.nupkg.sha512", - "runtime.native.System.Net.Security.nuspec" - ] - }, - "runtime.native.System.Security.Cryptography/4.0.0": { - "sha512": "2CQK0jmO6Eu7ZeMgD+LOFbNJSXHFVQbCJJkEyEwowh1SCgYnrn9W9RykMfpeeVGw7h4IBvYikzpGUlmZTUafJw==", - "type": "package", - "path": "runtime.native.System.Security.Cryptography/4.0.0", - "files": [ - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.System.Security.Cryptography.4.0.0.nupkg.sha512", - "runtime.native.System.Security.Cryptography.nuspec" - ] - }, - "SQLite/3.12.2": { - "sha512": "XYNQJt2eFqGluWP+fDaiNrV1v3kA+VsU2ygUjLx7zqzhIZKlAjSYMZLldmbGNnlNC5rKR+0LTrN0IA9dZkDyFw==", - "type": "package", - "path": "SQLite/3.12.2", - "files": [ - "SQLite.3.12.2.nupkg.sha512", - "SQLite.nuspec" - ] - }, - "SQLite.Native/3.12.2": { - "sha512": "/5BdEFTaCziE6K5OG0bjSUhPo+LRmFcmyriFWEZNSuHaiqSp69sVngTb/Yo8mH6JykMA79BFdCBLMW+2E3pnuA==", - "type": "package", - "path": "SQLite.Native/3.12.2", - "files": [ - "SQLite.Native.3.12.2.nupkg.sha512", - "SQLite.Native.nuspec", - "build/net45/SQLite.Native.props", - "runtimes/linux-x64/native/libsqlite3.so", - "runtimes/osx-x64/native/libsqlite3.dylib", - "runtimes/win7-x64/native/sqlite3.dll", - "runtimes/win7-x86/native/sqlite3.dll" - ] - }, - "System.AppContext/4.1.0": { - "sha512": "3QjO4jNV7PdKkmQAVp9atA+usVnKRwI3Kx1nMwJ93T0LcQfx7pKAYk0nKz5wn1oP5iqlhZuy6RXOFdhr7rDwow==", - "type": "package", - "path": "System.AppContext/4.1.0", - "files": [ - "System.AppContext.4.1.0.nupkg.sha512", - "System.AppContext.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.AppContext.dll", - "lib/net463/System.AppContext.dll", - "lib/netcore50/System.AppContext.dll", - "lib/netstandard1.6/System.AppContext.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.AppContext.dll", - "ref/net463/System.AppContext.dll", - "ref/netstandard/_._", - "ref/netstandard1.3/System.AppContext.dll", - "ref/netstandard1.3/System.AppContext.xml", - "ref/netstandard1.3/de/System.AppContext.xml", - "ref/netstandard1.3/es/System.AppContext.xml", - "ref/netstandard1.3/fr/System.AppContext.xml", - "ref/netstandard1.3/it/System.AppContext.xml", - "ref/netstandard1.3/ja/System.AppContext.xml", - "ref/netstandard1.3/ko/System.AppContext.xml", - "ref/netstandard1.3/ru/System.AppContext.xml", - "ref/netstandard1.3/zh-hans/System.AppContext.xml", - "ref/netstandard1.3/zh-hant/System.AppContext.xml", - "ref/netstandard1.6/System.AppContext.dll", - "ref/netstandard1.6/System.AppContext.xml", - "ref/netstandard1.6/de/System.AppContext.xml", - "ref/netstandard1.6/es/System.AppContext.xml", - "ref/netstandard1.6/fr/System.AppContext.xml", - "ref/netstandard1.6/it/System.AppContext.xml", - "ref/netstandard1.6/ja/System.AppContext.xml", - "ref/netstandard1.6/ko/System.AppContext.xml", - "ref/netstandard1.6/ru/System.AppContext.xml", - "ref/netstandard1.6/zh-hans/System.AppContext.xml", - "ref/netstandard1.6/zh-hant/System.AppContext.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.AppContext.dll" - ] - }, - "System.Buffers/4.0.0": { - "sha512": "msXumHfjjURSkvxUjYuq4N2ghHoRi2VpXcKMA7gK6ujQfU3vGpl+B6ld0ATRg+FZFpRyA6PgEPA+VlIkTeNf2w==", - "type": "package", - "path": "System.Buffers/4.0.0", - "files": [ - "System.Buffers.4.0.0.nupkg.sha512", - "System.Buffers.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.1/.xml", - "lib/netstandard1.1/System.Buffers.dll" - ] - }, - "System.Collections/4.0.11": { - "sha512": "YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==", - "type": "package", - "path": "System.Collections/4.0.11", - "files": [ - "System.Collections.4.0.11.nupkg.sha512", - "System.Collections.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Collections.dll", - "ref/netcore50/System.Collections.xml", - "ref/netcore50/de/System.Collections.xml", - "ref/netcore50/es/System.Collections.xml", - "ref/netcore50/fr/System.Collections.xml", - "ref/netcore50/it/System.Collections.xml", - "ref/netcore50/ja/System.Collections.xml", - "ref/netcore50/ko/System.Collections.xml", - "ref/netcore50/ru/System.Collections.xml", - "ref/netcore50/zh-hans/System.Collections.xml", - "ref/netcore50/zh-hant/System.Collections.xml", - "ref/netstandard1.0/System.Collections.dll", - "ref/netstandard1.0/System.Collections.xml", - "ref/netstandard1.0/de/System.Collections.xml", - "ref/netstandard1.0/es/System.Collections.xml", - "ref/netstandard1.0/fr/System.Collections.xml", - "ref/netstandard1.0/it/System.Collections.xml", - "ref/netstandard1.0/ja/System.Collections.xml", - "ref/netstandard1.0/ko/System.Collections.xml", - "ref/netstandard1.0/ru/System.Collections.xml", - "ref/netstandard1.0/zh-hans/System.Collections.xml", - "ref/netstandard1.0/zh-hant/System.Collections.xml", - "ref/netstandard1.3/System.Collections.dll", - "ref/netstandard1.3/System.Collections.xml", - "ref/netstandard1.3/de/System.Collections.xml", - "ref/netstandard1.3/es/System.Collections.xml", - "ref/netstandard1.3/fr/System.Collections.xml", - "ref/netstandard1.3/it/System.Collections.xml", - "ref/netstandard1.3/ja/System.Collections.xml", - "ref/netstandard1.3/ko/System.Collections.xml", - "ref/netstandard1.3/ru/System.Collections.xml", - "ref/netstandard1.3/zh-hans/System.Collections.xml", - "ref/netstandard1.3/zh-hant/System.Collections.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Collections.Concurrent/4.0.12": { - "sha512": "2gBcbb3drMLgxlI0fBfxMA31ec6AEyYCHygGse4vxceJan8mRIWeKJ24BFzN7+bi/NFTgdIgufzb94LWO5EERQ==", - "type": "package", - "path": "System.Collections.Concurrent/4.0.12", - "files": [ - "System.Collections.Concurrent.4.0.12.nupkg.sha512", - "System.Collections.Concurrent.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Collections.Concurrent.dll", - "lib/netstandard1.3/System.Collections.Concurrent.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Collections.Concurrent.dll", - "ref/netcore50/System.Collections.Concurrent.xml", - "ref/netcore50/de/System.Collections.Concurrent.xml", - "ref/netcore50/es/System.Collections.Concurrent.xml", - "ref/netcore50/fr/System.Collections.Concurrent.xml", - "ref/netcore50/it/System.Collections.Concurrent.xml", - "ref/netcore50/ja/System.Collections.Concurrent.xml", - "ref/netcore50/ko/System.Collections.Concurrent.xml", - "ref/netcore50/ru/System.Collections.Concurrent.xml", - "ref/netcore50/zh-hans/System.Collections.Concurrent.xml", - "ref/netcore50/zh-hant/System.Collections.Concurrent.xml", - "ref/netstandard1.1/System.Collections.Concurrent.dll", - "ref/netstandard1.1/System.Collections.Concurrent.xml", - "ref/netstandard1.1/de/System.Collections.Concurrent.xml", - "ref/netstandard1.1/es/System.Collections.Concurrent.xml", - "ref/netstandard1.1/fr/System.Collections.Concurrent.xml", - "ref/netstandard1.1/it/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ja/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ko/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ru/System.Collections.Concurrent.xml", - "ref/netstandard1.1/zh-hans/System.Collections.Concurrent.xml", - "ref/netstandard1.1/zh-hant/System.Collections.Concurrent.xml", - "ref/netstandard1.3/System.Collections.Concurrent.dll", - "ref/netstandard1.3/System.Collections.Concurrent.xml", - "ref/netstandard1.3/de/System.Collections.Concurrent.xml", - "ref/netstandard1.3/es/System.Collections.Concurrent.xml", - "ref/netstandard1.3/fr/System.Collections.Concurrent.xml", - "ref/netstandard1.3/it/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ja/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ko/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ru/System.Collections.Concurrent.xml", - "ref/netstandard1.3/zh-hans/System.Collections.Concurrent.xml", - "ref/netstandard1.3/zh-hant/System.Collections.Concurrent.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Collections.Immutable/1.2.0": { - "sha512": "Cma8cBW6di16ZLibL8LYQ+cLjGzoKxpOTu/faZfDcx94ZjAGq6Nv5RO7+T1YZXqEXTZP9rt1wLVEONVpURtUqw==", - "type": "package", - "path": "System.Collections.Immutable/1.2.0", - "files": [ - "System.Collections.Immutable.1.2.0.nupkg.sha512", - "System.Collections.Immutable.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Collections.Immutable.dll", - "lib/netstandard1.0/System.Collections.Immutable.xml", - "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll", - "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.xml" - ] - }, - "System.Collections.NonGeneric/4.0.1": { - "sha512": "hMxFT2RhhlffyCdKLDXjx8WEC5JfCvNozAZxCablAuFRH74SCV4AgzE8yJCh/73bFnEoZgJ9MJmkjQ0dJmnKqA==", - "type": "package", - "path": "System.Collections.NonGeneric/4.0.1", - "files": [ - "System.Collections.NonGeneric.4.0.1.nupkg.sha512", - "System.Collections.NonGeneric.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Collections.NonGeneric.dll", - "lib/netstandard1.3/System.Collections.NonGeneric.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Collections.NonGeneric.dll", - "ref/netstandard1.3/System.Collections.NonGeneric.dll", - "ref/netstandard1.3/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/de/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/es/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/fr/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/it/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/ja/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/ko/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/ru/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/zh-hans/System.Collections.NonGeneric.xml", - "ref/netstandard1.3/zh-hant/System.Collections.NonGeneric.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Collections.Specialized/4.0.1": { - "sha512": "/HKQyVP0yH1I0YtK7KJL/28snxHNH/bi+0lgk/+MbURF6ULhAE31MDI+NZDerNWu264YbxklXCCygISgm+HMug==", - "type": "package", - "path": "System.Collections.Specialized/4.0.1", - "files": [ - "System.Collections.Specialized.4.0.1.nupkg.sha512", - "System.Collections.Specialized.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Collections.Specialized.dll", - "lib/netstandard1.3/System.Collections.Specialized.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Collections.Specialized.dll", - "ref/netstandard1.3/System.Collections.Specialized.dll", - "ref/netstandard1.3/System.Collections.Specialized.xml", - "ref/netstandard1.3/de/System.Collections.Specialized.xml", - "ref/netstandard1.3/es/System.Collections.Specialized.xml", - "ref/netstandard1.3/fr/System.Collections.Specialized.xml", - "ref/netstandard1.3/it/System.Collections.Specialized.xml", - "ref/netstandard1.3/ja/System.Collections.Specialized.xml", - "ref/netstandard1.3/ko/System.Collections.Specialized.xml", - "ref/netstandard1.3/ru/System.Collections.Specialized.xml", - "ref/netstandard1.3/zh-hans/System.Collections.Specialized.xml", - "ref/netstandard1.3/zh-hant/System.Collections.Specialized.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.ComponentModel/4.0.1": { - "sha512": "oBZFnm7seFiVfugsIyOvQCWobNZs7FzqDV/B7tx20Ep/l3UUFCPDkdTnCNaJZTU27zjeODmy2C/cP60u3D4c9w==", - "type": "package", - "path": "System.ComponentModel/4.0.1", - "files": [ - "System.ComponentModel.4.0.1.nupkg.sha512", - "System.ComponentModel.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.ComponentModel.dll", - "lib/netstandard1.3/System.ComponentModel.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.ComponentModel.dll", - "ref/netcore50/System.ComponentModel.xml", - "ref/netcore50/de/System.ComponentModel.xml", - "ref/netcore50/es/System.ComponentModel.xml", - "ref/netcore50/fr/System.ComponentModel.xml", - "ref/netcore50/it/System.ComponentModel.xml", - "ref/netcore50/ja/System.ComponentModel.xml", - "ref/netcore50/ko/System.ComponentModel.xml", - "ref/netcore50/ru/System.ComponentModel.xml", - "ref/netcore50/zh-hans/System.ComponentModel.xml", - "ref/netcore50/zh-hant/System.ComponentModel.xml", - "ref/netstandard1.0/System.ComponentModel.dll", - "ref/netstandard1.0/System.ComponentModel.xml", - "ref/netstandard1.0/de/System.ComponentModel.xml", - "ref/netstandard1.0/es/System.ComponentModel.xml", - "ref/netstandard1.0/fr/System.ComponentModel.xml", - "ref/netstandard1.0/it/System.ComponentModel.xml", - "ref/netstandard1.0/ja/System.ComponentModel.xml", - "ref/netstandard1.0/ko/System.ComponentModel.xml", - "ref/netstandard1.0/ru/System.ComponentModel.xml", - "ref/netstandard1.0/zh-hans/System.ComponentModel.xml", - "ref/netstandard1.0/zh-hant/System.ComponentModel.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.ComponentModel.Annotations/4.1.0": { - "sha512": "rhnz80h8NnHJzoi0nbQJLRR2cJznyqG168q1bgoSpe5qpaME2SguXzuEzpY68nFCi2kBgHpbU4bRN2cP3unYRA==", - "type": "package", - "path": "System.ComponentModel.Annotations/4.1.0", - "files": [ - "System.ComponentModel.Annotations.4.1.0.nupkg.sha512", - "System.ComponentModel.Annotations.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net461/System.ComponentModel.Annotations.dll", - "lib/netcore50/System.ComponentModel.Annotations.dll", - "lib/netstandard1.4/System.ComponentModel.Annotations.dll", - "lib/portable-net45+win8/_._", - "lib/win8/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net461/System.ComponentModel.Annotations.dll", - "ref/netcore50/System.ComponentModel.Annotations.dll", - "ref/netcore50/System.ComponentModel.Annotations.xml", - "ref/netcore50/de/System.ComponentModel.Annotations.xml", - "ref/netcore50/es/System.ComponentModel.Annotations.xml", - "ref/netcore50/fr/System.ComponentModel.Annotations.xml", - "ref/netcore50/it/System.ComponentModel.Annotations.xml", - "ref/netcore50/ja/System.ComponentModel.Annotations.xml", - "ref/netcore50/ko/System.ComponentModel.Annotations.xml", - "ref/netcore50/ru/System.ComponentModel.Annotations.xml", - "ref/netcore50/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netcore50/zh-hant/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/System.ComponentModel.Annotations.dll", - "ref/netstandard1.1/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/de/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/es/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/fr/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/it/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/ja/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/ko/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/ru/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netstandard1.1/zh-hant/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/System.ComponentModel.Annotations.dll", - "ref/netstandard1.3/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/de/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/es/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/fr/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/it/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/ja/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/ko/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/ru/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netstandard1.3/zh-hant/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/System.ComponentModel.Annotations.dll", - "ref/netstandard1.4/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/de/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/es/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/fr/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/it/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/ja/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/ko/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/ru/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/zh-hans/System.ComponentModel.Annotations.xml", - "ref/netstandard1.4/zh-hant/System.ComponentModel.Annotations.xml", - "ref/portable-net45+win8/_._", - "ref/win8/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.ComponentModel.Primitives/4.1.0": { - "sha512": "sc/7eVCdxPrp3ljpgTKVaQGUXiW05phNWvtv/m2kocXqrUQvTVWKou1Edas2aDjTThLPZOxPYIGNb/HN0QjURg==", - "type": "package", - "path": "System.ComponentModel.Primitives/4.1.0", - "files": [ - "System.ComponentModel.Primitives.4.1.0.nupkg.sha512", - "System.ComponentModel.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/System.ComponentModel.Primitives.dll", - "lib/netstandard1.0/System.ComponentModel.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/System.ComponentModel.Primitives.dll", - "ref/netstandard1.0/System.ComponentModel.Primitives.dll", - "ref/netstandard1.0/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/de/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/es/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/fr/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/it/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/ja/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/ko/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/ru/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.ComponentModel.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.ComponentModel.Primitives.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.ComponentModel.TypeConverter/4.1.0": { - "sha512": "MnDAlaeJZy9pdB5ZdOlwdxfpI+LJQ6e0hmH7d2+y2LkiD8DRJynyDYl4Xxf3fWFm7SbEwBZh4elcfzONQLOoQw==", - "type": "package", - "path": "System.ComponentModel.TypeConverter/4.1.0", - "files": [ - "System.ComponentModel.TypeConverter.4.1.0.nupkg.sha512", - "System.ComponentModel.TypeConverter.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/System.ComponentModel.TypeConverter.dll", - "lib/net462/System.ComponentModel.TypeConverter.dll", - "lib/netstandard1.0/System.ComponentModel.TypeConverter.dll", - "lib/netstandard1.5/System.ComponentModel.TypeConverter.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/System.ComponentModel.TypeConverter.dll", - "ref/net462/System.ComponentModel.TypeConverter.dll", - "ref/netstandard1.0/System.ComponentModel.TypeConverter.dll", - "ref/netstandard1.0/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/de/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/es/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/fr/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/it/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/ja/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/ko/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/ru/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/zh-hans/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.0/zh-hant/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/System.ComponentModel.TypeConverter.dll", - "ref/netstandard1.5/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/de/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/es/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/fr/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/it/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/ja/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/ko/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/ru/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/zh-hans/System.ComponentModel.TypeConverter.xml", - "ref/netstandard1.5/zh-hant/System.ComponentModel.TypeConverter.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Console/4.0.0": { - "sha512": "qSKUSOIiYA/a0g5XXdxFcUFmv1hNICBD7QZ0QhGYVipPIhvpiydY8VZqr1thmCXvmn8aipMg64zuanB4eotK9A==", - "type": "package", - "path": "System.Console/4.0.0", - "files": [ - "System.Console.4.0.0.nupkg.sha512", - "System.Console.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Console.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Console.dll", - "ref/netstandard1.3/System.Console.dll", - "ref/netstandard1.3/System.Console.xml", - "ref/netstandard1.3/de/System.Console.xml", - "ref/netstandard1.3/es/System.Console.xml", - "ref/netstandard1.3/fr/System.Console.xml", - "ref/netstandard1.3/it/System.Console.xml", - "ref/netstandard1.3/ja/System.Console.xml", - "ref/netstandard1.3/ko/System.Console.xml", - "ref/netstandard1.3/ru/System.Console.xml", - "ref/netstandard1.3/zh-hans/System.Console.xml", - "ref/netstandard1.3/zh-hant/System.Console.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Data.Common/4.1.0": { - "sha512": "epU8jeTe7aE7RqGHq9rZ8b0Q4Ah7DgubzHQblgZMSqgW1saW868WmooSyC5ywf8upLBkcVLDu93W9GPWUYsU2Q==", - "type": "package", - "path": "System.Data.Common/4.1.0", - "files": [ - "System.Data.Common.4.1.0.nupkg.sha512", - "System.Data.Common.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net451/System.Data.Common.dll", - "lib/netstandard1.2/System.Data.Common.dll", - "lib/portable-net451+win8+wp8+wpa81/System.Data.Common.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net451/System.Data.Common.dll", - "ref/netstandard1.2/System.Data.Common.dll", - "ref/netstandard1.2/System.Data.Common.xml", - "ref/netstandard1.2/de/System.Data.Common.xml", - "ref/netstandard1.2/es/System.Data.Common.xml", - "ref/netstandard1.2/fr/System.Data.Common.xml", - "ref/netstandard1.2/it/System.Data.Common.xml", - "ref/netstandard1.2/ja/System.Data.Common.xml", - "ref/netstandard1.2/ko/System.Data.Common.xml", - "ref/netstandard1.2/ru/System.Data.Common.xml", - "ref/netstandard1.2/zh-hans/System.Data.Common.xml", - "ref/netstandard1.2/zh-hant/System.Data.Common.xml", - "ref/portable-net451+win8+wp8+wpa81/System.Data.Common.dll", - "ref/portable-net451+win8+wp8+wpa81/System.Data.Common.xml", - "ref/portable-net451+win8+wp8+wpa81/de/System.Data.Common.xml", - "ref/portable-net451+win8+wp8+wpa81/es/System.Data.Common.xml", - "ref/portable-net451+win8+wp8+wpa81/fr/System.Data.Common.xml", - "ref/portable-net451+win8+wp8+wpa81/it/System.Data.Common.xml", - "ref/portable-net451+win8+wp8+wpa81/ja/System.Data.Common.xml", - "ref/portable-net451+win8+wp8+wpa81/ko/System.Data.Common.xml", - "ref/portable-net451+win8+wp8+wpa81/ru/System.Data.Common.xml", - "ref/portable-net451+win8+wp8+wpa81/zh-hans/System.Data.Common.xml", - "ref/portable-net451+win8+wp8+wpa81/zh-hant/System.Data.Common.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Diagnostics.Contracts/4.0.1": { - "sha512": "HvQQjy712vnlpPxaloZYkuE78Gn353L0SJLJVeLcNASeg9c4qla2a1Xq8I7B3jZoDzKPtHTkyVO7AZ5tpeQGuA==", - "type": "package", - "path": "System.Diagnostics.Contracts/4.0.1", - "files": [ - "System.Diagnostics.Contracts.4.0.1.nupkg.sha512", - "System.Diagnostics.Contracts.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Diagnostics.Contracts.dll", - "lib/netstandard1.0/System.Diagnostics.Contracts.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Diagnostics.Contracts.dll", - "ref/netcore50/System.Diagnostics.Contracts.xml", - "ref/netcore50/de/System.Diagnostics.Contracts.xml", - "ref/netcore50/es/System.Diagnostics.Contracts.xml", - "ref/netcore50/fr/System.Diagnostics.Contracts.xml", - "ref/netcore50/it/System.Diagnostics.Contracts.xml", - "ref/netcore50/ja/System.Diagnostics.Contracts.xml", - "ref/netcore50/ko/System.Diagnostics.Contracts.xml", - "ref/netcore50/ru/System.Diagnostics.Contracts.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Contracts.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/System.Diagnostics.Contracts.dll", - "ref/netstandard1.0/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/de/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/es/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/fr/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/it/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/ja/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/ko/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/ru/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/zh-hans/System.Diagnostics.Contracts.xml", - "ref/netstandard1.0/zh-hant/System.Diagnostics.Contracts.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Diagnostics.Contracts.dll" - ] - }, - "System.Diagnostics.Debug/4.0.11": { - "sha512": "w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==", - "type": "package", - "path": "System.Diagnostics.Debug/4.0.11", - "files": [ - "System.Diagnostics.Debug.4.0.11.nupkg.sha512", - "System.Diagnostics.Debug.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Diagnostics.Debug.dll", - "ref/netcore50/System.Diagnostics.Debug.xml", - "ref/netcore50/de/System.Diagnostics.Debug.xml", - "ref/netcore50/es/System.Diagnostics.Debug.xml", - "ref/netcore50/fr/System.Diagnostics.Debug.xml", - "ref/netcore50/it/System.Diagnostics.Debug.xml", - "ref/netcore50/ja/System.Diagnostics.Debug.xml", - "ref/netcore50/ko/System.Diagnostics.Debug.xml", - "ref/netcore50/ru/System.Diagnostics.Debug.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Debug.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/System.Diagnostics.Debug.dll", - "ref/netstandard1.0/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/de/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/es/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/fr/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/it/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ja/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ko/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/ru/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/zh-hans/System.Diagnostics.Debug.xml", - "ref/netstandard1.0/zh-hant/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/System.Diagnostics.Debug.dll", - "ref/netstandard1.3/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/de/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/es/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/it/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Debug.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Debug.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Diagnostics.DiagnosticSource/4.0.0": { - "sha512": "YKglnq4BMTJxfcr6nuT08g+yJ0UxdePIHxosiLuljuHIUR6t4KhFsyaHOaOc1Ofqp0PUvJ0EmcgiEz6T7vEx3w==", - "type": "package", - "path": "System.Diagnostics.DiagnosticSource/4.0.0", - "files": [ - "System.Diagnostics.DiagnosticSource.4.0.0.nupkg.sha512", - "System.Diagnostics.DiagnosticSource.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Diagnostics.DiagnosticSource.dll", - "lib/net46/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.xml", - "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.dll", - "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.xml" - ] - }, - "System.Diagnostics.FileVersionInfo/4.0.0": { - "sha512": "qjF74OTAU+mRhLaL4YSfiWy3vj6T3AOz8AW37l5zCwfbBfj0k7E94XnEsRaf2TnhE/7QaV6Hvqakoy2LoV8MVg==", - "type": "package", - "path": "System.Diagnostics.FileVersionInfo/4.0.0", - "files": [ - "System.Diagnostics.FileVersionInfo.4.0.0.nupkg.sha512", - "System.Diagnostics.FileVersionInfo.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Diagnostics.FileVersionInfo.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Diagnostics.FileVersionInfo.dll", - "ref/netstandard1.3/System.Diagnostics.FileVersionInfo.dll", - "ref/netstandard1.3/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/de/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/es/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/fr/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/it/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/ja/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/ko/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/ru/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.FileVersionInfo.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.FileVersionInfo.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll", - "runtimes/win/lib/net46/System.Diagnostics.FileVersionInfo.dll", - "runtimes/win/lib/netcore50/System.Diagnostics.FileVersionInfo.dll", - "runtimes/win/lib/netstandard1.3/System.Diagnostics.FileVersionInfo.dll" - ] - }, - "System.Diagnostics.Process/4.1.0": { - "sha512": "mpVZ5bnlSs3tTeJ6jYyDJEIa6tavhAd88lxq1zbYhkkCu0Pno2+gHXcvZcoygq2d8JxW3gojXqNJMTAshduqZA==", - "type": "package", - "path": "System.Diagnostics.Process/4.1.0", - "files": [ - "System.Diagnostics.Process.4.1.0.nupkg.sha512", - "System.Diagnostics.Process.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Diagnostics.Process.dll", - "lib/net461/System.Diagnostics.Process.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Diagnostics.Process.dll", - "ref/net461/System.Diagnostics.Process.dll", - "ref/netstandard1.3/System.Diagnostics.Process.dll", - "ref/netstandard1.3/System.Diagnostics.Process.xml", - "ref/netstandard1.3/de/System.Diagnostics.Process.xml", - "ref/netstandard1.3/es/System.Diagnostics.Process.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Process.xml", - "ref/netstandard1.3/it/System.Diagnostics.Process.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Process.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Process.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Process.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Process.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Process.xml", - "ref/netstandard1.4/System.Diagnostics.Process.dll", - "ref/netstandard1.4/System.Diagnostics.Process.xml", - "ref/netstandard1.4/de/System.Diagnostics.Process.xml", - "ref/netstandard1.4/es/System.Diagnostics.Process.xml", - "ref/netstandard1.4/fr/System.Diagnostics.Process.xml", - "ref/netstandard1.4/it/System.Diagnostics.Process.xml", - "ref/netstandard1.4/ja/System.Diagnostics.Process.xml", - "ref/netstandard1.4/ko/System.Diagnostics.Process.xml", - "ref/netstandard1.4/ru/System.Diagnostics.Process.xml", - "ref/netstandard1.4/zh-hans/System.Diagnostics.Process.xml", - "ref/netstandard1.4/zh-hant/System.Diagnostics.Process.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/linux/lib/netstandard1.4/System.Diagnostics.Process.dll", - "runtimes/osx/lib/netstandard1.4/System.Diagnostics.Process.dll", - "runtimes/win/lib/net46/System.Diagnostics.Process.dll", - "runtimes/win/lib/net461/System.Diagnostics.Process.dll", - "runtimes/win/lib/netstandard1.4/System.Diagnostics.Process.dll", - "runtimes/win7/lib/netcore50/_._" - ] - }, - "System.Diagnostics.StackTrace/4.0.1": { - "sha512": "6i2EbRq0lgGfiZ+FDf0gVaw9qeEU+7IS2+wbZJmFVpvVzVOgZEt0ScZtyenuBvs6iDYbGiF51bMAa0oDP/tujQ==", - "type": "package", - "path": "System.Diagnostics.StackTrace/4.0.1", - "files": [ - "System.Diagnostics.StackTrace.4.0.1.nupkg.sha512", - "System.Diagnostics.StackTrace.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Diagnostics.StackTrace.dll", - "lib/netstandard1.3/System.Diagnostics.StackTrace.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Diagnostics.StackTrace.dll", - "ref/netstandard1.3/System.Diagnostics.StackTrace.dll", - "ref/netstandard1.3/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/de/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/es/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/fr/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/it/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/ja/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/ko/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/ru/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.StackTrace.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.StackTrace.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Diagnostics.StackTrace.dll" - ] - }, - "System.Diagnostics.Tools/4.0.1": { - "sha512": "xBfJ8pnd4C17dWaC9FM6aShzbJcRNMChUMD42I6772KGGrqaFdumwhn9OdM68erj1ueNo3xdQ1EwiFjK5k8p0g==", - "type": "package", - "path": "System.Diagnostics.Tools/4.0.1", - "files": [ - "System.Diagnostics.Tools.4.0.1.nupkg.sha512", - "System.Diagnostics.Tools.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Diagnostics.Tools.dll", - "ref/netcore50/System.Diagnostics.Tools.xml", - "ref/netcore50/de/System.Diagnostics.Tools.xml", - "ref/netcore50/es/System.Diagnostics.Tools.xml", - "ref/netcore50/fr/System.Diagnostics.Tools.xml", - "ref/netcore50/it/System.Diagnostics.Tools.xml", - "ref/netcore50/ja/System.Diagnostics.Tools.xml", - "ref/netcore50/ko/System.Diagnostics.Tools.xml", - "ref/netcore50/ru/System.Diagnostics.Tools.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Tools.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/System.Diagnostics.Tools.dll", - "ref/netstandard1.0/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/de/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/es/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/fr/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/it/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ja/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ko/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ru/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/zh-hans/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/zh-hant/System.Diagnostics.Tools.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Diagnostics.TraceSource/4.0.0": { - "sha512": "6WVCczFZKXwpWpzd/iJkYnsmWTSFFiU24Xx/YdHXBcu+nFI/ehTgeqdJQFbtRPzbrO3KtRNjvkhtj4t5/WwWsA==", - "type": "package", - "path": "System.Diagnostics.TraceSource/4.0.0", - "files": [ - "System.Diagnostics.TraceSource.4.0.0.nupkg.sha512", - "System.Diagnostics.TraceSource.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Diagnostics.TraceSource.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Diagnostics.TraceSource.dll", - "ref/netstandard1.3/System.Diagnostics.TraceSource.dll", - "ref/netstandard1.3/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/de/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/es/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/fr/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/it/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/ja/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/ko/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/ru/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.TraceSource.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.TraceSource.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Diagnostics.TraceSource.dll", - "runtimes/win/lib/net46/System.Diagnostics.TraceSource.dll", - "runtimes/win/lib/netstandard1.3/System.Diagnostics.TraceSource.dll" - ] - }, - "System.Diagnostics.Tracing/4.1.0": { - "sha512": "vDN1PoMZCkkdNjvZLql592oYJZgS7URcJzJ7bxeBgGtx5UtR5leNm49VmfHGqIffX4FKacHbI3H6UyNSHQknBg==", - "type": "package", - "path": "System.Diagnostics.Tracing/4.1.0", - "files": [ - "System.Diagnostics.Tracing.4.1.0.nupkg.sha512", - "System.Diagnostics.Tracing.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Diagnostics.Tracing.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Diagnostics.Tracing.dll", - "ref/netcore50/System.Diagnostics.Tracing.dll", - "ref/netcore50/System.Diagnostics.Tracing.xml", - "ref/netcore50/de/System.Diagnostics.Tracing.xml", - "ref/netcore50/es/System.Diagnostics.Tracing.xml", - "ref/netcore50/fr/System.Diagnostics.Tracing.xml", - "ref/netcore50/it/System.Diagnostics.Tracing.xml", - "ref/netcore50/ja/System.Diagnostics.Tracing.xml", - "ref/netcore50/ko/System.Diagnostics.Tracing.xml", - "ref/netcore50/ru/System.Diagnostics.Tracing.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/System.Diagnostics.Tracing.dll", - "ref/netstandard1.1/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/System.Diagnostics.Tracing.dll", - "ref/netstandard1.2/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/System.Diagnostics.Tracing.dll", - "ref/netstandard1.3/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/System.Diagnostics.Tracing.dll", - "ref/netstandard1.5/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/zh-hant/System.Diagnostics.Tracing.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Dynamic.Runtime/4.0.11": { - "sha512": "db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==", - "type": "package", - "path": "System.Dynamic.Runtime/4.0.11", - "files": [ - "System.Dynamic.Runtime.4.0.11.nupkg.sha512", - "System.Dynamic.Runtime.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Dynamic.Runtime.dll", - "lib/netstandard1.3/System.Dynamic.Runtime.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Dynamic.Runtime.dll", - "ref/netcore50/System.Dynamic.Runtime.xml", - "ref/netcore50/de/System.Dynamic.Runtime.xml", - "ref/netcore50/es/System.Dynamic.Runtime.xml", - "ref/netcore50/fr/System.Dynamic.Runtime.xml", - "ref/netcore50/it/System.Dynamic.Runtime.xml", - "ref/netcore50/ja/System.Dynamic.Runtime.xml", - "ref/netcore50/ko/System.Dynamic.Runtime.xml", - "ref/netcore50/ru/System.Dynamic.Runtime.xml", - "ref/netcore50/zh-hans/System.Dynamic.Runtime.xml", - "ref/netcore50/zh-hant/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/System.Dynamic.Runtime.dll", - "ref/netstandard1.0/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/de/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/es/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/fr/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/it/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ja/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ko/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/ru/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/zh-hans/System.Dynamic.Runtime.xml", - "ref/netstandard1.0/zh-hant/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/System.Dynamic.Runtime.dll", - "ref/netstandard1.3/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/de/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/es/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/fr/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/it/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ja/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ko/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/ru/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/zh-hans/System.Dynamic.Runtime.xml", - "ref/netstandard1.3/zh-hant/System.Dynamic.Runtime.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll" - ] - }, - "System.Globalization/4.0.11": { - "sha512": "B95h0YLEL2oSnwF/XjqSWKnwKOy/01VWkNlsCeMTFJLLabflpGV26nK164eRs5GiaRSBGpOxQ3pKoSnnyZN5pg==", - "type": "package", - "path": "System.Globalization/4.0.11", - "files": [ - "System.Globalization.4.0.11.nupkg.sha512", - "System.Globalization.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Globalization.dll", - "ref/netcore50/System.Globalization.xml", - "ref/netcore50/de/System.Globalization.xml", - "ref/netcore50/es/System.Globalization.xml", - "ref/netcore50/fr/System.Globalization.xml", - "ref/netcore50/it/System.Globalization.xml", - "ref/netcore50/ja/System.Globalization.xml", - "ref/netcore50/ko/System.Globalization.xml", - "ref/netcore50/ru/System.Globalization.xml", - "ref/netcore50/zh-hans/System.Globalization.xml", - "ref/netcore50/zh-hant/System.Globalization.xml", - "ref/netstandard1.0/System.Globalization.dll", - "ref/netstandard1.0/System.Globalization.xml", - "ref/netstandard1.0/de/System.Globalization.xml", - "ref/netstandard1.0/es/System.Globalization.xml", - "ref/netstandard1.0/fr/System.Globalization.xml", - "ref/netstandard1.0/it/System.Globalization.xml", - "ref/netstandard1.0/ja/System.Globalization.xml", - "ref/netstandard1.0/ko/System.Globalization.xml", - "ref/netstandard1.0/ru/System.Globalization.xml", - "ref/netstandard1.0/zh-hans/System.Globalization.xml", - "ref/netstandard1.0/zh-hant/System.Globalization.xml", - "ref/netstandard1.3/System.Globalization.dll", - "ref/netstandard1.3/System.Globalization.xml", - "ref/netstandard1.3/de/System.Globalization.xml", - "ref/netstandard1.3/es/System.Globalization.xml", - "ref/netstandard1.3/fr/System.Globalization.xml", - "ref/netstandard1.3/it/System.Globalization.xml", - "ref/netstandard1.3/ja/System.Globalization.xml", - "ref/netstandard1.3/ko/System.Globalization.xml", - "ref/netstandard1.3/ru/System.Globalization.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Globalization.Calendars/4.0.1": { - "sha512": "L1c6IqeQ88vuzC1P81JeHmHA8mxq8a18NUBNXnIY/BVb+TCyAaGIFbhpZt60h9FJNmisymoQkHEFSE9Vslja1Q==", - "type": "package", - "path": "System.Globalization.Calendars/4.0.1", - "files": [ - "System.Globalization.Calendars.4.0.1.nupkg.sha512", - "System.Globalization.Calendars.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Globalization.Calendars.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Globalization.Calendars.dll", - "ref/netstandard1.3/System.Globalization.Calendars.dll", - "ref/netstandard1.3/System.Globalization.Calendars.xml", - "ref/netstandard1.3/de/System.Globalization.Calendars.xml", - "ref/netstandard1.3/es/System.Globalization.Calendars.xml", - "ref/netstandard1.3/fr/System.Globalization.Calendars.xml", - "ref/netstandard1.3/it/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ja/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ko/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ru/System.Globalization.Calendars.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.Calendars.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.Calendars.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Globalization.Extensions/4.0.1": { - "sha512": "KKo23iKeOaIg61SSXwjANN7QYDr/3op3OWGGzDzz7mypx0Za0fZSeG0l6cco8Ntp8YMYkIQcAqlk8yhm5/Uhcg==", - "type": "package", - "path": "System.Globalization.Extensions/4.0.1", - "files": [ - "System.Globalization.Extensions.4.0.1.nupkg.sha512", - "System.Globalization.Extensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Globalization.Extensions.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Globalization.Extensions.dll", - "ref/netstandard1.3/System.Globalization.Extensions.dll", - "ref/netstandard1.3/System.Globalization.Extensions.xml", - "ref/netstandard1.3/de/System.Globalization.Extensions.xml", - "ref/netstandard1.3/es/System.Globalization.Extensions.xml", - "ref/netstandard1.3/fr/System.Globalization.Extensions.xml", - "ref/netstandard1.3/it/System.Globalization.Extensions.xml", - "ref/netstandard1.3/ja/System.Globalization.Extensions.xml", - "ref/netstandard1.3/ko/System.Globalization.Extensions.xml", - "ref/netstandard1.3/ru/System.Globalization.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.Extensions.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll", - "runtimes/win/lib/net46/System.Globalization.Extensions.dll", - "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll" - ] - }, - "System.Interactive.Async/3.0.0": { - "sha512": "UEM+WmG1Oq0bNbPx/E1jaIQ83QOrPfVDUyuYBtG6D6DpB77ytv9flPterMujumpHuoRjSc0ilSB8w41fQc05dw==", - "type": "package", - "path": "System.Interactive.Async/3.0.0", - "files": [ - "System.Interactive.Async.3.0.0.nupkg.sha512", - "System.Interactive.Async.nuspec", - "lib/net45/System.Interactive.Async.dll", - "lib/net45/System.Interactive.Async.xml", - "lib/netstandard1.0/System.Interactive.Async.dll", - "lib/netstandard1.0/System.Interactive.Async.xml" - ] - }, - "System.IO/4.1.0": { - "sha512": "3KlTJceQc3gnGIaHZ7UBZO26SHL1SHE4ddrmiwumFnId+CEHP+O8r386tZKaE6zlk5/mF8vifMBzHj9SaXN+mQ==", - "type": "package", - "path": "System.IO/4.1.0", - "files": [ - "System.IO.4.1.0.nupkg.sha512", - "System.IO.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.IO.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.IO.dll", - "ref/netcore50/System.IO.dll", - "ref/netcore50/System.IO.xml", - "ref/netcore50/de/System.IO.xml", - "ref/netcore50/es/System.IO.xml", - "ref/netcore50/fr/System.IO.xml", - "ref/netcore50/it/System.IO.xml", - "ref/netcore50/ja/System.IO.xml", - "ref/netcore50/ko/System.IO.xml", - "ref/netcore50/ru/System.IO.xml", - "ref/netcore50/zh-hans/System.IO.xml", - "ref/netcore50/zh-hant/System.IO.xml", - "ref/netstandard1.0/System.IO.dll", - "ref/netstandard1.0/System.IO.xml", - "ref/netstandard1.0/de/System.IO.xml", - "ref/netstandard1.0/es/System.IO.xml", - "ref/netstandard1.0/fr/System.IO.xml", - "ref/netstandard1.0/it/System.IO.xml", - "ref/netstandard1.0/ja/System.IO.xml", - "ref/netstandard1.0/ko/System.IO.xml", - "ref/netstandard1.0/ru/System.IO.xml", - "ref/netstandard1.0/zh-hans/System.IO.xml", - "ref/netstandard1.0/zh-hant/System.IO.xml", - "ref/netstandard1.3/System.IO.dll", - "ref/netstandard1.3/System.IO.xml", - "ref/netstandard1.3/de/System.IO.xml", - "ref/netstandard1.3/es/System.IO.xml", - "ref/netstandard1.3/fr/System.IO.xml", - "ref/netstandard1.3/it/System.IO.xml", - "ref/netstandard1.3/ja/System.IO.xml", - "ref/netstandard1.3/ko/System.IO.xml", - "ref/netstandard1.3/ru/System.IO.xml", - "ref/netstandard1.3/zh-hans/System.IO.xml", - "ref/netstandard1.3/zh-hant/System.IO.xml", - "ref/netstandard1.5/System.IO.dll", - "ref/netstandard1.5/System.IO.xml", - "ref/netstandard1.5/de/System.IO.xml", - "ref/netstandard1.5/es/System.IO.xml", - "ref/netstandard1.5/fr/System.IO.xml", - "ref/netstandard1.5/it/System.IO.xml", - "ref/netstandard1.5/ja/System.IO.xml", - "ref/netstandard1.5/ko/System.IO.xml", - "ref/netstandard1.5/ru/System.IO.xml", - "ref/netstandard1.5/zh-hans/System.IO.xml", - "ref/netstandard1.5/zh-hant/System.IO.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.IO.Compression/4.1.0": { - "sha512": "TjnBS6eztThSzeSib+WyVbLzEdLKUcEHN69VtS3u8aAsSc18FU6xCZlNWWsEd8SKcXAE+y1sOu7VbU8sUeM0sg==", - "type": "package", - "path": "System.IO.Compression/4.1.0", - "files": [ - "System.IO.Compression.4.1.0.nupkg.sha512", - "System.IO.Compression.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net46/System.IO.Compression.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net46/System.IO.Compression.dll", - "ref/netcore50/System.IO.Compression.dll", - "ref/netcore50/System.IO.Compression.xml", - "ref/netcore50/de/System.IO.Compression.xml", - "ref/netcore50/es/System.IO.Compression.xml", - "ref/netcore50/fr/System.IO.Compression.xml", - "ref/netcore50/it/System.IO.Compression.xml", - "ref/netcore50/ja/System.IO.Compression.xml", - "ref/netcore50/ko/System.IO.Compression.xml", - "ref/netcore50/ru/System.IO.Compression.xml", - "ref/netcore50/zh-hans/System.IO.Compression.xml", - "ref/netcore50/zh-hant/System.IO.Compression.xml", - "ref/netstandard1.1/System.IO.Compression.dll", - "ref/netstandard1.1/System.IO.Compression.xml", - "ref/netstandard1.1/de/System.IO.Compression.xml", - "ref/netstandard1.1/es/System.IO.Compression.xml", - "ref/netstandard1.1/fr/System.IO.Compression.xml", - "ref/netstandard1.1/it/System.IO.Compression.xml", - "ref/netstandard1.1/ja/System.IO.Compression.xml", - "ref/netstandard1.1/ko/System.IO.Compression.xml", - "ref/netstandard1.1/ru/System.IO.Compression.xml", - "ref/netstandard1.1/zh-hans/System.IO.Compression.xml", - "ref/netstandard1.1/zh-hant/System.IO.Compression.xml", - "ref/netstandard1.3/System.IO.Compression.dll", - "ref/netstandard1.3/System.IO.Compression.xml", - "ref/netstandard1.3/de/System.IO.Compression.xml", - "ref/netstandard1.3/es/System.IO.Compression.xml", - "ref/netstandard1.3/fr/System.IO.Compression.xml", - "ref/netstandard1.3/it/System.IO.Compression.xml", - "ref/netstandard1.3/ja/System.IO.Compression.xml", - "ref/netstandard1.3/ko/System.IO.Compression.xml", - "ref/netstandard1.3/ru/System.IO.Compression.xml", - "ref/netstandard1.3/zh-hans/System.IO.Compression.xml", - "ref/netstandard1.3/zh-hant/System.IO.Compression.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll", - "runtimes/win/lib/net46/System.IO.Compression.dll", - "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll" - ] - }, - "System.IO.Compression.ZipFile/4.0.1": { - "sha512": "hBQYJzfTbQURF10nLhd+az2NHxsU6MU7AB8RUf4IolBP5lOAm4Luho851xl+CqslmhI5ZH/el8BlngEk4lBkaQ==", - "type": "package", - "path": "System.IO.Compression.ZipFile/4.0.1", - "files": [ - "System.IO.Compression.ZipFile.4.0.1.nupkg.sha512", - "System.IO.Compression.ZipFile.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.Compression.ZipFile.dll", - "lib/netstandard1.3/System.IO.Compression.ZipFile.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.Compression.ZipFile.dll", - "ref/netstandard1.3/System.IO.Compression.ZipFile.dll", - "ref/netstandard1.3/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/de/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/es/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/fr/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/it/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ja/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ko/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ru/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/zh-hans/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/zh-hant/System.IO.Compression.ZipFile.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.IO.FileSystem/4.0.1": { - "sha512": "IBErlVq5jOggAD69bg1t0pJcHaDbJbWNUZTPI96fkYWzwYbN6D9wRHMULLDd9dHsl7C2YsxXL31LMfPI1SWt8w==", - "type": "package", - "path": "System.IO.FileSystem/4.0.1", - "files": [ - "System.IO.FileSystem.4.0.1.nupkg.sha512", - "System.IO.FileSystem.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.dll", - "ref/netstandard1.3/System.IO.FileSystem.dll", - "ref/netstandard1.3/System.IO.FileSystem.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.IO.FileSystem.Primitives/4.0.1": { - "sha512": "kWkKD203JJKxJeE74p8aF8y4Qc9r9WQx4C0cHzHPrY3fv/L/IhWnyCHaFJ3H1QPOH6A93whlQ2vG5nHlBDvzWQ==", - "type": "package", - "path": "System.IO.FileSystem.Primitives/4.0.1", - "files": [ - "System.IO.FileSystem.Primitives.4.0.1.nupkg.sha512", - "System.IO.FileSystem.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.Primitives.dll", - "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.Primitives.dll", - "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll", - "ref/netstandard1.3/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Primitives.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Primitives.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.IO.FileSystem.Watcher/4.0.0": { - "sha512": "qM4Wr3La+RYb/03B0mZZjbA7tHsGzDffnuXP8Sl48HW2JwCjn3kfD5qdw0sqyNNowUipcJMi9/q6sMUrOIJ6UQ==", - "type": "package", - "path": "System.IO.FileSystem.Watcher/4.0.0", - "files": [ - "System.IO.FileSystem.Watcher.4.0.0.nupkg.sha512", - "System.IO.FileSystem.Watcher.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.FileSystem.Watcher.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.FileSystem.Watcher.dll", - "ref/netstandard1.3/System.IO.FileSystem.Watcher.dll", - "ref/netstandard1.3/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/de/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/es/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/fr/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/it/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/ja/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/ko/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/ru/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Watcher.xml", - "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Watcher.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/linux/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll", - "runtimes/osx/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll", - "runtimes/win/lib/net46/System.IO.FileSystem.Watcher.dll", - "runtimes/win/lib/netstandard1.3/System.IO.FileSystem.Watcher.dll", - "runtimes/win7/lib/netcore50/_._" - ] - }, - "System.IO.MemoryMappedFiles/4.0.0": { - "sha512": "Xqj4xaFAnLVpss9ZSUIvB/VdJAA7GxZDnFGDKJfiGAnZ5VnFROn6eOHWepFpujCYTsh6wlZ3B33bqYkF0QJ7Eg==", - "type": "package", - "path": "System.IO.MemoryMappedFiles/4.0.0", - "files": [ - "System.IO.MemoryMappedFiles.4.0.0.nupkg.sha512", - "System.IO.MemoryMappedFiles.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.MemoryMappedFiles.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.MemoryMappedFiles.dll", - "ref/netstandard1.3/System.IO.MemoryMappedFiles.dll", - "ref/netstandard1.3/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/de/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/es/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/fr/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/it/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/ja/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/ko/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/ru/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/zh-hans/System.IO.MemoryMappedFiles.xml", - "ref/netstandard1.3/zh-hant/System.IO.MemoryMappedFiles.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.IO.MemoryMappedFiles.dll", - "runtimes/win/lib/net46/System.IO.MemoryMappedFiles.dll", - "runtimes/win/lib/netcore50/System.IO.MemoryMappedFiles.dll", - "runtimes/win/lib/netstandard1.3/System.IO.MemoryMappedFiles.dll" - ] - }, - "System.IO.UnmanagedMemoryStream/4.0.1": { - "sha512": "wcq0kXcpfJwdl1Y4/ZjDk7Dhx5HdLyRYYWYmD8Nn8skoGYYQd2BQWbXwjWSczip8AL4Z57o2dWWXAl4aABAKiQ==", - "type": "package", - "path": "System.IO.UnmanagedMemoryStream/4.0.1", - "files": [ - "System.IO.UnmanagedMemoryStream.4.0.1.nupkg.sha512", - "System.IO.UnmanagedMemoryStream.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.UnmanagedMemoryStream.dll", - "lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.UnmanagedMemoryStream.dll", - "ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll", - "ref/netstandard1.3/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/de/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/es/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/fr/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/it/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/ja/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/ko/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/ru/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/zh-hans/System.IO.UnmanagedMemoryStream.xml", - "ref/netstandard1.3/zh-hant/System.IO.UnmanagedMemoryStream.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Linq/4.1.0": { - "sha512": "bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==", - "type": "package", - "path": "System.Linq/4.1.0", - "files": [ - "System.Linq.4.1.0.nupkg.sha512", - "System.Linq.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Linq.dll", - "lib/netcore50/System.Linq.dll", - "lib/netstandard1.6/System.Linq.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Linq.dll", - "ref/netcore50/System.Linq.dll", - "ref/netcore50/System.Linq.xml", - "ref/netcore50/de/System.Linq.xml", - "ref/netcore50/es/System.Linq.xml", - "ref/netcore50/fr/System.Linq.xml", - "ref/netcore50/it/System.Linq.xml", - "ref/netcore50/ja/System.Linq.xml", - "ref/netcore50/ko/System.Linq.xml", - "ref/netcore50/ru/System.Linq.xml", - "ref/netcore50/zh-hans/System.Linq.xml", - "ref/netcore50/zh-hant/System.Linq.xml", - "ref/netstandard1.0/System.Linq.dll", - "ref/netstandard1.0/System.Linq.xml", - "ref/netstandard1.0/de/System.Linq.xml", - "ref/netstandard1.0/es/System.Linq.xml", - "ref/netstandard1.0/fr/System.Linq.xml", - "ref/netstandard1.0/it/System.Linq.xml", - "ref/netstandard1.0/ja/System.Linq.xml", - "ref/netstandard1.0/ko/System.Linq.xml", - "ref/netstandard1.0/ru/System.Linq.xml", - "ref/netstandard1.0/zh-hans/System.Linq.xml", - "ref/netstandard1.0/zh-hant/System.Linq.xml", - "ref/netstandard1.6/System.Linq.dll", - "ref/netstandard1.6/System.Linq.xml", - "ref/netstandard1.6/de/System.Linq.xml", - "ref/netstandard1.6/es/System.Linq.xml", - "ref/netstandard1.6/fr/System.Linq.xml", - "ref/netstandard1.6/it/System.Linq.xml", - "ref/netstandard1.6/ja/System.Linq.xml", - "ref/netstandard1.6/ko/System.Linq.xml", - "ref/netstandard1.6/ru/System.Linq.xml", - "ref/netstandard1.6/zh-hans/System.Linq.xml", - "ref/netstandard1.6/zh-hant/System.Linq.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Linq.Expressions/4.1.0": { - "sha512": "I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==", - "type": "package", - "path": "System.Linq.Expressions/4.1.0", - "files": [ - "System.Linq.Expressions.4.1.0.nupkg.sha512", - "System.Linq.Expressions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Linq.Expressions.dll", - "lib/netcore50/System.Linq.Expressions.dll", - "lib/netstandard1.6/System.Linq.Expressions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Linq.Expressions.dll", - "ref/netcore50/System.Linq.Expressions.dll", - "ref/netcore50/System.Linq.Expressions.xml", - "ref/netcore50/de/System.Linq.Expressions.xml", - "ref/netcore50/es/System.Linq.Expressions.xml", - "ref/netcore50/fr/System.Linq.Expressions.xml", - "ref/netcore50/it/System.Linq.Expressions.xml", - "ref/netcore50/ja/System.Linq.Expressions.xml", - "ref/netcore50/ko/System.Linq.Expressions.xml", - "ref/netcore50/ru/System.Linq.Expressions.xml", - "ref/netcore50/zh-hans/System.Linq.Expressions.xml", - "ref/netcore50/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.0/System.Linq.Expressions.dll", - "ref/netstandard1.0/System.Linq.Expressions.xml", - "ref/netstandard1.0/de/System.Linq.Expressions.xml", - "ref/netstandard1.0/es/System.Linq.Expressions.xml", - "ref/netstandard1.0/fr/System.Linq.Expressions.xml", - "ref/netstandard1.0/it/System.Linq.Expressions.xml", - "ref/netstandard1.0/ja/System.Linq.Expressions.xml", - "ref/netstandard1.0/ko/System.Linq.Expressions.xml", - "ref/netstandard1.0/ru/System.Linq.Expressions.xml", - "ref/netstandard1.0/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.0/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.3/System.Linq.Expressions.dll", - "ref/netstandard1.3/System.Linq.Expressions.xml", - "ref/netstandard1.3/de/System.Linq.Expressions.xml", - "ref/netstandard1.3/es/System.Linq.Expressions.xml", - "ref/netstandard1.3/fr/System.Linq.Expressions.xml", - "ref/netstandard1.3/it/System.Linq.Expressions.xml", - "ref/netstandard1.3/ja/System.Linq.Expressions.xml", - "ref/netstandard1.3/ko/System.Linq.Expressions.xml", - "ref/netstandard1.3/ru/System.Linq.Expressions.xml", - "ref/netstandard1.3/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.3/zh-hant/System.Linq.Expressions.xml", - "ref/netstandard1.6/System.Linq.Expressions.dll", - "ref/netstandard1.6/System.Linq.Expressions.xml", - "ref/netstandard1.6/de/System.Linq.Expressions.xml", - "ref/netstandard1.6/es/System.Linq.Expressions.xml", - "ref/netstandard1.6/fr/System.Linq.Expressions.xml", - "ref/netstandard1.6/it/System.Linq.Expressions.xml", - "ref/netstandard1.6/ja/System.Linq.Expressions.xml", - "ref/netstandard1.6/ko/System.Linq.Expressions.xml", - "ref/netstandard1.6/ru/System.Linq.Expressions.xml", - "ref/netstandard1.6/zh-hans/System.Linq.Expressions.xml", - "ref/netstandard1.6/zh-hant/System.Linq.Expressions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Linq.Expressions.dll" - ] - }, - "System.Linq.Parallel/4.0.1": { - "sha512": "J7XCa7n2cFn32uLbtceXfBFhgCk5M++50lylHKNbqTiJkw5y4Tglpi6amuJNPCvj9bLzNSI7rs1fi4joLMNRgg==", - "type": "package", - "path": "System.Linq.Parallel/4.0.1", - "files": [ - "System.Linq.Parallel.4.0.1.nupkg.sha512", - "System.Linq.Parallel.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Linq.Parallel.dll", - "lib/netstandard1.3/System.Linq.Parallel.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Linq.Parallel.dll", - "ref/netcore50/System.Linq.Parallel.xml", - "ref/netcore50/de/System.Linq.Parallel.xml", - "ref/netcore50/es/System.Linq.Parallel.xml", - "ref/netcore50/fr/System.Linq.Parallel.xml", - "ref/netcore50/it/System.Linq.Parallel.xml", - "ref/netcore50/ja/System.Linq.Parallel.xml", - "ref/netcore50/ko/System.Linq.Parallel.xml", - "ref/netcore50/ru/System.Linq.Parallel.xml", - "ref/netcore50/zh-hans/System.Linq.Parallel.xml", - "ref/netcore50/zh-hant/System.Linq.Parallel.xml", - "ref/netstandard1.1/System.Linq.Parallel.dll", - "ref/netstandard1.1/System.Linq.Parallel.xml", - "ref/netstandard1.1/de/System.Linq.Parallel.xml", - "ref/netstandard1.1/es/System.Linq.Parallel.xml", - "ref/netstandard1.1/fr/System.Linq.Parallel.xml", - "ref/netstandard1.1/it/System.Linq.Parallel.xml", - "ref/netstandard1.1/ja/System.Linq.Parallel.xml", - "ref/netstandard1.1/ko/System.Linq.Parallel.xml", - "ref/netstandard1.1/ru/System.Linq.Parallel.xml", - "ref/netstandard1.1/zh-hans/System.Linq.Parallel.xml", - "ref/netstandard1.1/zh-hant/System.Linq.Parallel.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Linq.Queryable/4.0.1": { - "sha512": "Yn/WfYe9RoRfmSLvUt2JerP0BTGGykCZkQPgojaxgzF2N0oPo+/AhB8TXOpdCcNlrG3VRtsamtK2uzsp3cqRVw==", - "type": "package", - "path": "System.Linq.Queryable/4.0.1", - "files": [ - "System.Linq.Queryable.4.0.1.nupkg.sha512", - "System.Linq.Queryable.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/monoandroid10/_._", - "lib/monotouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Linq.Queryable.dll", - "lib/netstandard1.3/System.Linq.Queryable.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/monoandroid10/_._", - "ref/monotouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Linq.Queryable.dll", - "ref/netcore50/System.Linq.Queryable.xml", - "ref/netcore50/de/System.Linq.Queryable.xml", - "ref/netcore50/es/System.Linq.Queryable.xml", - "ref/netcore50/fr/System.Linq.Queryable.xml", - "ref/netcore50/it/System.Linq.Queryable.xml", - "ref/netcore50/ja/System.Linq.Queryable.xml", - "ref/netcore50/ko/System.Linq.Queryable.xml", - "ref/netcore50/ru/System.Linq.Queryable.xml", - "ref/netcore50/zh-hans/System.Linq.Queryable.xml", - "ref/netcore50/zh-hant/System.Linq.Queryable.xml", - "ref/netstandard1.0/System.Linq.Queryable.dll", - "ref/netstandard1.0/System.Linq.Queryable.xml", - "ref/netstandard1.0/de/System.Linq.Queryable.xml", - "ref/netstandard1.0/es/System.Linq.Queryable.xml", - "ref/netstandard1.0/fr/System.Linq.Queryable.xml", - "ref/netstandard1.0/it/System.Linq.Queryable.xml", - "ref/netstandard1.0/ja/System.Linq.Queryable.xml", - "ref/netstandard1.0/ko/System.Linq.Queryable.xml", - "ref/netstandard1.0/ru/System.Linq.Queryable.xml", - "ref/netstandard1.0/zh-hans/System.Linq.Queryable.xml", - "ref/netstandard1.0/zh-hant/System.Linq.Queryable.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Net.Http/4.1.0": { - "sha512": "ULq9g3SOPVuupt+Y3U+A37coXzdNisB1neFCSKzBwo182u0RDddKJF8I5+HfyXqK6OhJPgeoAwWXrbiUXuRDsg==", - "type": "package", - "path": "System.Net.Http/4.1.0", - "files": [ - "System.Net.Http.4.1.0.nupkg.sha512", - "System.Net.Http.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/Xamarinmac20/_._", - "lib/monoandroid10/_._", - "lib/monotouch10/_._", - "lib/net45/_._", - "lib/net46/System.Net.Http.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/Xamarinmac20/_._", - "ref/monoandroid10/_._", - "ref/monotouch10/_._", - "ref/net45/_._", - "ref/net46/System.Net.Http.dll", - "ref/net46/System.Net.Http.xml", - "ref/net46/de/System.Net.Http.xml", - "ref/net46/es/System.Net.Http.xml", - "ref/net46/fr/System.Net.Http.xml", - "ref/net46/it/System.Net.Http.xml", - "ref/net46/ja/System.Net.Http.xml", - "ref/net46/ko/System.Net.Http.xml", - "ref/net46/ru/System.Net.Http.xml", - "ref/net46/zh-hans/System.Net.Http.xml", - "ref/net46/zh-hant/System.Net.Http.xml", - "ref/netcore50/System.Net.Http.dll", - "ref/netcore50/System.Net.Http.xml", - "ref/netcore50/de/System.Net.Http.xml", - "ref/netcore50/es/System.Net.Http.xml", - "ref/netcore50/fr/System.Net.Http.xml", - "ref/netcore50/it/System.Net.Http.xml", - "ref/netcore50/ja/System.Net.Http.xml", - "ref/netcore50/ko/System.Net.Http.xml", - "ref/netcore50/ru/System.Net.Http.xml", - "ref/netcore50/zh-hans/System.Net.Http.xml", - "ref/netcore50/zh-hant/System.Net.Http.xml", - "ref/netstandard1.1/System.Net.Http.dll", - "ref/netstandard1.1/System.Net.Http.xml", - "ref/netstandard1.1/de/System.Net.Http.xml", - "ref/netstandard1.1/es/System.Net.Http.xml", - "ref/netstandard1.1/fr/System.Net.Http.xml", - "ref/netstandard1.1/it/System.Net.Http.xml", - "ref/netstandard1.1/ja/System.Net.Http.xml", - "ref/netstandard1.1/ko/System.Net.Http.xml", - "ref/netstandard1.1/ru/System.Net.Http.xml", - "ref/netstandard1.1/zh-hans/System.Net.Http.xml", - "ref/netstandard1.1/zh-hant/System.Net.Http.xml", - "ref/netstandard1.3/System.Net.Http.dll", - "ref/netstandard1.3/System.Net.Http.xml", - "ref/netstandard1.3/de/System.Net.Http.xml", - "ref/netstandard1.3/es/System.Net.Http.xml", - "ref/netstandard1.3/fr/System.Net.Http.xml", - "ref/netstandard1.3/it/System.Net.Http.xml", - "ref/netstandard1.3/ja/System.Net.Http.xml", - "ref/netstandard1.3/ko/System.Net.Http.xml", - "ref/netstandard1.3/ru/System.Net.Http.xml", - "ref/netstandard1.3/zh-hans/System.Net.Http.xml", - "ref/netstandard1.3/zh-hant/System.Net.Http.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll", - "runtimes/win/lib/net46/System.Net.Http.dll", - "runtimes/win/lib/netcore50/System.Net.Http.dll", - "runtimes/win/lib/netstandard1.3/System.Net.Http.dll" - ] - }, - "System.Net.NameResolution/4.0.0": { - "sha512": "JdqRdM1Qym3YehqdKIi5LHrpypP4JMfxKQSNCJ2z4WawkG0il+N3XfNeJOxll2XrTnG7WgYYPoeiu/KOwg0DQw==", - "type": "package", - "path": "System.Net.NameResolution/4.0.0", - "files": [ - "System.Net.NameResolution.4.0.0.nupkg.sha512", - "System.Net.NameResolution.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Net.NameResolution.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Net.NameResolution.dll", - "ref/netstandard1.3/System.Net.NameResolution.dll", - "ref/netstandard1.3/System.Net.NameResolution.xml", - "ref/netstandard1.3/de/System.Net.NameResolution.xml", - "ref/netstandard1.3/es/System.Net.NameResolution.xml", - "ref/netstandard1.3/fr/System.Net.NameResolution.xml", - "ref/netstandard1.3/it/System.Net.NameResolution.xml", - "ref/netstandard1.3/ja/System.Net.NameResolution.xml", - "ref/netstandard1.3/ko/System.Net.NameResolution.xml", - "ref/netstandard1.3/ru/System.Net.NameResolution.xml", - "ref/netstandard1.3/zh-hans/System.Net.NameResolution.xml", - "ref/netstandard1.3/zh-hant/System.Net.NameResolution.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Net.NameResolution.dll", - "runtimes/win/lib/net46/System.Net.NameResolution.dll", - "runtimes/win/lib/netcore50/System.Net.NameResolution.dll", - "runtimes/win/lib/netstandard1.3/System.Net.NameResolution.dll" - ] - }, - "System.Net.Primitives/4.0.11": { - "sha512": "hVvfl4405DRjA2408luZekbPhplJK03j2Y2lSfMlny7GHXlkByw1iLnc9mgKW0GdQn73vvMcWrWewAhylXA4Nw==", - "type": "package", - "path": "System.Net.Primitives/4.0.11", - "files": [ - "System.Net.Primitives.4.0.11.nupkg.sha512", - "System.Net.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Net.Primitives.dll", - "ref/netcore50/System.Net.Primitives.xml", - "ref/netcore50/de/System.Net.Primitives.xml", - "ref/netcore50/es/System.Net.Primitives.xml", - "ref/netcore50/fr/System.Net.Primitives.xml", - "ref/netcore50/it/System.Net.Primitives.xml", - "ref/netcore50/ja/System.Net.Primitives.xml", - "ref/netcore50/ko/System.Net.Primitives.xml", - "ref/netcore50/ru/System.Net.Primitives.xml", - "ref/netcore50/zh-hans/System.Net.Primitives.xml", - "ref/netcore50/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.0/System.Net.Primitives.dll", - "ref/netstandard1.0/System.Net.Primitives.xml", - "ref/netstandard1.0/de/System.Net.Primitives.xml", - "ref/netstandard1.0/es/System.Net.Primitives.xml", - "ref/netstandard1.0/fr/System.Net.Primitives.xml", - "ref/netstandard1.0/it/System.Net.Primitives.xml", - "ref/netstandard1.0/ja/System.Net.Primitives.xml", - "ref/netstandard1.0/ko/System.Net.Primitives.xml", - "ref/netstandard1.0/ru/System.Net.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.1/System.Net.Primitives.dll", - "ref/netstandard1.1/System.Net.Primitives.xml", - "ref/netstandard1.1/de/System.Net.Primitives.xml", - "ref/netstandard1.1/es/System.Net.Primitives.xml", - "ref/netstandard1.1/fr/System.Net.Primitives.xml", - "ref/netstandard1.1/it/System.Net.Primitives.xml", - "ref/netstandard1.1/ja/System.Net.Primitives.xml", - "ref/netstandard1.1/ko/System.Net.Primitives.xml", - "ref/netstandard1.1/ru/System.Net.Primitives.xml", - "ref/netstandard1.1/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.1/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.3/System.Net.Primitives.dll", - "ref/netstandard1.3/System.Net.Primitives.xml", - "ref/netstandard1.3/de/System.Net.Primitives.xml", - "ref/netstandard1.3/es/System.Net.Primitives.xml", - "ref/netstandard1.3/fr/System.Net.Primitives.xml", - "ref/netstandard1.3/it/System.Net.Primitives.xml", - "ref/netstandard1.3/ja/System.Net.Primitives.xml", - "ref/netstandard1.3/ko/System.Net.Primitives.xml", - "ref/netstandard1.3/ru/System.Net.Primitives.xml", - "ref/netstandard1.3/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.3/zh-hant/System.Net.Primitives.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Net.Requests/4.0.11": { - "sha512": "vxGt7C0cZixN+VqoSW4Yakc1Y9WknmxauDqzxgpw/FnBdz4kQNN51l4wxdXX5VY1xjqy//+G+4CvJWp1+f+y6Q==", - "type": "package", - "path": "System.Net.Requests/4.0.11", - "files": [ - "System.Net.Requests.4.0.11.nupkg.sha512", - "System.Net.Requests.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net46/_._", - "ref/netcore50/System.Net.Requests.dll", - "ref/netcore50/System.Net.Requests.xml", - "ref/netcore50/de/System.Net.Requests.xml", - "ref/netcore50/es/System.Net.Requests.xml", - "ref/netcore50/fr/System.Net.Requests.xml", - "ref/netcore50/it/System.Net.Requests.xml", - "ref/netcore50/ja/System.Net.Requests.xml", - "ref/netcore50/ko/System.Net.Requests.xml", - "ref/netcore50/ru/System.Net.Requests.xml", - "ref/netcore50/zh-hans/System.Net.Requests.xml", - "ref/netcore50/zh-hant/System.Net.Requests.xml", - "ref/netstandard1.0/System.Net.Requests.dll", - "ref/netstandard1.0/System.Net.Requests.xml", - "ref/netstandard1.0/de/System.Net.Requests.xml", - "ref/netstandard1.0/es/System.Net.Requests.xml", - "ref/netstandard1.0/fr/System.Net.Requests.xml", - "ref/netstandard1.0/it/System.Net.Requests.xml", - "ref/netstandard1.0/ja/System.Net.Requests.xml", - "ref/netstandard1.0/ko/System.Net.Requests.xml", - "ref/netstandard1.0/ru/System.Net.Requests.xml", - "ref/netstandard1.0/zh-hans/System.Net.Requests.xml", - "ref/netstandard1.0/zh-hant/System.Net.Requests.xml", - "ref/netstandard1.1/System.Net.Requests.dll", - "ref/netstandard1.1/System.Net.Requests.xml", - "ref/netstandard1.1/de/System.Net.Requests.xml", - "ref/netstandard1.1/es/System.Net.Requests.xml", - "ref/netstandard1.1/fr/System.Net.Requests.xml", - "ref/netstandard1.1/it/System.Net.Requests.xml", - "ref/netstandard1.1/ja/System.Net.Requests.xml", - "ref/netstandard1.1/ko/System.Net.Requests.xml", - "ref/netstandard1.1/ru/System.Net.Requests.xml", - "ref/netstandard1.1/zh-hans/System.Net.Requests.xml", - "ref/netstandard1.1/zh-hant/System.Net.Requests.xml", - "ref/netstandard1.3/System.Net.Requests.dll", - "ref/netstandard1.3/System.Net.Requests.xml", - "ref/netstandard1.3/de/System.Net.Requests.xml", - "ref/netstandard1.3/es/System.Net.Requests.xml", - "ref/netstandard1.3/fr/System.Net.Requests.xml", - "ref/netstandard1.3/it/System.Net.Requests.xml", - "ref/netstandard1.3/ja/System.Net.Requests.xml", - "ref/netstandard1.3/ko/System.Net.Requests.xml", - "ref/netstandard1.3/ru/System.Net.Requests.xml", - "ref/netstandard1.3/zh-hans/System.Net.Requests.xml", - "ref/netstandard1.3/zh-hant/System.Net.Requests.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Net.Requests.dll", - "runtimes/win/lib/net46/_._", - "runtimes/win/lib/netstandard1.3/System.Net.Requests.dll" - ] - }, - "System.Net.Security/4.0.0": { - "sha512": "uM1JaYJciCc2w7efD6du0EpQ1n5ZQqE6/P43/aI4H5E59qvP+wt3l70KIUF/Ha7NaeXGoGNFPVO0MB80pVHk2g==", - "type": "package", - "path": "System.Net.Security/4.0.0", - "files": [ - "System.Net.Security.4.0.0.nupkg.sha512", - "System.Net.Security.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Net.Security.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Net.Security.dll", - "ref/netstandard1.3/System.Net.Security.dll", - "ref/netstandard1.3/System.Net.Security.xml", - "ref/netstandard1.3/de/System.Net.Security.xml", - "ref/netstandard1.3/es/System.Net.Security.xml", - "ref/netstandard1.3/fr/System.Net.Security.xml", - "ref/netstandard1.3/it/System.Net.Security.xml", - "ref/netstandard1.3/ja/System.Net.Security.xml", - "ref/netstandard1.3/ko/System.Net.Security.xml", - "ref/netstandard1.3/ru/System.Net.Security.xml", - "ref/netstandard1.3/zh-hans/System.Net.Security.xml", - "ref/netstandard1.3/zh-hant/System.Net.Security.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Net.Security.dll", - "runtimes/win/lib/net46/System.Net.Security.dll", - "runtimes/win/lib/netstandard1.3/System.Net.Security.dll", - "runtimes/win7/lib/netcore50/_._" - ] - }, - "System.Net.Sockets/4.1.0": { - "sha512": "xAz0N3dAV/aR/9g8r0Y5oEqU1JRsz29F5EGb/WVHmX3jVSLqi2/92M5hTad2aNWovruXrJpJtgZ9fccPMG9uSw==", - "type": "package", - "path": "System.Net.Sockets/4.1.0", - "files": [ - "System.Net.Sockets.4.1.0.nupkg.sha512", - "System.Net.Sockets.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Net.Sockets.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Net.Sockets.dll", - "ref/netstandard1.3/System.Net.Sockets.dll", - "ref/netstandard1.3/System.Net.Sockets.xml", - "ref/netstandard1.3/de/System.Net.Sockets.xml", - "ref/netstandard1.3/es/System.Net.Sockets.xml", - "ref/netstandard1.3/fr/System.Net.Sockets.xml", - "ref/netstandard1.3/it/System.Net.Sockets.xml", - "ref/netstandard1.3/ja/System.Net.Sockets.xml", - "ref/netstandard1.3/ko/System.Net.Sockets.xml", - "ref/netstandard1.3/ru/System.Net.Sockets.xml", - "ref/netstandard1.3/zh-hans/System.Net.Sockets.xml", - "ref/netstandard1.3/zh-hant/System.Net.Sockets.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Net.WebHeaderCollection/4.0.1": { - "sha512": "XX2TIAN+wBSAIV51BU2FvvXMdstUa8b0FBSZmDWjZdwUMmggQSifpTOZ5fNH20z9ZCg2fkV1L5SsZnpO2RQDRQ==", - "type": "package", - "path": "System.Net.WebHeaderCollection/4.0.1", - "files": [ - "System.Net.WebHeaderCollection.4.0.1.nupkg.sha512", - "System.Net.WebHeaderCollection.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/_._", - "lib/netstandard1.3/System.Net.WebHeaderCollection.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/_._", - "ref/netstandard1.3/System.Net.WebHeaderCollection.dll", - "ref/netstandard1.3/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/de/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/es/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/fr/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/it/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/ja/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/ko/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/ru/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/zh-hans/System.Net.WebHeaderCollection.xml", - "ref/netstandard1.3/zh-hant/System.Net.WebHeaderCollection.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Net.WebSockets/4.0.0": { - "sha512": "2KJo8hir6Edi9jnMDAMhiJoI691xRBmKcbNpwjrvpIMOCTYOtBpSsSEGBxBDV7PKbasJNaFp1+PZz1D7xS41Hg==", - "type": "package", - "path": "System.Net.WebSockets/4.0.0", - "files": [ - "System.Net.WebSockets.4.0.0.nupkg.sha512", - "System.Net.WebSockets.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Net.WebSockets.dll", - "lib/netstandard1.3/System.Net.WebSockets.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Net.WebSockets.dll", - "ref/netstandard1.3/System.Net.WebSockets.dll", - "ref/netstandard1.3/System.Net.WebSockets.xml", - "ref/netstandard1.3/de/System.Net.WebSockets.xml", - "ref/netstandard1.3/es/System.Net.WebSockets.xml", - "ref/netstandard1.3/fr/System.Net.WebSockets.xml", - "ref/netstandard1.3/it/System.Net.WebSockets.xml", - "ref/netstandard1.3/ja/System.Net.WebSockets.xml", - "ref/netstandard1.3/ko/System.Net.WebSockets.xml", - "ref/netstandard1.3/ru/System.Net.WebSockets.xml", - "ref/netstandard1.3/zh-hans/System.Net.WebSockets.xml", - "ref/netstandard1.3/zh-hant/System.Net.WebSockets.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Net.WebSockets.Client/4.0.0": { - "sha512": "GY5h9cn0ZVsG4ORQqMytTldrqxet2RC2CSEsgWGf4XNW5jhL5SxzcUZph03xbZsgn7K3qMr+Rq+gkbJNI+FEXg==", - "type": "package", - "path": "System.Net.WebSockets.Client/4.0.0", - "files": [ - "System.Net.WebSockets.Client.4.0.0.nupkg.sha512", - "System.Net.WebSockets.Client.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Net.WebSockets.Client.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Net.WebSockets.Client.dll", - "ref/netstandard1.3/System.Net.WebSockets.Client.dll", - "ref/netstandard1.3/System.Net.WebSockets.Client.xml", - "ref/netstandard1.3/de/System.Net.WebSockets.Client.xml", - "ref/netstandard1.3/es/System.Net.WebSockets.Client.xml", - "ref/netstandard1.3/fr/System.Net.WebSockets.Client.xml", - "ref/netstandard1.3/it/System.Net.WebSockets.Client.xml", - "ref/netstandard1.3/ja/System.Net.WebSockets.Client.xml", - "ref/netstandard1.3/ko/System.Net.WebSockets.Client.xml", - "ref/netstandard1.3/ru/System.Net.WebSockets.Client.xml", - "ref/netstandard1.3/zh-hans/System.Net.WebSockets.Client.xml", - "ref/netstandard1.3/zh-hant/System.Net.WebSockets.Client.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Net.WebSockets.Client.dll", - "runtimes/win/lib/net46/System.Net.WebSockets.Client.dll", - "runtimes/win/lib/netcore50/System.Net.WebSockets.Client.dll", - "runtimes/win/lib/netstandard1.3/System.Net.WebSockets.Client.dll" - ] - }, - "System.Numerics.Vectors/4.1.1": { - "sha512": "Ex1NSKycC2wi5XBMWUGWPc3lumh6OQWFFmmpZFZz0oLht5lQ+wWPHVZumOrMJuckfUiVMd4p67BrkBos8lcF+Q==", - "type": "package", - "path": "System.Numerics.Vectors/4.1.1", - "files": [ - "System.Numerics.Vectors.4.1.1.nupkg.sha512", - "System.Numerics.Vectors.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Numerics.Vectors.dll", - "lib/net46/System.Numerics.Vectors.xml", - "lib/netstandard1.0/System.Numerics.Vectors.dll", - "lib/netstandard1.0/System.Numerics.Vectors.xml", - "lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll", - "lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.xml", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Numerics.Vectors.dll", - "ref/net46/System.Numerics.Vectors.xml", - "ref/netstandard1.0/System.Numerics.Vectors.dll", - "ref/netstandard1.0/System.Numerics.Vectors.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.ObjectModel/4.0.12": { - "sha512": "tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==", - "type": "package", - "path": "System.ObjectModel/4.0.12", - "files": [ - "System.ObjectModel.4.0.12.nupkg.sha512", - "System.ObjectModel.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.ObjectModel.dll", - "lib/netstandard1.3/System.ObjectModel.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.ObjectModel.dll", - "ref/netcore50/System.ObjectModel.xml", - "ref/netcore50/de/System.ObjectModel.xml", - "ref/netcore50/es/System.ObjectModel.xml", - "ref/netcore50/fr/System.ObjectModel.xml", - "ref/netcore50/it/System.ObjectModel.xml", - "ref/netcore50/ja/System.ObjectModel.xml", - "ref/netcore50/ko/System.ObjectModel.xml", - "ref/netcore50/ru/System.ObjectModel.xml", - "ref/netcore50/zh-hans/System.ObjectModel.xml", - "ref/netcore50/zh-hant/System.ObjectModel.xml", - "ref/netstandard1.0/System.ObjectModel.dll", - "ref/netstandard1.0/System.ObjectModel.xml", - "ref/netstandard1.0/de/System.ObjectModel.xml", - "ref/netstandard1.0/es/System.ObjectModel.xml", - "ref/netstandard1.0/fr/System.ObjectModel.xml", - "ref/netstandard1.0/it/System.ObjectModel.xml", - "ref/netstandard1.0/ja/System.ObjectModel.xml", - "ref/netstandard1.0/ko/System.ObjectModel.xml", - "ref/netstandard1.0/ru/System.ObjectModel.xml", - "ref/netstandard1.0/zh-hans/System.ObjectModel.xml", - "ref/netstandard1.0/zh-hant/System.ObjectModel.xml", - "ref/netstandard1.3/System.ObjectModel.dll", - "ref/netstandard1.3/System.ObjectModel.xml", - "ref/netstandard1.3/de/System.ObjectModel.xml", - "ref/netstandard1.3/es/System.ObjectModel.xml", - "ref/netstandard1.3/fr/System.ObjectModel.xml", - "ref/netstandard1.3/it/System.ObjectModel.xml", - "ref/netstandard1.3/ja/System.ObjectModel.xml", - "ref/netstandard1.3/ko/System.ObjectModel.xml", - "ref/netstandard1.3/ru/System.ObjectModel.xml", - "ref/netstandard1.3/zh-hans/System.ObjectModel.xml", - "ref/netstandard1.3/zh-hant/System.ObjectModel.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Private.DataContractSerialization/4.1.1": { - "sha512": "lcqFBUaCZxPiUkA4dlSOoPZGtZsAuuElH2XHgLwGLxd7ZozWetV5yiz0qGAV2AUYOqw97MtZBjbLMN16Xz4vXA==", - "type": "package", - "path": "System.Private.DataContractSerialization/4.1.1", - "files": [ - "System.Private.DataContractSerialization.4.1.1.nupkg.sha512", - "System.Private.DataContractSerialization.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.3/System.Private.DataContractSerialization.dll", - "ref/netstandard/_._", - "runtimes/aot/lib/netcore50/System.Private.DataContractSerialization.dll" - ] - }, - "System.Reflection/4.1.0": { - "sha512": "JCKANJ0TI7kzoQzuwB/OoJANy1Lg338B6+JVacPl4TpUwi3cReg3nMLplMq2uqYfHFQpKIlHAUVAJlImZz/4ng==", - "type": "package", - "path": "System.Reflection/4.1.0", - "files": [ - "System.Reflection.4.1.0.nupkg.sha512", - "System.Reflection.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Reflection.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Reflection.dll", - "ref/netcore50/System.Reflection.dll", - "ref/netcore50/System.Reflection.xml", - "ref/netcore50/de/System.Reflection.xml", - "ref/netcore50/es/System.Reflection.xml", - "ref/netcore50/fr/System.Reflection.xml", - "ref/netcore50/it/System.Reflection.xml", - "ref/netcore50/ja/System.Reflection.xml", - "ref/netcore50/ko/System.Reflection.xml", - "ref/netcore50/ru/System.Reflection.xml", - "ref/netcore50/zh-hans/System.Reflection.xml", - "ref/netcore50/zh-hant/System.Reflection.xml", - "ref/netstandard1.0/System.Reflection.dll", - "ref/netstandard1.0/System.Reflection.xml", - "ref/netstandard1.0/de/System.Reflection.xml", - "ref/netstandard1.0/es/System.Reflection.xml", - "ref/netstandard1.0/fr/System.Reflection.xml", - "ref/netstandard1.0/it/System.Reflection.xml", - "ref/netstandard1.0/ja/System.Reflection.xml", - "ref/netstandard1.0/ko/System.Reflection.xml", - "ref/netstandard1.0/ru/System.Reflection.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.xml", - "ref/netstandard1.3/System.Reflection.dll", - "ref/netstandard1.3/System.Reflection.xml", - "ref/netstandard1.3/de/System.Reflection.xml", - "ref/netstandard1.3/es/System.Reflection.xml", - "ref/netstandard1.3/fr/System.Reflection.xml", - "ref/netstandard1.3/it/System.Reflection.xml", - "ref/netstandard1.3/ja/System.Reflection.xml", - "ref/netstandard1.3/ko/System.Reflection.xml", - "ref/netstandard1.3/ru/System.Reflection.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.xml", - "ref/netstandard1.5/System.Reflection.dll", - "ref/netstandard1.5/System.Reflection.xml", - "ref/netstandard1.5/de/System.Reflection.xml", - "ref/netstandard1.5/es/System.Reflection.xml", - "ref/netstandard1.5/fr/System.Reflection.xml", - "ref/netstandard1.5/it/System.Reflection.xml", - "ref/netstandard1.5/ja/System.Reflection.xml", - "ref/netstandard1.5/ko/System.Reflection.xml", - "ref/netstandard1.5/ru/System.Reflection.xml", - "ref/netstandard1.5/zh-hans/System.Reflection.xml", - "ref/netstandard1.5/zh-hant/System.Reflection.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Reflection.DispatchProxy/4.0.1": { - "sha512": "GPPgWoSxQEU3aCKSOvsAc1dhTTi4iq92PUVEVfnGPGwqCf6synaAJGYLKMs5E3CuRfel8ufACWUijXqDpOlGrA==", - "type": "package", - "path": "System.Reflection.DispatchProxy/4.0.1", - "files": [ - "System.Reflection.DispatchProxy.4.0.1.nupkg.sha512", - "System.Reflection.DispatchProxy.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/netstandard1.3/System.Reflection.DispatchProxy.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/netstandard1.3/System.Reflection.DispatchProxy.dll", - "ref/netstandard1.3/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/de/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/es/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/fr/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/it/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/ja/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/ko/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/ru/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.DispatchProxy.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.DispatchProxy.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Reflection.DispatchProxy.dll" - ] - }, - "System.Reflection.Emit/4.0.1": { - "sha512": "P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==", - "type": "package", - "path": "System.Reflection.Emit/4.0.1", - "files": [ - "System.Reflection.Emit.4.0.1.nupkg.sha512", - "System.Reflection.Emit.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.dll", - "lib/netstandard1.3/System.Reflection.Emit.dll", - "lib/xamarinmac20/_._", - "ref/MonoAndroid10/_._", - "ref/net45/_._", - "ref/netstandard1.1/System.Reflection.Emit.dll", - "ref/netstandard1.1/System.Reflection.Emit.xml", - "ref/netstandard1.1/de/System.Reflection.Emit.xml", - "ref/netstandard1.1/es/System.Reflection.Emit.xml", - "ref/netstandard1.1/fr/System.Reflection.Emit.xml", - "ref/netstandard1.1/it/System.Reflection.Emit.xml", - "ref/netstandard1.1/ja/System.Reflection.Emit.xml", - "ref/netstandard1.1/ko/System.Reflection.Emit.xml", - "ref/netstandard1.1/ru/System.Reflection.Emit.xml", - "ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml", - "ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml", - "ref/xamarinmac20/_._" - ] - }, - "System.Reflection.Emit.ILGeneration/4.0.1": { - "sha512": "Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==", - "type": "package", - "path": "System.Reflection.Emit.ILGeneration/4.0.1", - "files": [ - "System.Reflection.Emit.ILGeneration.4.0.1.nupkg.sha512", - "System.Reflection.Emit.ILGeneration.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.ILGeneration.dll", - "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll", - "lib/portable-net45+wp8/_._", - "lib/wp80/_._", - "ref/net45/_._", - "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll", - "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/de/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/es/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/fr/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/it/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ja/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ko/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/ru/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Emit.ILGeneration.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Emit.ILGeneration.xml", - "ref/portable-net45+wp8/_._", - "ref/wp80/_._", - "runtimes/aot/lib/netcore50/_._" - ] - }, - "System.Reflection.Emit.Lightweight/4.0.1": { - "sha512": "sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==", - "type": "package", - "path": "System.Reflection.Emit.Lightweight/4.0.1", - "files": [ - "System.Reflection.Emit.Lightweight.4.0.1.nupkg.sha512", - "System.Reflection.Emit.Lightweight.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net45/_._", - "lib/netcore50/System.Reflection.Emit.Lightweight.dll", - "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll", - "lib/portable-net45+wp8/_._", - "lib/wp80/_._", - "ref/net45/_._", - "ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll", - "ref/netstandard1.0/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/de/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/es/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/fr/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/it/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ja/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ko/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/ru/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Emit.Lightweight.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Emit.Lightweight.xml", - "ref/portable-net45+wp8/_._", - "ref/wp80/_._", - "runtimes/aot/lib/netcore50/_._" - ] - }, - "System.Reflection.Extensions/4.0.1": { - "sha512": "GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==", - "type": "package", - "path": "System.Reflection.Extensions/4.0.1", - "files": [ - "System.Reflection.Extensions.4.0.1.nupkg.sha512", - "System.Reflection.Extensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Reflection.Extensions.dll", - "ref/netcore50/System.Reflection.Extensions.xml", - "ref/netcore50/de/System.Reflection.Extensions.xml", - "ref/netcore50/es/System.Reflection.Extensions.xml", - "ref/netcore50/fr/System.Reflection.Extensions.xml", - "ref/netcore50/it/System.Reflection.Extensions.xml", - "ref/netcore50/ja/System.Reflection.Extensions.xml", - "ref/netcore50/ko/System.Reflection.Extensions.xml", - "ref/netcore50/ru/System.Reflection.Extensions.xml", - "ref/netcore50/zh-hans/System.Reflection.Extensions.xml", - "ref/netcore50/zh-hant/System.Reflection.Extensions.xml", - "ref/netstandard1.0/System.Reflection.Extensions.dll", - "ref/netstandard1.0/System.Reflection.Extensions.xml", - "ref/netstandard1.0/de/System.Reflection.Extensions.xml", - "ref/netstandard1.0/es/System.Reflection.Extensions.xml", - "ref/netstandard1.0/fr/System.Reflection.Extensions.xml", - "ref/netstandard1.0/it/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ja/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ko/System.Reflection.Extensions.xml", - "ref/netstandard1.0/ru/System.Reflection.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Reflection.Metadata/1.3.0": { - "sha512": "jMSCxA4LSyKBGRDm/WtfkO03FkcgRzHxwvQRib1bm2GZ8ifKM1MX1al6breGCEQK280mdl9uQS7JNPXRYk90jw==", - "type": "package", - "path": "System.Reflection.Metadata/1.3.0", - "files": [ - "System.Reflection.Metadata.1.3.0.nupkg.sha512", - "System.Reflection.Metadata.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.1/System.Reflection.Metadata.dll", - "lib/netstandard1.1/System.Reflection.Metadata.xml", - "lib/portable-net45+win8/System.Reflection.Metadata.dll", - "lib/portable-net45+win8/System.Reflection.Metadata.xml" - ] - }, - "System.Reflection.Primitives/4.0.1": { - "sha512": "4inTox4wTBaDhB7V3mPvp9XlCbeGYWVEM9/fXALd52vNEAVisc1BoVWQPuUuD0Ga//dNbA/WeMy9u9mzLxGTHQ==", - "type": "package", - "path": "System.Reflection.Primitives/4.0.1", - "files": [ - "System.Reflection.Primitives.4.0.1.nupkg.sha512", - "System.Reflection.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Reflection.Primitives.dll", - "ref/netcore50/System.Reflection.Primitives.xml", - "ref/netcore50/de/System.Reflection.Primitives.xml", - "ref/netcore50/es/System.Reflection.Primitives.xml", - "ref/netcore50/fr/System.Reflection.Primitives.xml", - "ref/netcore50/it/System.Reflection.Primitives.xml", - "ref/netcore50/ja/System.Reflection.Primitives.xml", - "ref/netcore50/ko/System.Reflection.Primitives.xml", - "ref/netcore50/ru/System.Reflection.Primitives.xml", - "ref/netcore50/zh-hans/System.Reflection.Primitives.xml", - "ref/netcore50/zh-hant/System.Reflection.Primitives.xml", - "ref/netstandard1.0/System.Reflection.Primitives.dll", - "ref/netstandard1.0/System.Reflection.Primitives.xml", - "ref/netstandard1.0/de/System.Reflection.Primitives.xml", - "ref/netstandard1.0/es/System.Reflection.Primitives.xml", - "ref/netstandard1.0/fr/System.Reflection.Primitives.xml", - "ref/netstandard1.0/it/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ja/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ko/System.Reflection.Primitives.xml", - "ref/netstandard1.0/ru/System.Reflection.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Reflection.TypeExtensions/4.1.0": { - "sha512": "tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==", - "type": "package", - "path": "System.Reflection.TypeExtensions/4.1.0", - "files": [ - "System.Reflection.TypeExtensions.4.1.0.nupkg.sha512", - "System.Reflection.TypeExtensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Reflection.TypeExtensions.dll", - "lib/net462/System.Reflection.TypeExtensions.dll", - "lib/netcore50/System.Reflection.TypeExtensions.dll", - "lib/netstandard1.5/System.Reflection.TypeExtensions.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Reflection.TypeExtensions.dll", - "ref/net462/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.3/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.3/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/de/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/es/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/fr/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/it/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ja/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ko/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/ru/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/zh-hans/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.3/zh-hant/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/System.Reflection.TypeExtensions.dll", - "ref/netstandard1.5/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/de/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/es/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/fr/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/it/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ja/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ko/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/ru/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/zh-hans/System.Reflection.TypeExtensions.xml", - "ref/netstandard1.5/zh-hant/System.Reflection.TypeExtensions.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll" - ] - }, - "System.Resources.Reader/4.0.0": { - "sha512": "VX1iHAoHxgrLZv+nq/9drCZI6Q4SSCzSVyUm1e0U60sqWdj6XhY7wvKmy3RvsSal9h+/vqSWwxxJsm0J4vn/jA==", - "type": "package", - "path": "System.Resources.Reader/4.0.0", - "files": [ - "System.Resources.Reader.4.0.0.nupkg.sha512", - "System.Resources.Reader.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Resources.Reader.dll" - ] - }, - "System.Resources.ResourceManager/4.0.1": { - "sha512": "TxwVeUNoTgUOdQ09gfTjvW411MF+w9MBYL7AtNVc+HtBCFlutPLhUCdZjNkjbhj3bNQWMdHboF0KIWEOjJssbA==", - "type": "package", - "path": "System.Resources.ResourceManager/4.0.1", - "files": [ - "System.Resources.ResourceManager.4.0.1.nupkg.sha512", - "System.Resources.ResourceManager.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Resources.ResourceManager.dll", - "ref/netcore50/System.Resources.ResourceManager.xml", - "ref/netcore50/de/System.Resources.ResourceManager.xml", - "ref/netcore50/es/System.Resources.ResourceManager.xml", - "ref/netcore50/fr/System.Resources.ResourceManager.xml", - "ref/netcore50/it/System.Resources.ResourceManager.xml", - "ref/netcore50/ja/System.Resources.ResourceManager.xml", - "ref/netcore50/ko/System.Resources.ResourceManager.xml", - "ref/netcore50/ru/System.Resources.ResourceManager.xml", - "ref/netcore50/zh-hans/System.Resources.ResourceManager.xml", - "ref/netcore50/zh-hant/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/System.Resources.ResourceManager.dll", - "ref/netstandard1.0/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/de/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/es/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/fr/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/it/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ja/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ko/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/ru/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/zh-hans/System.Resources.ResourceManager.xml", - "ref/netstandard1.0/zh-hant/System.Resources.ResourceManager.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Resources.ResourceWriter/4.0.0-beta-22816": { - "sha512": "Q6wpzkZjop1J+WJXl9H0OgXQvxDQxMkqA43AVENNW4SlTzIT8rFW7tum54xYZy3QCMKK8gIfOnVqA6VbgXRq1Q==", - "type": "package", - "path": "System.Resources.ResourceWriter/4.0.0-beta-22816", - "files": [ - "License.rtf", - "System.Resources.ResourceWriter.4.0.0-beta-22816.nupkg.sha512", - "System.Resources.ResourceWriter.nuspec", - "lib/aspnetcore50/System.Resources.ResourceWriter.dll", - "lib/contract/System.Resources.ResourceWriter.dll", - "lib/net45/System.Resources.ResourceWriter.dll", - "lib/portable-wpa81+wp80+win80+net45+aspnetcore50/System.Resources.ResourceWriter.dll" - ] - }, - "System.Runtime/4.1.0": { - "sha512": "v6c/4Yaa9uWsq+JMhnOFewrYkgdNHNG2eMKuNqRn8P733rNXeRCGvV5FkkjBXn2dbVkPXOsO0xjsEeM1q2zC0g==", - "type": "package", - "path": "System.Runtime/4.1.0", - "files": [ - "System.Runtime.4.1.0.nupkg.sha512", - "System.Runtime.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.dll", - "lib/portable-net45+win8+wp80+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.dll", - "ref/netcore50/System.Runtime.dll", - "ref/netcore50/System.Runtime.xml", - "ref/netcore50/de/System.Runtime.xml", - "ref/netcore50/es/System.Runtime.xml", - "ref/netcore50/fr/System.Runtime.xml", - "ref/netcore50/it/System.Runtime.xml", - "ref/netcore50/ja/System.Runtime.xml", - "ref/netcore50/ko/System.Runtime.xml", - "ref/netcore50/ru/System.Runtime.xml", - "ref/netcore50/zh-hans/System.Runtime.xml", - "ref/netcore50/zh-hant/System.Runtime.xml", - "ref/netstandard1.0/System.Runtime.dll", - "ref/netstandard1.0/System.Runtime.xml", - "ref/netstandard1.0/de/System.Runtime.xml", - "ref/netstandard1.0/es/System.Runtime.xml", - "ref/netstandard1.0/fr/System.Runtime.xml", - "ref/netstandard1.0/it/System.Runtime.xml", - "ref/netstandard1.0/ja/System.Runtime.xml", - "ref/netstandard1.0/ko/System.Runtime.xml", - "ref/netstandard1.0/ru/System.Runtime.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.xml", - "ref/netstandard1.2/System.Runtime.dll", - "ref/netstandard1.2/System.Runtime.xml", - "ref/netstandard1.2/de/System.Runtime.xml", - "ref/netstandard1.2/es/System.Runtime.xml", - "ref/netstandard1.2/fr/System.Runtime.xml", - "ref/netstandard1.2/it/System.Runtime.xml", - "ref/netstandard1.2/ja/System.Runtime.xml", - "ref/netstandard1.2/ko/System.Runtime.xml", - "ref/netstandard1.2/ru/System.Runtime.xml", - "ref/netstandard1.2/zh-hans/System.Runtime.xml", - "ref/netstandard1.2/zh-hant/System.Runtime.xml", - "ref/netstandard1.3/System.Runtime.dll", - "ref/netstandard1.3/System.Runtime.xml", - "ref/netstandard1.3/de/System.Runtime.xml", - "ref/netstandard1.3/es/System.Runtime.xml", - "ref/netstandard1.3/fr/System.Runtime.xml", - "ref/netstandard1.3/it/System.Runtime.xml", - "ref/netstandard1.3/ja/System.Runtime.xml", - "ref/netstandard1.3/ko/System.Runtime.xml", - "ref/netstandard1.3/ru/System.Runtime.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.xml", - "ref/netstandard1.5/System.Runtime.dll", - "ref/netstandard1.5/System.Runtime.xml", - "ref/netstandard1.5/de/System.Runtime.xml", - "ref/netstandard1.5/es/System.Runtime.xml", - "ref/netstandard1.5/fr/System.Runtime.xml", - "ref/netstandard1.5/it/System.Runtime.xml", - "ref/netstandard1.5/ja/System.Runtime.xml", - "ref/netstandard1.5/ko/System.Runtime.xml", - "ref/netstandard1.5/ru/System.Runtime.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.xml", - "ref/portable-net45+win8+wp80+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Runtime.CompilerServices.Unsafe/4.0.0": { - "sha512": "LDvjxLx2fkThOFo/SC+901fJrh5artALmgzeSqnVxzvFp4q3HO8BkeLyshPdcbs5zpN7Xh9G23M6sDhgIPbG9A==", - "type": "package", - "path": "System.Runtime.CompilerServices.Unsafe/4.0.0", - "files": [ - "System.Runtime.CompilerServices.Unsafe.4.0.0.nupkg.sha512", - "System.Runtime.CompilerServices.Unsafe.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll", - "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml" - ] - }, - "System.Runtime.Extensions/4.1.0": { - "sha512": "CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==", - "type": "package", - "path": "System.Runtime.Extensions/4.1.0", - "files": [ - "System.Runtime.Extensions.4.1.0.nupkg.sha512", - "System.Runtime.Extensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.Extensions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.Extensions.dll", - "ref/netcore50/System.Runtime.Extensions.dll", - "ref/netcore50/System.Runtime.Extensions.xml", - "ref/netcore50/de/System.Runtime.Extensions.xml", - "ref/netcore50/es/System.Runtime.Extensions.xml", - "ref/netcore50/fr/System.Runtime.Extensions.xml", - "ref/netcore50/it/System.Runtime.Extensions.xml", - "ref/netcore50/ja/System.Runtime.Extensions.xml", - "ref/netcore50/ko/System.Runtime.Extensions.xml", - "ref/netcore50/ru/System.Runtime.Extensions.xml", - "ref/netcore50/zh-hans/System.Runtime.Extensions.xml", - "ref/netcore50/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.0/System.Runtime.Extensions.dll", - "ref/netstandard1.0/System.Runtime.Extensions.xml", - "ref/netstandard1.0/de/System.Runtime.Extensions.xml", - "ref/netstandard1.0/es/System.Runtime.Extensions.xml", - "ref/netstandard1.0/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.0/it/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.0/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.3/System.Runtime.Extensions.dll", - "ref/netstandard1.3/System.Runtime.Extensions.xml", - "ref/netstandard1.3/de/System.Runtime.Extensions.xml", - "ref/netstandard1.3/es/System.Runtime.Extensions.xml", - "ref/netstandard1.3/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.3/it/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.3/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Extensions.xml", - "ref/netstandard1.5/System.Runtime.Extensions.dll", - "ref/netstandard1.5/System.Runtime.Extensions.xml", - "ref/netstandard1.5/de/System.Runtime.Extensions.xml", - "ref/netstandard1.5/es/System.Runtime.Extensions.xml", - "ref/netstandard1.5/fr/System.Runtime.Extensions.xml", - "ref/netstandard1.5/it/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ja/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ko/System.Runtime.Extensions.xml", - "ref/netstandard1.5/ru/System.Runtime.Extensions.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.Extensions.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Runtime.Handles/4.0.1": { - "sha512": "nCJvEKguXEvk2ymk1gqj625vVnlK3/xdGzx0vOKicQkoquaTBJTP13AIYkocSUwHCLNBwUbXTqTWGDxBTWpt7g==", - "type": "package", - "path": "System.Runtime.Handles/4.0.1", - "files": [ - "System.Runtime.Handles.4.0.1.nupkg.sha512", - "System.Runtime.Handles.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/_._", - "ref/netstandard1.3/System.Runtime.Handles.dll", - "ref/netstandard1.3/System.Runtime.Handles.xml", - "ref/netstandard1.3/de/System.Runtime.Handles.xml", - "ref/netstandard1.3/es/System.Runtime.Handles.xml", - "ref/netstandard1.3/fr/System.Runtime.Handles.xml", - "ref/netstandard1.3/it/System.Runtime.Handles.xml", - "ref/netstandard1.3/ja/System.Runtime.Handles.xml", - "ref/netstandard1.3/ko/System.Runtime.Handles.xml", - "ref/netstandard1.3/ru/System.Runtime.Handles.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Handles.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Handles.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Runtime.InteropServices/4.1.0": { - "sha512": "16eu3kjHS633yYdkjwShDHZLRNMKVi/s0bY8ODiqJ2RfMhDMAwxZaUaWVnZ2P71kr/or+X9o/xFWtNqz8ivieQ==", - "type": "package", - "path": "System.Runtime.InteropServices/4.1.0", - "files": [ - "System.Runtime.InteropServices.4.1.0.nupkg.sha512", - "System.Runtime.InteropServices.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Runtime.InteropServices.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Runtime.InteropServices.dll", - "ref/netcore50/System.Runtime.InteropServices.dll", - "ref/netcore50/System.Runtime.InteropServices.xml", - "ref/netcore50/de/System.Runtime.InteropServices.xml", - "ref/netcore50/es/System.Runtime.InteropServices.xml", - "ref/netcore50/fr/System.Runtime.InteropServices.xml", - "ref/netcore50/it/System.Runtime.InteropServices.xml", - "ref/netcore50/ja/System.Runtime.InteropServices.xml", - "ref/netcore50/ko/System.Runtime.InteropServices.xml", - "ref/netcore50/ru/System.Runtime.InteropServices.xml", - "ref/netcore50/zh-hans/System.Runtime.InteropServices.xml", - "ref/netcore50/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/System.Runtime.InteropServices.dll", - "ref/netstandard1.1/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.1/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/System.Runtime.InteropServices.dll", - "ref/netstandard1.2/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.2/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/System.Runtime.InteropServices.dll", - "ref/netstandard1.3/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/System.Runtime.InteropServices.dll", - "ref/netstandard1.5/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/de/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/es/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/fr/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/it/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ja/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ko/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/ru/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.InteropServices.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.InteropServices.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Runtime.InteropServices.RuntimeInformation/4.0.0": { - "sha512": "hWPhJxc453RCa8Z29O91EmfGeZIHX1ZH2A8L6lYQVSaKzku2DfArSfMEb1/MYYzPQRJZeu0c9dmYeJKxW5Fgng==", - "type": "package", - "path": "System.Runtime.InteropServices.RuntimeInformation/4.0.0", - "files": [ - "System.Runtime.InteropServices.RuntimeInformation.4.0.0.nupkg.sha512", - "System.Runtime.InteropServices.RuntimeInformation.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/win8/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/wpa81/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll" - ] - }, - "System.Runtime.Loader/4.0.0": { - "sha512": "4UN78GOVU/mbDFcXkEWtetJT/sJ0yic2gGk1HSlSpWI0TDf421xnrZTDZnwNBapk1GQeYN7U1lTj/aQB1by6ow==", - "type": "package", - "path": "System.Runtime.Loader/4.0.0", - "files": [ - "System.Runtime.Loader.4.0.0.nupkg.sha512", - "System.Runtime.Loader.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net462/_._", - "lib/netstandard1.5/System.Runtime.Loader.dll", - "ref/netstandard1.5/System.Runtime.Loader.dll", - "ref/netstandard1.5/System.Runtime.Loader.xml", - "ref/netstandard1.5/de/System.Runtime.Loader.xml", - "ref/netstandard1.5/es/System.Runtime.Loader.xml", - "ref/netstandard1.5/fr/System.Runtime.Loader.xml", - "ref/netstandard1.5/it/System.Runtime.Loader.xml", - "ref/netstandard1.5/ja/System.Runtime.Loader.xml", - "ref/netstandard1.5/ko/System.Runtime.Loader.xml", - "ref/netstandard1.5/ru/System.Runtime.Loader.xml", - "ref/netstandard1.5/zh-hans/System.Runtime.Loader.xml", - "ref/netstandard1.5/zh-hant/System.Runtime.Loader.xml" - ] - }, - "System.Runtime.Numerics/4.0.1": { - "sha512": "+XbKFuzdmLP3d1o9pdHu2nxjNr2OEPqGzKeegPLCUMM71a0t50A/rOcIRmGs9wR7a8KuHX6hYs/7/TymIGLNqg==", - "type": "package", - "path": "System.Runtime.Numerics/4.0.1", - "files": [ - "System.Runtime.Numerics.4.0.1.nupkg.sha512", - "System.Runtime.Numerics.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Runtime.Numerics.dll", - "lib/netstandard1.3/System.Runtime.Numerics.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Runtime.Numerics.dll", - "ref/netcore50/System.Runtime.Numerics.xml", - "ref/netcore50/de/System.Runtime.Numerics.xml", - "ref/netcore50/es/System.Runtime.Numerics.xml", - "ref/netcore50/fr/System.Runtime.Numerics.xml", - "ref/netcore50/it/System.Runtime.Numerics.xml", - "ref/netcore50/ja/System.Runtime.Numerics.xml", - "ref/netcore50/ko/System.Runtime.Numerics.xml", - "ref/netcore50/ru/System.Runtime.Numerics.xml", - "ref/netcore50/zh-hans/System.Runtime.Numerics.xml", - "ref/netcore50/zh-hant/System.Runtime.Numerics.xml", - "ref/netstandard1.1/System.Runtime.Numerics.dll", - "ref/netstandard1.1/System.Runtime.Numerics.xml", - "ref/netstandard1.1/de/System.Runtime.Numerics.xml", - "ref/netstandard1.1/es/System.Runtime.Numerics.xml", - "ref/netstandard1.1/fr/System.Runtime.Numerics.xml", - "ref/netstandard1.1/it/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ja/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ko/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ru/System.Runtime.Numerics.xml", - "ref/netstandard1.1/zh-hans/System.Runtime.Numerics.xml", - "ref/netstandard1.1/zh-hant/System.Runtime.Numerics.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Runtime.Serialization.Primitives/4.1.1": { - "sha512": "HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==", - "type": "package", - "path": "System.Runtime.Serialization.Primitives/4.1.1", - "files": [ - "System.Runtime.Serialization.Primitives.4.1.1.nupkg.sha512", - "System.Runtime.Serialization.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net46/System.Runtime.Serialization.Primitives.dll", - "lib/netcore50/System.Runtime.Serialization.Primitives.dll", - "lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net46/System.Runtime.Serialization.Primitives.dll", - "ref/netcore50/System.Runtime.Serialization.Primitives.dll", - "ref/netcore50/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/de/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/es/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/fr/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/it/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/ja/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/ko/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/ru/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/zh-hans/System.Runtime.Serialization.Primitives.xml", - "ref/netcore50/zh-hant/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/System.Runtime.Serialization.Primitives.dll", - "ref/netstandard1.0/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/de/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/es/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/fr/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/it/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/ja/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/ko/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/ru/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/System.Runtime.Serialization.Primitives.dll", - "ref/netstandard1.3/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/de/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/es/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/fr/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/it/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/ja/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/ko/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/ru/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Serialization.Primitives.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Serialization.Primitives.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Runtime.Serialization.Primitives.dll" - ] - }, - "System.Runtime.Serialization.Xml/4.1.1": { - "sha512": "yqfKHkWUAdI0hdDIdD9KDzluKtZ8IIqLF3O7xIZlt6UTs1bOvFRpCvRTvGQva3Ak/ZM9/nq9IHBJ1tC4Ybcrjg==", - "type": "package", - "path": "System.Runtime.Serialization.Xml/4.1.1", - "files": [ - "System.Runtime.Serialization.Xml.4.1.1.nupkg.sha512", - "System.Runtime.Serialization.Xml.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net46/System.Runtime.Serialization.Xml.dll", - "lib/netcore50/System.Runtime.Serialization.Xml.dll", - "lib/netstandard1.3/System.Runtime.Serialization.Xml.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net46/System.Runtime.Serialization.Xml.dll", - "ref/netcore50/System.Runtime.Serialization.Xml.dll", - "ref/netcore50/System.Runtime.Serialization.Xml.xml", - "ref/netcore50/de/System.Runtime.Serialization.Xml.xml", - "ref/netcore50/es/System.Runtime.Serialization.Xml.xml", - "ref/netcore50/fr/System.Runtime.Serialization.Xml.xml", - "ref/netcore50/it/System.Runtime.Serialization.Xml.xml", - "ref/netcore50/ja/System.Runtime.Serialization.Xml.xml", - "ref/netcore50/ko/System.Runtime.Serialization.Xml.xml", - "ref/netcore50/ru/System.Runtime.Serialization.Xml.xml", - "ref/netcore50/zh-hans/System.Runtime.Serialization.Xml.xml", - "ref/netcore50/zh-hant/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.0/System.Runtime.Serialization.Xml.dll", - "ref/netstandard1.0/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.0/de/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.0/es/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.0/fr/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.0/it/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.0/ja/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.0/ko/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.0/ru/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.0/zh-hans/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.0/zh-hant/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.3/System.Runtime.Serialization.Xml.dll", - "ref/netstandard1.3/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.3/de/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.3/es/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.3/fr/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.3/it/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.3/ja/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.3/ko/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.3/ru/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.3/zh-hans/System.Runtime.Serialization.Xml.xml", - "ref/netstandard1.3/zh-hant/System.Runtime.Serialization.Xml.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Security.Claims/4.0.1": { - "sha512": "4Jlp0OgJLS/Voj1kyFP6MJlIYp3crgfH8kNQk2p7+4JYfc1aAmh9PZyAMMbDhuoolGNtux9HqSOazsioRiDvCw==", - "type": "package", - "path": "System.Security.Claims/4.0.1", - "files": [ - "System.Security.Claims.4.0.1.nupkg.sha512", - "System.Security.Claims.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Claims.dll", - "lib/netstandard1.3/System.Security.Claims.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Claims.dll", - "ref/netstandard1.3/System.Security.Claims.dll", - "ref/netstandard1.3/System.Security.Claims.xml", - "ref/netstandard1.3/de/System.Security.Claims.xml", - "ref/netstandard1.3/es/System.Security.Claims.xml", - "ref/netstandard1.3/fr/System.Security.Claims.xml", - "ref/netstandard1.3/it/System.Security.Claims.xml", - "ref/netstandard1.3/ja/System.Security.Claims.xml", - "ref/netstandard1.3/ko/System.Security.Claims.xml", - "ref/netstandard1.3/ru/System.Security.Claims.xml", - "ref/netstandard1.3/zh-hans/System.Security.Claims.xml", - "ref/netstandard1.3/zh-hant/System.Security.Claims.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Security.Cryptography.Algorithms/4.2.0": { - "sha512": "8JQFxbLVdrtIOKMDN38Fn0GWnqYZw/oMlwOUG/qz1jqChvyZlnUmu+0s7wLx7JYua/nAXoESpHA3iw11QFWhXg==", - "type": "package", - "path": "System.Security.Cryptography.Algorithms/4.2.0", - "files": [ - "System.Security.Cryptography.Algorithms.4.2.0.nupkg.sha512", - "System.Security.Cryptography.Algorithms.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Algorithms.dll", - "lib/net461/System.Security.Cryptography.Algorithms.dll", - "lib/net463/System.Security.Cryptography.Algorithms.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Algorithms.dll", - "ref/net461/System.Security.Cryptography.Algorithms.dll", - "ref/net463/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.3/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net463/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll" - ] - }, - "System.Security.Cryptography.Cng/4.2.0": { - "sha512": "cUJ2h+ZvONDe28Szw3st5dOHdjndhJzQ2WObDEXAWRPEQBtVItVoxbXM/OEsTthl3cNn2dk2k0I3y45igCQcLw==", - "type": "package", - "path": "System.Security.Cryptography.Cng/4.2.0", - "files": [ - "System.Security.Cryptography.Cng.4.2.0.nupkg.sha512", - "System.Security.Cryptography.Cng.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Security.Cryptography.Cng.dll", - "lib/net461/System.Security.Cryptography.Cng.dll", - "lib/net463/System.Security.Cryptography.Cng.dll", - "ref/net46/System.Security.Cryptography.Cng.dll", - "ref/net461/System.Security.Cryptography.Cng.dll", - "ref/net463/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.3/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.4/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.6/System.Security.Cryptography.Cng.dll", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net463/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll" - ] - }, - "System.Security.Cryptography.Csp/4.0.0": { - "sha512": "/i1Usuo4PgAqgbPNC0NjbO3jPW//BoBlTpcWFD1EHVbidH21y4c1ap5bbEMSGAXjAShhMH4abi/K8fILrnu4BQ==", - "type": "package", - "path": "System.Security.Cryptography.Csp/4.0.0", - "files": [ - "System.Security.Cryptography.Csp.4.0.0.nupkg.sha512", - "System.Security.Cryptography.Csp.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Csp.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Csp.dll", - "ref/netstandard1.3/System.Security.Cryptography.Csp.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Csp.dll", - "runtimes/win/lib/netcore50/_._", - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll" - ] - }, - "System.Security.Cryptography.Encoding/4.0.0": { - "sha512": "FbKgE5MbxSQMPcSVRgwM6bXN3GtyAh04NkV8E5zKCBE26X0vYW0UtTa2FIgkH33WVqBVxRgxljlVYumWtU+HcQ==", - "type": "package", - "path": "System.Security.Cryptography.Encoding/4.0.0", - "files": [ - "System.Security.Cryptography.Encoding.4.0.0.nupkg.sha512", - "System.Security.Cryptography.Encoding.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Encoding.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Encoding.dll", - "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll", - "ref/netstandard1.3/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/de/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/es/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/fr/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/it/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ja/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ko/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ru/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/zh-hans/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/zh-hant/System.Security.Cryptography.Encoding.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Encoding.dll", - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll" - ] - }, - "System.Security.Cryptography.OpenSsl/4.0.0": { - "sha512": "HUG/zNUJwEiLkoURDixzkzZdB5yGA5pQhDP93ArOpDPQMteURIGERRNzzoJlmTreLBWr5lkFSjjMSk8ySEpQMw==", - "type": "package", - "path": "System.Security.Cryptography.OpenSsl/4.0.0", - "files": [ - "System.Security.Cryptography.OpenSsl.4.0.0.nupkg.sha512", - "System.Security.Cryptography.OpenSsl.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", - "ref/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll" - ] - }, - "System.Security.Cryptography.Primitives/4.0.0": { - "sha512": "Wkd7QryWYjkQclX0bngpntW5HSlMzeJU24UaLJQ7YTfI8ydAVAaU2J+HXLLABOVJlKTVvAeL0Aj39VeTe7L+oA==", - "type": "package", - "path": "System.Security.Cryptography.Primitives/4.0.0", - "files": [ - "System.Security.Cryptography.Primitives.4.0.0.nupkg.sha512", - "System.Security.Cryptography.Primitives.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Primitives.dll", - "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Primitives.dll", - "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Security.Cryptography.X509Certificates/4.1.0": { - "sha512": "4HEfsQIKAhA1+ApNn729Gi09zh+lYWwyIuViihoMDWp1vQnEkL2ct7mAbhBlLYm+x/L4Rr/pyGge1lIY635e0w==", - "type": "package", - "path": "System.Security.Cryptography.X509Certificates/4.1.0", - "files": [ - "System.Security.Cryptography.X509Certificates.4.1.0.nupkg.sha512", - "System.Security.Cryptography.X509Certificates.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.X509Certificates.dll", - "lib/net461/System.Security.Cryptography.X509Certificates.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.X509Certificates.dll", - "ref/net461/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/de/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/es/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/fr/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/it/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ja/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ko/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ru/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/zh-hans/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/zh-hant/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/de/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/es/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/fr/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/it/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ja/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ko/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ru/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/zh-hans/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/zh-hant/System.Security.Cryptography.X509Certificates.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll" - ] - }, - "System.Security.Principal/4.0.1": { - "sha512": "On+SKhXY5rzxh/S8wlH1Rm0ogBlu7zyHNxeNBiXauNrhHRXAe9EuX8Yl5IOzLPGU5Z4kLWHMvORDOCG8iu9hww==", - "type": "package", - "path": "System.Security.Principal/4.0.1", - "files": [ - "System.Security.Principal.4.0.1.nupkg.sha512", - "System.Security.Principal.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Security.Principal.dll", - "lib/netstandard1.0/System.Security.Principal.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Security.Principal.dll", - "ref/netcore50/System.Security.Principal.xml", - "ref/netcore50/de/System.Security.Principal.xml", - "ref/netcore50/es/System.Security.Principal.xml", - "ref/netcore50/fr/System.Security.Principal.xml", - "ref/netcore50/it/System.Security.Principal.xml", - "ref/netcore50/ja/System.Security.Principal.xml", - "ref/netcore50/ko/System.Security.Principal.xml", - "ref/netcore50/ru/System.Security.Principal.xml", - "ref/netcore50/zh-hans/System.Security.Principal.xml", - "ref/netcore50/zh-hant/System.Security.Principal.xml", - "ref/netstandard1.0/System.Security.Principal.dll", - "ref/netstandard1.0/System.Security.Principal.xml", - "ref/netstandard1.0/de/System.Security.Principal.xml", - "ref/netstandard1.0/es/System.Security.Principal.xml", - "ref/netstandard1.0/fr/System.Security.Principal.xml", - "ref/netstandard1.0/it/System.Security.Principal.xml", - "ref/netstandard1.0/ja/System.Security.Principal.xml", - "ref/netstandard1.0/ko/System.Security.Principal.xml", - "ref/netstandard1.0/ru/System.Security.Principal.xml", - "ref/netstandard1.0/zh-hans/System.Security.Principal.xml", - "ref/netstandard1.0/zh-hant/System.Security.Principal.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Security.Principal.Windows/4.0.0": { - "sha512": "iFx15AF3RMEPZn3COh8+Bb2Thv2zsmLd93RchS1b8Mj5SNYeGqbYNCSn5AES1+gq56p4ujGZPrl0xN7ngkXOHg==", - "type": "package", - "path": "System.Security.Principal.Windows/4.0.0", - "files": [ - "System.Security.Principal.Windows.4.0.0.nupkg.sha512", - "System.Security.Principal.Windows.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Security.Principal.Windows.dll", - "ref/net46/System.Security.Principal.Windows.dll", - "ref/netstandard1.3/System.Security.Principal.Windows.dll", - "ref/netstandard1.3/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/de/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/es/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/fr/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/it/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/ja/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/ko/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/ru/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/zh-hans/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/zh-hant/System.Security.Principal.Windows.xml", - "runtimes/unix/lib/netstandard1.3/System.Security.Principal.Windows.dll", - "runtimes/win/lib/net46/System.Security.Principal.Windows.dll", - "runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll" - ] - }, - "System.Text.Encoding/4.0.11": { - "sha512": "U3gGeMlDZXxCEiY4DwVLSacg+DFWCvoiX+JThA/rvw37Sqrku7sEFeVBBBMBnfB6FeZHsyDx85HlKL19x0HtZA==", - "type": "package", - "path": "System.Text.Encoding/4.0.11", - "files": [ - "System.Text.Encoding.4.0.11.nupkg.sha512", - "System.Text.Encoding.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Text.Encoding.dll", - "ref/netcore50/System.Text.Encoding.xml", - "ref/netcore50/de/System.Text.Encoding.xml", - "ref/netcore50/es/System.Text.Encoding.xml", - "ref/netcore50/fr/System.Text.Encoding.xml", - "ref/netcore50/it/System.Text.Encoding.xml", - "ref/netcore50/ja/System.Text.Encoding.xml", - "ref/netcore50/ko/System.Text.Encoding.xml", - "ref/netcore50/ru/System.Text.Encoding.xml", - "ref/netcore50/zh-hans/System.Text.Encoding.xml", - "ref/netcore50/zh-hant/System.Text.Encoding.xml", - "ref/netstandard1.0/System.Text.Encoding.dll", - "ref/netstandard1.0/System.Text.Encoding.xml", - "ref/netstandard1.0/de/System.Text.Encoding.xml", - "ref/netstandard1.0/es/System.Text.Encoding.xml", - "ref/netstandard1.0/fr/System.Text.Encoding.xml", - "ref/netstandard1.0/it/System.Text.Encoding.xml", - "ref/netstandard1.0/ja/System.Text.Encoding.xml", - "ref/netstandard1.0/ko/System.Text.Encoding.xml", - "ref/netstandard1.0/ru/System.Text.Encoding.xml", - "ref/netstandard1.0/zh-hans/System.Text.Encoding.xml", - "ref/netstandard1.0/zh-hant/System.Text.Encoding.xml", - "ref/netstandard1.3/System.Text.Encoding.dll", - "ref/netstandard1.3/System.Text.Encoding.xml", - "ref/netstandard1.3/de/System.Text.Encoding.xml", - "ref/netstandard1.3/es/System.Text.Encoding.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.xml", - "ref/netstandard1.3/it/System.Text.Encoding.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Text.Encoding.CodePages/4.0.1": { - "sha512": "h4z6rrA/hxWf4655D18IIZ0eaLRa3tQC/j+e26W+VinIHY0l07iEXaAvO0YSYq3MvCjMYy8Zs5AdC1sxNQOB7Q==", - "type": "package", - "path": "System.Text.Encoding.CodePages/4.0.1", - "files": [ - "System.Text.Encoding.CodePages.4.0.1.nupkg.sha512", - "System.Text.Encoding.CodePages.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Text.Encoding.CodePages.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/netstandard1.3/System.Text.Encoding.CodePages.dll", - "ref/netstandard1.3/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/de/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/es/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/it/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.CodePages.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.CodePages.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Text.Encoding.CodePages.dll", - "runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll" - ] - }, - "System.Text.Encoding.Extensions/4.0.11": { - "sha512": "jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==", - "type": "package", - "path": "System.Text.Encoding.Extensions/4.0.11", - "files": [ - "System.Text.Encoding.Extensions.4.0.11.nupkg.sha512", - "System.Text.Encoding.Extensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Text.Encoding.Extensions.dll", - "ref/netcore50/System.Text.Encoding.Extensions.xml", - "ref/netcore50/de/System.Text.Encoding.Extensions.xml", - "ref/netcore50/es/System.Text.Encoding.Extensions.xml", - "ref/netcore50/fr/System.Text.Encoding.Extensions.xml", - "ref/netcore50/it/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ja/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ko/System.Text.Encoding.Extensions.xml", - "ref/netcore50/ru/System.Text.Encoding.Extensions.xml", - "ref/netcore50/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netcore50/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/System.Text.Encoding.Extensions.dll", - "ref/netstandard1.0/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/de/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/es/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/fr/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/it/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ja/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ko/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/ru/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.0/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/System.Text.Encoding.Extensions.dll", - "ref/netstandard1.3/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/de/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/es/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/fr/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/it/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ja/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ko/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/ru/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/zh-hans/System.Text.Encoding.Extensions.xml", - "ref/netstandard1.3/zh-hant/System.Text.Encoding.Extensions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Text.Encodings.Web/4.0.0": { - "sha512": "TWZnuiJgPDAEEUfobD7njXvSVR2Toz+jvKWds6yL4oSztmKQfnWzucczjzA+6Dv1bktBdY71sZW1YN0X6m9chQ==", - "type": "package", - "path": "System.Text.Encodings.Web/4.0.0", - "files": [ - "System.Text.Encodings.Web.4.0.0.nupkg.sha512", - "System.Text.Encodings.Web.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Text.Encodings.Web.dll", - "lib/netstandard1.0/System.Text.Encodings.Web.xml" - ] - }, - "System.Text.RegularExpressions/4.1.0": { - "sha512": "i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==", - "type": "package", - "path": "System.Text.RegularExpressions/4.1.0", - "files": [ - "System.Text.RegularExpressions.4.1.0.nupkg.sha512", - "System.Text.RegularExpressions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net463/System.Text.RegularExpressions.dll", - "lib/netcore50/System.Text.RegularExpressions.dll", - "lib/netstandard1.6/System.Text.RegularExpressions.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net463/System.Text.RegularExpressions.dll", - "ref/netcore50/System.Text.RegularExpressions.dll", - "ref/netcore50/System.Text.RegularExpressions.xml", - "ref/netcore50/de/System.Text.RegularExpressions.xml", - "ref/netcore50/es/System.Text.RegularExpressions.xml", - "ref/netcore50/fr/System.Text.RegularExpressions.xml", - "ref/netcore50/it/System.Text.RegularExpressions.xml", - "ref/netcore50/ja/System.Text.RegularExpressions.xml", - "ref/netcore50/ko/System.Text.RegularExpressions.xml", - "ref/netcore50/ru/System.Text.RegularExpressions.xml", - "ref/netcore50/zh-hans/System.Text.RegularExpressions.xml", - "ref/netcore50/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/System.Text.RegularExpressions.dll", - "ref/netstandard1.0/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.0/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/System.Text.RegularExpressions.dll", - "ref/netstandard1.3/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.3/zh-hant/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/System.Text.RegularExpressions.dll", - "ref/netstandard1.6/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/de/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/es/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/fr/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/it/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ja/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ko/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/ru/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/zh-hans/System.Text.RegularExpressions.xml", - "ref/netstandard1.6/zh-hant/System.Text.RegularExpressions.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Threading/4.0.11": { - "sha512": "N+3xqIcg3VDKyjwwCGaZ9HawG9aC6cSDI+s7ROma310GQo8vilFZa86hqKppwTHleR/G0sfOzhvgnUxWCR/DrQ==", - "type": "package", - "path": "System.Threading/4.0.11", - "files": [ - "System.Threading.4.0.11.nupkg.sha512", - "System.Threading.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Threading.dll", - "lib/netstandard1.3/System.Threading.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.dll", - "ref/netcore50/System.Threading.xml", - "ref/netcore50/de/System.Threading.xml", - "ref/netcore50/es/System.Threading.xml", - "ref/netcore50/fr/System.Threading.xml", - "ref/netcore50/it/System.Threading.xml", - "ref/netcore50/ja/System.Threading.xml", - "ref/netcore50/ko/System.Threading.xml", - "ref/netcore50/ru/System.Threading.xml", - "ref/netcore50/zh-hans/System.Threading.xml", - "ref/netcore50/zh-hant/System.Threading.xml", - "ref/netstandard1.0/System.Threading.dll", - "ref/netstandard1.0/System.Threading.xml", - "ref/netstandard1.0/de/System.Threading.xml", - "ref/netstandard1.0/es/System.Threading.xml", - "ref/netstandard1.0/fr/System.Threading.xml", - "ref/netstandard1.0/it/System.Threading.xml", - "ref/netstandard1.0/ja/System.Threading.xml", - "ref/netstandard1.0/ko/System.Threading.xml", - "ref/netstandard1.0/ru/System.Threading.xml", - "ref/netstandard1.0/zh-hans/System.Threading.xml", - "ref/netstandard1.0/zh-hant/System.Threading.xml", - "ref/netstandard1.3/System.Threading.dll", - "ref/netstandard1.3/System.Threading.xml", - "ref/netstandard1.3/de/System.Threading.xml", - "ref/netstandard1.3/es/System.Threading.xml", - "ref/netstandard1.3/fr/System.Threading.xml", - "ref/netstandard1.3/it/System.Threading.xml", - "ref/netstandard1.3/ja/System.Threading.xml", - "ref/netstandard1.3/ko/System.Threading.xml", - "ref/netstandard1.3/ru/System.Threading.xml", - "ref/netstandard1.3/zh-hans/System.Threading.xml", - "ref/netstandard1.3/zh-hant/System.Threading.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Threading.dll" - ] - }, - "System.Threading.Overlapped/4.0.1": { - "sha512": "f7aLuLkBoCQM2kng7zqLFBXz9Gk48gDK8lk1ih9rH/1arJJzZK9gJwNvPDhL6Ps/l6rwOr8jw+4FCHL0KKWiEg==", - "type": "package", - "path": "System.Threading.Overlapped/4.0.1", - "files": [ - "System.Threading.Overlapped.4.0.1.nupkg.sha512", - "System.Threading.Overlapped.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Threading.Overlapped.dll", - "ref/net46/System.Threading.Overlapped.dll", - "ref/netstandard1.3/System.Threading.Overlapped.dll", - "ref/netstandard1.3/System.Threading.Overlapped.xml", - "ref/netstandard1.3/de/System.Threading.Overlapped.xml", - "ref/netstandard1.3/es/System.Threading.Overlapped.xml", - "ref/netstandard1.3/fr/System.Threading.Overlapped.xml", - "ref/netstandard1.3/it/System.Threading.Overlapped.xml", - "ref/netstandard1.3/ja/System.Threading.Overlapped.xml", - "ref/netstandard1.3/ko/System.Threading.Overlapped.xml", - "ref/netstandard1.3/ru/System.Threading.Overlapped.xml", - "ref/netstandard1.3/zh-hans/System.Threading.Overlapped.xml", - "ref/netstandard1.3/zh-hant/System.Threading.Overlapped.xml", - "runtimes/unix/lib/netstandard1.3/System.Threading.Overlapped.dll", - "runtimes/win/lib/net46/System.Threading.Overlapped.dll", - "runtimes/win/lib/netcore50/System.Threading.Overlapped.dll", - "runtimes/win/lib/netstandard1.3/System.Threading.Overlapped.dll" - ] - }, - "System.Threading.Tasks/4.0.11": { - "sha512": "k1S4Gc6IGwtHGT8188RSeGaX86Qw/wnrgNLshJvsdNUOPP9etMmo8S07c+UlOAx4K/xLuN9ivA1bD0LVurtIxQ==", - "type": "package", - "path": "System.Threading.Tasks/4.0.11", - "files": [ - "System.Threading.Tasks.4.0.11.nupkg.sha512", - "System.Threading.Tasks.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.Tasks.dll", - "ref/netcore50/System.Threading.Tasks.xml", - "ref/netcore50/de/System.Threading.Tasks.xml", - "ref/netcore50/es/System.Threading.Tasks.xml", - "ref/netcore50/fr/System.Threading.Tasks.xml", - "ref/netcore50/it/System.Threading.Tasks.xml", - "ref/netcore50/ja/System.Threading.Tasks.xml", - "ref/netcore50/ko/System.Threading.Tasks.xml", - "ref/netcore50/ru/System.Threading.Tasks.xml", - "ref/netcore50/zh-hans/System.Threading.Tasks.xml", - "ref/netcore50/zh-hant/System.Threading.Tasks.xml", - "ref/netstandard1.0/System.Threading.Tasks.dll", - "ref/netstandard1.0/System.Threading.Tasks.xml", - "ref/netstandard1.0/de/System.Threading.Tasks.xml", - "ref/netstandard1.0/es/System.Threading.Tasks.xml", - "ref/netstandard1.0/fr/System.Threading.Tasks.xml", - "ref/netstandard1.0/it/System.Threading.Tasks.xml", - "ref/netstandard1.0/ja/System.Threading.Tasks.xml", - "ref/netstandard1.0/ko/System.Threading.Tasks.xml", - "ref/netstandard1.0/ru/System.Threading.Tasks.xml", - "ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml", - "ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml", - "ref/netstandard1.3/System.Threading.Tasks.dll", - "ref/netstandard1.3/System.Threading.Tasks.xml", - "ref/netstandard1.3/de/System.Threading.Tasks.xml", - "ref/netstandard1.3/es/System.Threading.Tasks.xml", - "ref/netstandard1.3/fr/System.Threading.Tasks.xml", - "ref/netstandard1.3/it/System.Threading.Tasks.xml", - "ref/netstandard1.3/ja/System.Threading.Tasks.xml", - "ref/netstandard1.3/ko/System.Threading.Tasks.xml", - "ref/netstandard1.3/ru/System.Threading.Tasks.xml", - "ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml", - "ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Threading.Tasks.Dataflow/4.6.0": { - "sha512": "2hRjGu2r2jxRZ55wmcHO/WbdX+YAOz9x6FE8xqkHZgPaoFMKQZRe9dk8xTZIas8fRjxRmzawnTEWIrhlM+Un7w==", - "type": "package", - "path": "System.Threading.Tasks.Dataflow/4.6.0", - "files": [ - "System.Threading.Tasks.Dataflow.4.6.0.nupkg.sha512", - "System.Threading.Tasks.Dataflow.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Threading.Tasks.Dataflow.XML", - "lib/netstandard1.0/System.Threading.Tasks.Dataflow.dll", - "lib/netstandard1.1/System.Threading.Tasks.Dataflow.XML", - "lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll" - ] - }, - "System.Threading.Tasks.Extensions/4.0.0": { - "sha512": "pH4FZDsZQ/WmgJtN4LWYmRdJAEeVkyriSwrv2Teoe5FOU0Yxlb6II6GL8dBPOfRmutHGATduj3ooMt7dJ2+i+w==", - "type": "package", - "path": "System.Threading.Tasks.Extensions/4.0.0", - "files": [ - "System.Threading.Tasks.Extensions.4.0.0.nupkg.sha512", - "System.Threading.Tasks.Extensions.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll", - "lib/netstandard1.0/System.Threading.Tasks.Extensions.xml", - "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll", - "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml" - ] - }, - "System.Threading.Tasks.Parallel/4.0.1": { - "sha512": "7Pc9t25bcynT9FpMvkUw4ZjYwUiGup/5cJFW72/5MgCG+np2cfVUMdh29u8d7onxX7d8PS3J+wL73zQRqkdrSA==", - "type": "package", - "path": "System.Threading.Tasks.Parallel/4.0.1", - "files": [ - "System.Threading.Tasks.Parallel.4.0.1.nupkg.sha512", - "System.Threading.Tasks.Parallel.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Threading.Tasks.Parallel.dll", - "lib/netstandard1.3/System.Threading.Tasks.Parallel.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.Tasks.Parallel.dll", - "ref/netcore50/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/de/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/es/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/fr/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/it/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/ja/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/ko/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/ru/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/zh-hans/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/zh-hant/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/System.Threading.Tasks.Parallel.dll", - "ref/netstandard1.1/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/de/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/es/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/fr/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/it/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/ja/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/ko/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/ru/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/zh-hans/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/zh-hant/System.Threading.Tasks.Parallel.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Threading.Thread/4.0.0": { - "sha512": "gIdJqDXlOr5W9zeqFErLw3dsOsiShSCYtF9SEHitACycmvNvY8odf9kiKvp6V7aibc8C4HzzNBkWXjyfn7plbQ==", - "type": "package", - "path": "System.Threading.Thread/4.0.0", - "files": [ - "System.Threading.Thread.4.0.0.nupkg.sha512", - "System.Threading.Thread.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Threading.Thread.dll", - "lib/netcore50/_._", - "lib/netstandard1.3/System.Threading.Thread.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Threading.Thread.dll", - "ref/netstandard1.3/System.Threading.Thread.dll", - "ref/netstandard1.3/System.Threading.Thread.xml", - "ref/netstandard1.3/de/System.Threading.Thread.xml", - "ref/netstandard1.3/es/System.Threading.Thread.xml", - "ref/netstandard1.3/fr/System.Threading.Thread.xml", - "ref/netstandard1.3/it/System.Threading.Thread.xml", - "ref/netstandard1.3/ja/System.Threading.Thread.xml", - "ref/netstandard1.3/ko/System.Threading.Thread.xml", - "ref/netstandard1.3/ru/System.Threading.Thread.xml", - "ref/netstandard1.3/zh-hans/System.Threading.Thread.xml", - "ref/netstandard1.3/zh-hant/System.Threading.Thread.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Threading.ThreadPool/4.0.10": { - "sha512": "IMXgB5Vf/5Qw1kpoVgJMOvUO1l32aC+qC3OaIZjWJOjvcxuxNWOK2ZTWWYXfij22NHxT2j1yWX5vlAeQWld9vA==", - "type": "package", - "path": "System.Threading.ThreadPool/4.0.10", - "files": [ - "System.Threading.ThreadPool.4.0.10.nupkg.sha512", - "System.Threading.ThreadPool.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Threading.ThreadPool.dll", - "lib/netcore50/_._", - "lib/netstandard1.3/System.Threading.ThreadPool.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Threading.ThreadPool.dll", - "ref/netstandard1.3/System.Threading.ThreadPool.dll", - "ref/netstandard1.3/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/de/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/es/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/fr/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/it/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/ja/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/ko/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/ru/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/zh-hans/System.Threading.ThreadPool.xml", - "ref/netstandard1.3/zh-hant/System.Threading.ThreadPool.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Threading.Timer/4.0.1": { - "sha512": "saGfUV8uqVW6LeURiqxcGhZ24PzuRNaUBtbhVeuUAvky1naH395A/1nY0P2bWvrw/BreRtIB/EzTDkGBpqCwEw==", - "type": "package", - "path": "System.Threading.Timer/4.0.1", - "files": [ - "System.Threading.Timer.4.0.1.nupkg.sha512", - "System.Threading.Timer.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net451/_._", - "lib/portable-net451+win81+wpa81/_._", - "lib/win81/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net451/_._", - "ref/netcore50/System.Threading.Timer.dll", - "ref/netcore50/System.Threading.Timer.xml", - "ref/netcore50/de/System.Threading.Timer.xml", - "ref/netcore50/es/System.Threading.Timer.xml", - "ref/netcore50/fr/System.Threading.Timer.xml", - "ref/netcore50/it/System.Threading.Timer.xml", - "ref/netcore50/ja/System.Threading.Timer.xml", - "ref/netcore50/ko/System.Threading.Timer.xml", - "ref/netcore50/ru/System.Threading.Timer.xml", - "ref/netcore50/zh-hans/System.Threading.Timer.xml", - "ref/netcore50/zh-hant/System.Threading.Timer.xml", - "ref/netstandard1.2/System.Threading.Timer.dll", - "ref/netstandard1.2/System.Threading.Timer.xml", - "ref/netstandard1.2/de/System.Threading.Timer.xml", - "ref/netstandard1.2/es/System.Threading.Timer.xml", - "ref/netstandard1.2/fr/System.Threading.Timer.xml", - "ref/netstandard1.2/it/System.Threading.Timer.xml", - "ref/netstandard1.2/ja/System.Threading.Timer.xml", - "ref/netstandard1.2/ko/System.Threading.Timer.xml", - "ref/netstandard1.2/ru/System.Threading.Timer.xml", - "ref/netstandard1.2/zh-hans/System.Threading.Timer.xml", - "ref/netstandard1.2/zh-hant/System.Threading.Timer.xml", - "ref/portable-net451+win81+wpa81/_._", - "ref/win81/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Xml.ReaderWriter/4.0.11": { - "sha512": "ZIiLPsf67YZ9zgr31vzrFaYQqxRPX9cVHjtPSnmx4eN6lbS/yEyYNr2vs1doGDEscF0tjCZFsk9yUg1sC9e8tg==", - "type": "package", - "path": "System.Xml.ReaderWriter/4.0.11", - "files": [ - "System.Xml.ReaderWriter.4.0.11.nupkg.sha512", - "System.Xml.ReaderWriter.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Xml.ReaderWriter.dll", - "lib/netstandard1.3/System.Xml.ReaderWriter.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Xml.ReaderWriter.dll", - "ref/netcore50/System.Xml.ReaderWriter.xml", - "ref/netcore50/de/System.Xml.ReaderWriter.xml", - "ref/netcore50/es/System.Xml.ReaderWriter.xml", - "ref/netcore50/fr/System.Xml.ReaderWriter.xml", - "ref/netcore50/it/System.Xml.ReaderWriter.xml", - "ref/netcore50/ja/System.Xml.ReaderWriter.xml", - "ref/netcore50/ko/System.Xml.ReaderWriter.xml", - "ref/netcore50/ru/System.Xml.ReaderWriter.xml", - "ref/netcore50/zh-hans/System.Xml.ReaderWriter.xml", - "ref/netcore50/zh-hant/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/System.Xml.ReaderWriter.dll", - "ref/netstandard1.0/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/de/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/es/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/fr/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/it/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/ja/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/ko/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/ru/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/zh-hans/System.Xml.ReaderWriter.xml", - "ref/netstandard1.0/zh-hant/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/System.Xml.ReaderWriter.dll", - "ref/netstandard1.3/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/de/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/es/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/fr/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/it/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/ja/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/ko/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/ru/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/zh-hans/System.Xml.ReaderWriter.xml", - "ref/netstandard1.3/zh-hant/System.Xml.ReaderWriter.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Xml.XDocument/4.0.11": { - "sha512": "Mk2mKmPi0nWaoiYeotq1dgeNK1fqWh61+EK+w4Wu8SWuTYLzpUnschb59bJtGywaPq7SmTuPf44wrXRwbIrukg==", - "type": "package", - "path": "System.Xml.XDocument/4.0.11", - "files": [ - "System.Xml.XDocument.4.0.11.nupkg.sha512", - "System.Xml.XDocument.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Xml.XDocument.dll", - "lib/netstandard1.3/System.Xml.XDocument.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Xml.XDocument.dll", - "ref/netcore50/System.Xml.XDocument.xml", - "ref/netcore50/de/System.Xml.XDocument.xml", - "ref/netcore50/es/System.Xml.XDocument.xml", - "ref/netcore50/fr/System.Xml.XDocument.xml", - "ref/netcore50/it/System.Xml.XDocument.xml", - "ref/netcore50/ja/System.Xml.XDocument.xml", - "ref/netcore50/ko/System.Xml.XDocument.xml", - "ref/netcore50/ru/System.Xml.XDocument.xml", - "ref/netcore50/zh-hans/System.Xml.XDocument.xml", - "ref/netcore50/zh-hant/System.Xml.XDocument.xml", - "ref/netstandard1.0/System.Xml.XDocument.dll", - "ref/netstandard1.0/System.Xml.XDocument.xml", - "ref/netstandard1.0/de/System.Xml.XDocument.xml", - "ref/netstandard1.0/es/System.Xml.XDocument.xml", - "ref/netstandard1.0/fr/System.Xml.XDocument.xml", - "ref/netstandard1.0/it/System.Xml.XDocument.xml", - "ref/netstandard1.0/ja/System.Xml.XDocument.xml", - "ref/netstandard1.0/ko/System.Xml.XDocument.xml", - "ref/netstandard1.0/ru/System.Xml.XDocument.xml", - "ref/netstandard1.0/zh-hans/System.Xml.XDocument.xml", - "ref/netstandard1.0/zh-hant/System.Xml.XDocument.xml", - "ref/netstandard1.3/System.Xml.XDocument.dll", - "ref/netstandard1.3/System.Xml.XDocument.xml", - "ref/netstandard1.3/de/System.Xml.XDocument.xml", - "ref/netstandard1.3/es/System.Xml.XDocument.xml", - "ref/netstandard1.3/fr/System.Xml.XDocument.xml", - "ref/netstandard1.3/it/System.Xml.XDocument.xml", - "ref/netstandard1.3/ja/System.Xml.XDocument.xml", - "ref/netstandard1.3/ko/System.Xml.XDocument.xml", - "ref/netstandard1.3/ru/System.Xml.XDocument.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XDocument.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XDocument.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Xml.XmlDocument/4.0.1": { - "sha512": "2eZu6IP+etFVBBFUFzw2w6J21DqIN5eL9Y8r8JfJWUmV28Z5P0SNU01oCisVHQgHsDhHPnmq2s1hJrJCFZWloQ==", - "type": "package", - "path": "System.Xml.XmlDocument/4.0.1", - "files": [ - "System.Xml.XmlDocument.4.0.1.nupkg.sha512", - "System.Xml.XmlDocument.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Xml.XmlDocument.dll", - "lib/netstandard1.3/System.Xml.XmlDocument.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Xml.XmlDocument.dll", - "ref/netstandard1.3/System.Xml.XmlDocument.dll", - "ref/netstandard1.3/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/de/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/es/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/fr/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/it/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/ja/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/ko/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/ru/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XmlDocument.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XmlDocument.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Xml.XmlSerializer/4.0.11": { - "sha512": "FrazwwqfIXTfq23mfv4zH+BjqkSFNaNFBtjzu3I9NRmG8EELYyrv/fJnttCIwRMFRR/YKXF1hmsMmMEnl55HGw==", - "type": "package", - "path": "System.Xml.XmlSerializer/4.0.11", - "files": [ - "System.Xml.XmlSerializer.4.0.11.nupkg.sha512", - "System.Xml.XmlSerializer.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Xml.XmlSerializer.dll", - "lib/netstandard1.3/System.Xml.XmlSerializer.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Xml.XmlSerializer.dll", - "ref/netcore50/System.Xml.XmlSerializer.xml", - "ref/netcore50/de/System.Xml.XmlSerializer.xml", - "ref/netcore50/es/System.Xml.XmlSerializer.xml", - "ref/netcore50/fr/System.Xml.XmlSerializer.xml", - "ref/netcore50/it/System.Xml.XmlSerializer.xml", - "ref/netcore50/ja/System.Xml.XmlSerializer.xml", - "ref/netcore50/ko/System.Xml.XmlSerializer.xml", - "ref/netcore50/ru/System.Xml.XmlSerializer.xml", - "ref/netcore50/zh-hans/System.Xml.XmlSerializer.xml", - "ref/netcore50/zh-hant/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/System.Xml.XmlSerializer.dll", - "ref/netstandard1.0/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/de/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/es/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/fr/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/it/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/ja/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/ko/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/ru/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/zh-hans/System.Xml.XmlSerializer.xml", - "ref/netstandard1.0/zh-hant/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/System.Xml.XmlSerializer.dll", - "ref/netstandard1.3/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/de/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/es/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/fr/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/it/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/ja/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/ko/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/ru/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XmlSerializer.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XmlSerializer.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Xml.XmlSerializer.dll" - ] - }, - "System.Xml.XPath/4.0.1": { - "sha512": "UWd1H+1IJ9Wlq5nognZ/XJdyj8qPE4XufBUkAW59ijsCPjZkZe0MUzKKJFBr+ZWBe5Wq1u1d5f2CYgE93uH7DA==", - "type": "package", - "path": "System.Xml.XPath/4.0.1", - "files": [ - "System.Xml.XPath.4.0.1.nupkg.sha512", - "System.Xml.XPath.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Xml.XPath.dll", - "lib/netstandard1.3/System.Xml.XPath.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Xml.XPath.dll", - "ref/netstandard1.3/System.Xml.XPath.dll", - "ref/netstandard1.3/System.Xml.XPath.xml", - "ref/netstandard1.3/de/System.Xml.XPath.xml", - "ref/netstandard1.3/es/System.Xml.XPath.xml", - "ref/netstandard1.3/fr/System.Xml.XPath.xml", - "ref/netstandard1.3/it/System.Xml.XPath.xml", - "ref/netstandard1.3/ja/System.Xml.XPath.xml", - "ref/netstandard1.3/ko/System.Xml.XPath.xml", - "ref/netstandard1.3/ru/System.Xml.XPath.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XPath.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XPath.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "System.Xml.XPath.XDocument/4.0.1": { - "sha512": "FLhdYJx4331oGovQypQ8JIw2kEmNzCsjVOVYY/16kZTUoquZG85oVn7yUhBE2OZt1yGPSXAL0HTEfzjlbNpM7Q==", - "type": "package", - "path": "System.Xml.XPath.XDocument/4.0.1", - "files": [ - "System.Xml.XPath.XDocument.4.0.1.nupkg.sha512", - "System.Xml.XPath.XDocument.nuspec", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Xml.XPath.XDocument.dll", - "lib/netstandard1.3/System.Xml.XPath.XDocument.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Xml.XPath.XDocument.dll", - "ref/netstandard1.3/System.Xml.XPath.XDocument.dll", - "ref/netstandard1.3/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/de/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/es/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/fr/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/it/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/ja/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/ko/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/ru/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XPath.XDocument.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XPath.XDocument.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "VideoLibrary/1.3.4": { - "sha512": "HZ2RAE9xx/sjJGnwm8etawoJXYluaYGas4bAFpE14S62NFodNKzUf7Cm9TQ+JFJxAdY+1g1FEKk1b6FPSv9aMg==", - "type": "package", - "path": "VideoLibrary/1.3.4", - "files": [ - "VideoLibrary.1.3.4.nupkg.sha512", - "VideoLibrary.nuspec", - "lib/portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10/libvideo.dll" - ] - }, - "xunit/2.1.0": { - "sha512": "u/7VQSOSXa7kSG4iK6Lcn7RqKZQ3hk7cnyMNVMpXHSP0RI5VQEtc44hvkG3LyWOVsx1dhUDD3rPAHAxyOUDQJw==", - "type": "package", - "path": "xunit/2.1.0", - "files": [ - "xunit.2.1.0.nupkg.sha512", - "xunit.nuspec" - ] - }, - "xunit.abstractions/2.0.0": { - "sha512": "NAdxKQRzuLnCZ0g++x6i87/8rMBpQoRiRlRNLAqfODm2zJPbteHRoSER3DXfxnqrHXyBJT8rFaZ8uveBeQyaMA==", - "type": "package", - "path": "xunit.abstractions/2.0.0", - "files": [ - "lib/net35/xunit.abstractions.dll", - "lib/net35/xunit.abstractions.xml", - "lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS/xunit.abstractions.dll", - "lib/portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS/xunit.abstractions.xml", - "xunit.abstractions.2.0.0.nupkg.sha512", - "xunit.abstractions.nuspec" - ] - }, - "xunit.assert/2.1.0": { - "sha512": "Hhhw+YaTe+BGhbr57dxVE+6VJk8BfThqFFii1XIsSZ4qx+SSCixprJC10JkiLRVSTfWyT8W/4nAf6NQgIrmBxA==", - "type": "package", - "path": "xunit.assert/2.1.0", - "files": [ - "lib/dotnet/xunit.assert.dll", - "lib/dotnet/xunit.assert.pdb", - "lib/dotnet/xunit.assert.xml", - "lib/portable-net45+win8+wp8+wpa81/xunit.assert.dll", - "lib/portable-net45+win8+wp8+wpa81/xunit.assert.pdb", - "lib/portable-net45+win8+wp8+wpa81/xunit.assert.xml", - "xunit.assert.2.1.0.nupkg.sha512", - "xunit.assert.nuspec" - ] - }, - "xunit.core/2.1.0": { - "sha512": "jlbYdPbnkPIRwJllcT/tQZCNsSElVDEymdpJfH79uTUrPARkELVYw9o/zhAjKZXmeikGqGK5C2Yny4gTNoEu0Q==", - "type": "package", - "path": "xunit.core/2.1.0", - "files": [ - "build/_desktop/xunit.execution.desktop.dll", - "build/dnx451/_._", - "build/monoandroid/_._", - "build/monotouch/_._", - "build/net45/_._", - "build/portable-net45+win8+wp8+wpa81/xunit.core.props", - "build/win8/_._", - "build/win81/xunit.core.props", - "build/wp8/_._", - "build/wpa81/xunit.core.props", - "build/xamarinios/_._", - "xunit.core.2.1.0.nupkg.sha512", - "xunit.core.nuspec" - ] - }, - "xunit.extensibility.core/2.1.0": { - "sha512": "ANWM3WxeaeHjACLRlmrv+xOc0WAcr3cvIiJE+gqbdzTv1NCH4p1VDyT+8WmmdCc9db0WFiJLaDy4YTYsL1wWXw==", - "type": "package", - "path": "xunit.extensibility.core/2.1.0", - "files": [ - "lib/dotnet/xunit.core.dll", - "lib/dotnet/xunit.core.dll.tdnet", - "lib/dotnet/xunit.core.pdb", - "lib/dotnet/xunit.core.xml", - "lib/dotnet/xunit.runner.tdnet.dll", - "lib/dotnet/xunit.runner.utility.desktop.dll", - "lib/portable-net45+win8+wp8+wpa81/xunit.core.dll", - "lib/portable-net45+win8+wp8+wpa81/xunit.core.dll.tdnet", - "lib/portable-net45+win8+wp8+wpa81/xunit.core.pdb", - "lib/portable-net45+win8+wp8+wpa81/xunit.core.xml", - "lib/portable-net45+win8+wp8+wpa81/xunit.runner.tdnet.dll", - "lib/portable-net45+win8+wp8+wpa81/xunit.runner.utility.desktop.dll", - "xunit.extensibility.core.2.1.0.nupkg.sha512", - "xunit.extensibility.core.nuspec" - ] - }, - "xunit.extensibility.execution/2.1.0": { - "sha512": "tAoNafoVknKa3sZJPMvtZRnhOSk3gasEGeceSm7w/gyGwsR/OXFxndWJB1xSHeoy33d3Z6jFqn4A3j+pWCF0Ew==", - "type": "package", - "path": "xunit.extensibility.execution/2.1.0", - "files": [ - "lib/dnx451/xunit.execution.dotnet.dll", - "lib/dnx451/xunit.execution.dotnet.pdb", - "lib/dnx451/xunit.execution.dotnet.xml", - "lib/dotnet/xunit.execution.dotnet.dll", - "lib/dotnet/xunit.execution.dotnet.pdb", - "lib/dotnet/xunit.execution.dotnet.xml", - "lib/monoandroid/xunit.execution.dotnet.dll", - "lib/monoandroid/xunit.execution.dotnet.pdb", - "lib/monoandroid/xunit.execution.dotnet.xml", - "lib/monotouch/xunit.execution.dotnet.dll", - "lib/monotouch/xunit.execution.dotnet.pdb", - "lib/monotouch/xunit.execution.dotnet.xml", - "lib/net45/xunit.execution.desktop.dll", - "lib/net45/xunit.execution.desktop.pdb", - "lib/net45/xunit.execution.desktop.xml", - "lib/portable-net45+win8+wp8+wpa81/xunit.execution.dotnet.dll", - "lib/portable-net45+win8+wp8+wpa81/xunit.execution.dotnet.pdb", - "lib/portable-net45+win8+wp8+wpa81/xunit.execution.dotnet.xml", - "lib/win8/xunit.execution.dotnet.dll", - "lib/win8/xunit.execution.dotnet.pdb", - "lib/win8/xunit.execution.dotnet.xml", - "lib/wp8/xunit.execution.dotnet.dll", - "lib/wp8/xunit.execution.dotnet.pdb", - "lib/wp8/xunit.execution.dotnet.xml", - "lib/wpa81/xunit.execution.dotnet.dll", - "lib/wpa81/xunit.execution.dotnet.pdb", - "lib/wpa81/xunit.execution.dotnet.xml", - "lib/xamarinios/xunit.execution.dotnet.dll", - "lib/xamarinios/xunit.execution.dotnet.pdb", - "lib/xamarinios/xunit.execution.dotnet.xml", - "xunit.extensibility.execution.2.1.0.nupkg.sha512", - "xunit.extensibility.execution.nuspec" - ] - }, - "xunit.runner.reporters/2.1.0": { - "sha512": "ja0kJrvwSiho2TRFpfHfa+6tGJI5edcyD8fdekTkjn7Us17PbGqglIihRe8sR9YFAmS4ipEC8+7CXOM/b69ENQ==", - "type": "package", - "path": "xunit.runner.reporters/2.1.0", - "files": [ - "lib/dnx451/xunit.runner.reporters.dotnet.dll", - "lib/dotnet/xunit.runner.reporters.dotnet.dll", - "lib/net45/xunit.runner.reporters.desktop.dll", - "xunit.runner.reporters.2.1.0.nupkg.sha512", - "xunit.runner.reporters.nuspec" - ] - }, - "xunit.runner.utility/2.1.0": { - "sha512": "jJJHROwskIhdQuYw7exe7KaW20dOCa+lzV/lY7Zdh1ZZzdUPpScMi9ReJIutqiyjhemGF8V/GaMIPrcjyZ4ioQ==", - "type": "package", - "path": "xunit.runner.utility/2.1.0", - "files": [ - "lib/dnx451/xunit.runner.utility.dotnet.dll", - "lib/dnx451/xunit.runner.utility.dotnet.pdb", - "lib/dnx451/xunit.runner.utility.dotnet.xml", - "lib/dotnet/xunit.runner.utility.dotnet.dll", - "lib/dotnet/xunit.runner.utility.dotnet.pdb", - "lib/dotnet/xunit.runner.utility.dotnet.xml", - "lib/net35/xunit.runner.utility.desktop.dll", - "lib/net35/xunit.runner.utility.desktop.pdb", - "lib/net35/xunit.runner.utility.desktop.xml", - "lib/portable-net45+win8+wp8+wpa81/xunit.runner.utility.dotnet.dll", - "lib/portable-net45+win8+wp8+wpa81/xunit.runner.utility.dotnet.pdb", - "lib/portable-net45+win8+wp8+wpa81/xunit.runner.utility.dotnet.xml", - "xunit.runner.utility.2.1.0.nupkg.sha512", - "xunit.runner.utility.nuspec" - ] - }, - "Discord.Net/1.0.0-beta": { - "type": "project", - "path": "../../discord.net/src/Discord.Net/project.json", - "msbuildProject": "../../discord.net/src/Discord.Net/Discord.Net.xproj" - }, - "Discord.Net.Commands/1.0.0-beta": { - "type": "project", - "path": "../../discord.net/src/Discord.Net.Commands/project.json", - "msbuildProject": "../../discord.net/src/Discord.Net.Commands/Discord.Net.Commands.xproj" - }, - "NadekoBot/1.0.0": { - "type": "project", - "path": "../NadekoBot/project.json", - "msbuildProject": "../NadekoBot/NadekoBot.xproj" - } - }, - "projectFileDependencyGroups": { - "": [ - "NadekoBot >= 1.0.0-*", - "System.Runtime.Serialization.Primitives >= 4.1.1", - "dotnet-test-xunit >= 1.0.0-rc2-192208-24", - "xunit >= 2.1.0" - ], - ".NETCoreApp,Version=v1.0": [ - "Microsoft.NETCore.App >= 1.0.0" - ] - }, - "tools": {}, - "projectFileToolGroups": {} -} \ No newline at end of file From 3136560f1500fbc82f96aa6bd506970d84567826 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Thu, 6 Oct 2016 19:19:42 +0200 Subject: [PATCH 35/74] Help command now in db, .showemojis added, permissions more optimal --- .../Commands/CrossServerTextChannel.cs | 3 + .../Games/Commands/PlantAndPickCommands.cs | 2 +- .../Modules/Games/Commands/PollCommands.cs | 2 +- .../Games/Commands/SpeedTypingCommands.cs | 2 + .../Games/Commands/Trivia/TriviaGame.cs | 2 + src/NadekoBot/Modules/Help/Help.cs | 59 +- .../Modules/Permissions/Permissions.cs | 100 +- src/NadekoBot/Modules/Utility/Utility.cs | 17 +- .../Resources/CommandStrings.Designer.cs | 3032 ++++++++--------- src/NadekoBot/Resources/CommandStrings.resx | 9 + .../Services/Database/Models/BotConfig.cs | 15 +- .../Repositories/IGuildConfigRepository.cs | 1 + .../Impl/GuildConfigRepository.cs | 11 + 13 files changed, 1605 insertions(+), 1650 deletions(-) diff --git a/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs b/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs index bc2821ed..c1a746d7 100644 --- a/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs +++ b/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs @@ -23,6 +23,9 @@ namespace NadekoBot.Modules.Administration _log = LogManager.GetCurrentClassLogger(); NadekoBot.Client.MessageReceived += (imsg) => { + if (imsg.Author.IsBot) + return Task.CompletedTask; + var msg = imsg as IUserMessage; if (msg == null) return Task.CompletedTask; diff --git a/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs b/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs index 9bde265a..022e8f13 100644 --- a/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/PlantAndPickCommands.cs @@ -64,7 +64,7 @@ namespace NadekoBot.Modules.Games private Task PotentialFlowerGeneration(IMessage imsg) { var msg = imsg as IUserMessage; - if (msg == null || msg.IsAuthor()) + if (msg == null || msg.IsAuthor() || msg.Author.IsBot) return Task.CompletedTask; var channel = imsg.Channel as ITextChannel; diff --git a/src/NadekoBot/Modules/Games/Commands/PollCommands.cs b/src/NadekoBot/Modules/Games/Commands/PollCommands.cs index 7df37330..5daf7add 100644 --- a/src/NadekoBot/Modules/Games/Commands/PollCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/PollCommands.cs @@ -111,7 +111,7 @@ namespace NadekoBot.Modules.Games { // has to be a user message var msg = imsg as IUserMessage; - if (msg == null) + if (msg == null || msg.Author.IsBot) return Task.CompletedTask; // channel must be private IPrivateChannel ch; diff --git a/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs b/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs index 7d33ae31..624bb9d8 100644 --- a/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs @@ -101,6 +101,8 @@ namespace NadekoBot.Modules.Games private Task AnswerReceived(IMessage imsg) { + if (imsg.Author.IsBot) + return Task.CompletedTask; var msg = imsg as IUserMessage; if (msg == null) return Task.CompletedTask; diff --git a/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaGame.cs b/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaGame.cs index 9ca62599..2356a6a7 100644 --- a/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaGame.cs +++ b/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaGame.cs @@ -106,6 +106,8 @@ namespace NadekoBot.Modules.Games.Trivia private Task PotentialGuess(IMessage imsg) { + if (imsg.Author.IsBot) + return Task.CompletedTask; var umsg = imsg as IUserMessage; if (umsg == null) return Task.CompletedTask; diff --git a/src/NadekoBot/Modules/Help/Help.cs b/src/NadekoBot/Modules/Help/Help.cs index 5787d483..ae8c725e 100644 --- a/src/NadekoBot/Modules/Help/Help.cs +++ b/src/NadekoBot/Modules/Help/Help.cs @@ -11,31 +11,40 @@ using System.Text; using Discord.WebSocket; using System.Collections; using System.Collections.Generic; +using NadekoBot.Services.Database; +using System.Threading; namespace NadekoBot.Modules.Help { [NadekoModule("Help", "-")] public partial class Help : DiscordModule { - public string HelpString { - get { - var str = @"To add me to your server, use this link -> -You can use `{1}modules` command to see a list of all modules. -You can use `{1}commands ModuleName` -(for example `{1}commands Administration`) to see a list of all of the commands in that module. -For a specific command help, use `{1}h CommandName` (for example {1}h !!q) + private static string helpString { get; } + public static string HelpString => String.Format(helpString, NadekoBot.Credentials.ClientId, NadekoBot.ModulePrefixes[typeof(Help).Name]); + public static string DMHelpString { get; } -**LIST OF COMMANDS CAN BE FOUND ON THIS LINK** - - - -Nadeko Support Server: https://discord.gg/0ehQwTK2RBjAxzEY"; - return String.Format(str, NadekoBot.Credentials.ClientId, NadekoBot.ModulePrefixes[typeof(Help).Name]); + static Help() + { + using (var uow = DbHandler.UnitOfWork()) + { + var config = uow.BotConfig.GetOrCreate(); + helpString = config.HelpString; + DMHelpString = config.DMHelpString; } } + public Help(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client) { + client.MessageReceived += async (msg) => + { + if (msg.Author.IsBot) + return; + if (msg.Channel is IPrivateChannel) + { + await msg.Channel.SendMessageAsync(DMHelpString).ConfigureAwait(false); + } + }; } [NadekoCommand, Usage, Description, Aliases] @@ -44,6 +53,30 @@ Nadeko Support Server: https://discord.gg/0ehQwTK2RBjAxzEY"; await umsg.Channel.SendMessageAsync("`List of modules:` ```xl\n• " + string.Join("\n• ", _commands.Modules.Select(m => m.Name)) + $"\n``` `Type \"-commands module_name\" to get a list of commands in that module.`") .ConfigureAwait(false); + + await RunWithTypingIntheBackgorund(async () => + { + await Task.Delay(100000); + }, umsg); + } + + private async Task RunWithTypingIntheBackgorund(Func someFUnc, IUserMessage ctx) + { + var cancelSource = new CancellationTokenSource(); + var cancelToken = cancelSource.Token; + var t = Task.Run(async () => + { + while (!cancelToken.IsCancellationRequested) + { + await Task.Delay(10000); + await ctx.Channel.TriggerTypingAsync(); + } + }, cancelToken); + try + { + await someFUnc(); + } + finally { cancelSource.Cancel(); } } [NadekoCommand, Usage, Description, Aliases] diff --git a/src/NadekoBot/Modules/Permissions/Permissions.cs b/src/NadekoBot/Modules/Permissions/Permissions.cs index 0dfdbd5d..53dcc145 100644 --- a/src/NadekoBot/Modules/Permissions/Permissions.cs +++ b/src/NadekoBot/Modules/Permissions/Permissions.cs @@ -176,8 +176,7 @@ namespace NadekoBot.Modules.Permissions SecondaryTargetName = command.Text.ToLowerInvariant(), State = action.Value, }; - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; + uow.GuildConfigs.SetNewRootPermission(channel.Guild.Id, newPerm); await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{command.Text}` command on this server.").ConfigureAwait(false); @@ -199,8 +198,7 @@ namespace NadekoBot.Modules.Permissions SecondaryTargetName = module.Name.ToLowerInvariant(), State = action.Value, }; - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; + uow.GuildConfigs.SetNewRootPermission(channel.Guild.Id, newPerm); await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{module.Name}` module on this server.").ConfigureAwait(false); @@ -222,8 +220,7 @@ namespace NadekoBot.Modules.Permissions SecondaryTargetName = command.Text.ToLowerInvariant(), State = action.Value, }; - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; + uow.GuildConfigs.SetNewRootPermission(channel.Guild.Id, newPerm); await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{command.Text}` command for `{user}` user.").ConfigureAwait(false); @@ -245,8 +242,7 @@ namespace NadekoBot.Modules.Permissions SecondaryTargetName = module.Name.ToLowerInvariant(), State = action.Value, }; - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; + uow.GuildConfigs.SetNewRootPermission(channel.Guild.Id, newPerm); await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{module.Name}` module for `{user}` user.").ConfigureAwait(false); @@ -268,8 +264,7 @@ namespace NadekoBot.Modules.Permissions SecondaryTargetName = command.Text.ToLowerInvariant(), State = action.Value, }; - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; + uow.GuildConfigs.SetNewRootPermission(channel.Guild.Id, newPerm); await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{command.Text}` command for `{role}` role.").ConfigureAwait(false); @@ -291,8 +286,7 @@ namespace NadekoBot.Modules.Permissions SecondaryTargetName = module.Name.ToLowerInvariant(), State = action.Value, }; - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; + uow.GuildConfigs.SetNewRootPermission(channel.Guild.Id, newPerm); await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{module.Name}` module for `{role}` role.").ConfigureAwait(false); @@ -315,8 +309,7 @@ namespace NadekoBot.Modules.Permissions SecondaryTargetName = command.Text.ToLowerInvariant(), State = action.Value, }; - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; + uow.GuildConfigs.SetNewRootPermission(channel.Guild.Id, newPerm); await uow.CompleteAsync().ConfigureAwait(false); } } @@ -342,8 +335,7 @@ namespace NadekoBot.Modules.Permissions SecondaryTargetName = module.Name.ToLowerInvariant(), State = action.Value, }; - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; + uow.GuildConfigs.SetNewRootPermission(channel.Guild.Id, newPerm); await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{module.Name}` module for `{chnl}` channel.").ConfigureAwait(false); @@ -365,8 +357,7 @@ namespace NadekoBot.Modules.Permissions SecondaryTargetName = "*", State = action.Value, }; - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; + uow.GuildConfigs.SetNewRootPermission(channel.Guild.Id, newPerm); await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL MODULES` for `{chnl}` channel.").ConfigureAwait(false); @@ -388,8 +379,7 @@ namespace NadekoBot.Modules.Permissions SecondaryTargetName = "*", State = action.Value, }; - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; + uow.GuildConfigs.SetNewRootPermission(channel.Guild.Id, newPerm); await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL MODULES` for `{role}` role.").ConfigureAwait(false); @@ -411,8 +401,7 @@ namespace NadekoBot.Modules.Permissions SecondaryTargetName = "*", State = action.Value, }; - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; + uow.GuildConfigs.SetNewRootPermission(channel.Guild.Id, newPerm); await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL MODULES` for `{user}` user.").ConfigureAwait(false); @@ -434,75 +423,10 @@ namespace NadekoBot.Modules.Permissions SecondaryTargetName = "*", State = action.Value, }; - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Prepend(newPerm); - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = newPerm; + uow.GuildConfigs.SetNewRootPermission(channel.Guild.Id, newPerm); await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL MODULES` on this server.").ConfigureAwait(false); } - - //[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] - //[RequireContext(ContextType.Guild)] - //public async Task AllChnlCmds(IUserMessage imsg, Module module, PermissionAction action, ITextChannel chnl) - //{ - // var channel = (ITextChannel)imsg.Channel; - - // using (var uow = DbHandler.UnitOfWork()) - // { - // uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Add(new Permission - // { - // PrimaryTarget = PrimaryPermissionType.Channel, - // PrimaryTargetId = chnl.Id, - // SecondaryTarget = SecondaryPermissionType.AllCommands, - // SecondaryTargetName = module.Name.ToLowerInvariant(), - // State = action.Value, - // }); - // await uow.CompleteAsync().ConfigureAwait(false); - // } - // await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL COMMANDS` from `{module.Name}` module for `{chnl}` channel.").ConfigureAwait(false); - //} - - //[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] - //[RequireContext(ContextType.Guild)] - //public async Task AllRoleCmds(IUserMessage imsg, Module module, PermissionAction action, IRole role) - //{ - // var channel = (ITextChannel)imsg.Channel; - - // using (var uow = DbHandler.UnitOfWork()) - // { - // uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Add(new Permission - // { - // PrimaryTarget = PrimaryPermissionType.Role, - // PrimaryTargetId = role.Id, - // SecondaryTarget = SecondaryPermissionType.AllCommands, - // SecondaryTargetName = module.Name.ToLowerInvariant(), - // State = action.Value, - // }); - // await uow.CompleteAsync().ConfigureAwait(false); - // } - // await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL COMMANDS` from `{module.Name}` module for `{role}` role.").ConfigureAwait(false); - //} - - //[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias] - //[RequireContext(ContextType.Guild)] - //public async Task AllUsrCmds(IUserMessage imsg, Module module, PermissionAction action, IUser user) - //{ - // var channel = (ITextChannel)imsg.Channel; - - // using (var uow = DbHandler.UnitOfWork()) - // { - // uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Add(new Permission - // { - // PrimaryTarget = PrimaryPermissionType.User, - // PrimaryTargetId = user.Id, - // SecondaryTarget = SecondaryPermissionType.AllCommands, - // SecondaryTargetName = module.Name.ToLowerInvariant(), - // State = action.Value, - // }); - // await uow.CompleteAsync().ConfigureAwait(false); - // } - // await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL COMMANDS` from `{module.Name}` module for `{user}` user.").ConfigureAwait(false); - //} - } } diff --git a/src/NadekoBot/Modules/Utility/Utility.cs b/src/NadekoBot/Modules/Utility/Utility.cs index 1a009a2c..ced8457c 100644 --- a/src/NadekoBot/Modules/Utility/Utility.cs +++ b/src/NadekoBot/Modules/Utility/Utility.cs @@ -144,13 +144,26 @@ namespace NadekoBot.Modules.Utility } [NadekoCommand, Usage, Description, Aliases] - [RequireContext(ContextType.Guild)] public async Task Stats(IUserMessage umsg) { - var channel = (ITextChannel)umsg.Channel; + var channel = umsg.Channel; await channel.SendMessageAsync(await NadekoBot.Stats.Print()); } + + private Regex emojiFinder { get; } = new Regex(@"<:(?.+?):(?\d*)>", RegexOptions.Compiled); + [NadekoCommand, Usage, Description, Aliases] + public async Task Showemojis(IUserMessage msg, [Remainder] string emojis) + { + var matches = emojiFinder.Matches(emojis); + + + + var result = string.Join("\n", matches.Cast() + .Select(m => $"`Name:` {m.Groups["name"]} `Link:` http://discordapp.com/api/emojis/{m.Groups["id"]}.png")); + + await msg.Channel.SendMessageAsync(result).ConfigureAwait(false); + } } } diff --git a/src/NadekoBot/Resources/CommandStrings.Designer.cs b/src/NadekoBot/Resources/CommandStrings.Designer.cs index d08d5fa9..93a1032b 100644 --- a/src/NadekoBot/Resources/CommandStrings.Designer.cs +++ b/src/NadekoBot/Resources/CommandStrings.Designer.cs @@ -59,6 +59,15 @@ namespace NadekoBot.Resources { } } + /// + /// Looks up a localized string similar to 8ball. + /// + public static string _8ball_cmd { + get { + return ResourceManager.GetString("_8ball_cmd", resourceCulture); + } + } + /// /// Looks up a localized string similar to Ask the 8ball a yes/no question.. /// @@ -71,18 +80,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `>8ball should i do something`. /// - public static string _8ball_summary { + public static string _8ball_usage { get { - return ResourceManager.GetString("_8ball_summary", resourceCulture); + return ResourceManager.GetString("_8ball_usage", resourceCulture); } } /// - /// Looks up a localized string similar to 8ball. + /// Looks up a localized string similar to addcustreact acr. /// - public static string _8ball_text { + public static string addcustreact_cmd { get { - return ResourceManager.GetString("_8ball_text", resourceCulture); + return ResourceManager.GetString("addcustreact_cmd", resourceCulture); } } @@ -98,18 +107,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.acr "hello" Hi there %user%`. /// - public static string addcustreact_summary { + public static string addcustreact_usage { get { - return ResourceManager.GetString("addcustreact_summary", resourceCulture); + return ResourceManager.GetString("addcustreact_usage", resourceCulture); } } /// - /// Looks up a localized string similar to addcustreact acr. + /// Looks up a localized string similar to addplaying adpl. /// - public static string addcustreact_text { + public static string addplaying_cmd { get { - return ResourceManager.GetString("addcustreact_text", resourceCulture); + return ResourceManager.GetString("addplaying_cmd", resourceCulture); } } @@ -125,18 +134,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.adpl`. /// - public static string addplaying_summary { + public static string addplaying_usage { get { - return ResourceManager.GetString("addplaying_summary", resourceCulture); + return ResourceManager.GetString("addplaying_usage", resourceCulture); } } /// - /// Looks up a localized string similar to addplaying adpl. + /// Looks up a localized string similar to .. /// - public static string addplaying_text { + public static string addquote_cmd { get { - return ResourceManager.GetString("addplaying_text", resourceCulture); + return ResourceManager.GetString("addquote_cmd", resourceCulture); } } @@ -152,18 +161,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.. sayhi Hi`. /// - public static string addquote_summary { + public static string addquote_usage { get { - return ResourceManager.GetString("addquote_summary", resourceCulture); + return ResourceManager.GetString("addquote_usage", resourceCulture); } } /// - /// Looks up a localized string similar to .. + /// Looks up a localized string similar to allchnlmdls acm. /// - public static string addquote_text { + public static string allchnlmdls_cmd { get { - return ResourceManager.GetString("addquote_text", resourceCulture); + return ResourceManager.GetString("allchnlmdls_cmd", resourceCulture); } } @@ -179,18 +188,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;acm enable #SomeChannel`. /// - public static string allchnlmdls_summary { + public static string allchnlmdls_usage { get { - return ResourceManager.GetString("allchnlmdls_summary", resourceCulture); + return ResourceManager.GetString("allchnlmdls_usage", resourceCulture); } } /// - /// Looks up a localized string similar to allchnlmdls acm. + /// Looks up a localized string similar to allcmdcooldowns acmdcds. /// - public static string allchnlmdls_text { + public static string allcmdcooldowns_cmd { get { - return ResourceManager.GetString("allchnlmdls_text", resourceCulture); + return ResourceManager.GetString("allcmdcooldowns_cmd", resourceCulture); } } @@ -206,18 +215,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;acmdcds`. /// - public static string allcmdcooldowns_summary { + public static string allcmdcooldowns_usage { get { - return ResourceManager.GetString("allcmdcooldowns_summary", resourceCulture); + return ResourceManager.GetString("allcmdcooldowns_usage", resourceCulture); } } /// - /// Looks up a localized string similar to allcmdcooldowns acmdcds. + /// Looks up a localized string similar to allrolemdls arm. /// - public static string allcmdcooldowns_text { + public static string allrolemdls_cmd { get { - return ResourceManager.GetString("allcmdcooldowns_text", resourceCulture); + return ResourceManager.GetString("allrolemdls_cmd", resourceCulture); } } @@ -233,18 +242,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;arm [enable/disable] MyRole`. /// - public static string allrolemdls_summary { + public static string allrolemdls_usage { get { - return ResourceManager.GetString("allrolemdls_summary", resourceCulture); + return ResourceManager.GetString("allrolemdls_usage", resourceCulture); } } /// - /// Looks up a localized string similar to allrolemdls arm. + /// Looks up a localized string similar to allsrvrmdls asm. /// - public static string allrolemdls_text { + public static string allsrvrmdls_cmd { get { - return ResourceManager.GetString("allrolemdls_text", resourceCulture); + return ResourceManager.GetString("allsrvrmdls_cmd", resourceCulture); } } @@ -260,18 +269,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;asm [enable/disable]`. /// - public static string allsrvrmdls_summary { + public static string allsrvrmdls_usage { get { - return ResourceManager.GetString("allsrvrmdls_summary", resourceCulture); + return ResourceManager.GetString("allsrvrmdls_usage", resourceCulture); } } /// - /// Looks up a localized string similar to allsrvrmdls asm. + /// Looks up a localized string similar to allusrmdls aum. /// - public static string allsrvrmdls_text { + public static string allusrmdls_cmd { get { - return ResourceManager.GetString("allsrvrmdls_text", resourceCulture); + return ResourceManager.GetString("allusrmdls_cmd", resourceCulture); } } @@ -287,18 +296,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;aum enable @someone`. /// - public static string allusrmdls_summary { + public static string allusrmdls_usage { get { - return ResourceManager.GetString("allusrmdls_summary", resourceCulture); + return ResourceManager.GetString("allusrmdls_usage", resourceCulture); } } /// - /// Looks up a localized string similar to allusrmdls aum. + /// Looks up a localized string similar to ani anime aq. /// - public static string allusrmdls_text { + public static string ani_cmd { get { - return ResourceManager.GetString("allusrmdls_text", resourceCulture); + return ResourceManager.GetString("ani_cmd", resourceCulture); } } @@ -314,18 +323,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~ani aquarion evol`. /// - public static string ani_summary { + public static string ani_usage { get { - return ResourceManager.GetString("ani_summary", resourceCulture); + return ResourceManager.GetString("ani_usage", resourceCulture); } } /// - /// Looks up a localized string similar to ani anime aq. + /// Looks up a localized string similar to announce. /// - public static string ani_text { + public static string announce_cmd { get { - return ResourceManager.GetString("ani_text", resourceCulture); + return ResourceManager.GetString("announce_cmd", resourceCulture); } } @@ -341,18 +350,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.announce Useless spam`. /// - public static string announce_summary { + public static string announce_usage { get { - return ResourceManager.GetString("announce_summary", resourceCulture); + return ResourceManager.GetString("announce_usage", resourceCulture); } } /// - /// Looks up a localized string similar to announce. + /// Looks up a localized string similar to asar. /// - public static string announce_text { + public static string asar_cmd { get { - return ResourceManager.GetString("announce_text", resourceCulture); + return ResourceManager.GetString("asar_cmd", resourceCulture); } } @@ -368,18 +377,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.asar Gamer`. /// - public static string asar_summary { + public static string asar_usage { get { - return ResourceManager.GetString("asar_summary", resourceCulture); + return ResourceManager.GetString("asar_usage", resourceCulture); } } /// - /// Looks up a localized string similar to asar. + /// Looks up a localized string similar to attack. /// - public static string asar_text { + public static string attack_cmd { get { - return ResourceManager.GetString("asar_text", resourceCulture); + return ResourceManager.GetString("attack_cmd", resourceCulture); } } @@ -395,18 +404,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `>attack "vine whip" @someguy`. /// - public static string attack_summary { + public static string attack_usage { get { - return ResourceManager.GetString("attack_summary", resourceCulture); + return ResourceManager.GetString("attack_usage", resourceCulture); } } /// - /// Looks up a localized string similar to attack. + /// Looks up a localized string similar to autoassignrole aar. /// - public static string attack_text { + public static string autoassignrole_cmd { get { - return ResourceManager.GetString("attack_text", resourceCulture); + return ResourceManager.GetString("autoassignrole_cmd", resourceCulture); } } @@ -422,18 +431,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.aar` to disable, `.aar Role Name` to enable. /// - public static string autoassignrole_summary { + public static string autoassignrole_usage { get { - return ResourceManager.GetString("autoassignrole_summary", resourceCulture); + return ResourceManager.GetString("autoassignrole_usage", resourceCulture); } } /// - /// Looks up a localized string similar to autoassignrole aar. + /// Looks up a localized string similar to autoplay ap. /// - public static string autoassignrole_text { + public static string autoplay_cmd { get { - return ResourceManager.GetString("autoassignrole_text", resourceCulture); + return ResourceManager.GetString("autoplay_cmd", resourceCulture); } } @@ -449,18 +458,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!ap`. /// - public static string autoplay_summary { + public static string autoplay_usage { get { - return ResourceManager.GetString("autoplay_summary", resourceCulture); + return ResourceManager.GetString("autoplay_usage", resourceCulture); } } /// - /// Looks up a localized string similar to autoplay ap. + /// Looks up a localized string similar to av avatar. /// - public static string autoplay_text { + public static string avatar_cmd { get { - return ResourceManager.GetString("autoplay_text", resourceCulture); + return ResourceManager.GetString("avatar_cmd", resourceCulture); } } @@ -476,23 +485,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~av "@SomeGuy"`. /// - public static string avatar_summary { + public static string avatar_usage { get { - return ResourceManager.GetString("avatar_summary", resourceCulture); + return ResourceManager.GetString("avatar_usage", resourceCulture); } } /// - /// Looks up a localized string similar to av avatar. + /// Looks up a localized string similar to award. /// - public static string avatar_text { + public static string award_cmd { get { - return ResourceManager.GetString("avatar_text", resourceCulture); + return ResourceManager.GetString("award_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Gives someone a certain amount of flowers. **Bot Owner Only!**. + /// Looks up a localized string similar to Gives someone a certain amount of flowers. . /// public static string award_desc { get { @@ -503,18 +512,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `$award 100 @person`. /// - public static string award_summary { + public static string award_usage { get { - return ResourceManager.GetString("award_summary", resourceCulture); + return ResourceManager.GetString("award_usage", resourceCulture); } } /// - /// Looks up a localized string similar to award. + /// Looks up a localized string similar to ban b. /// - public static string award_text { + public static string ban_cmd { get { - return ResourceManager.GetString("award_text", resourceCulture); + return ResourceManager.GetString("ban_cmd", resourceCulture); } } @@ -530,18 +539,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.b "@some Guy" Your behaviour is toxic.`. /// - public static string ban_summary { + public static string ban_usage { get { - return ResourceManager.GetString("ban_summary", resourceCulture); + return ResourceManager.GetString("ban_usage", resourceCulture); } } /// - /// Looks up a localized string similar to ban b. + /// Looks up a localized string similar to beam bm. /// - public static string ban_text { + public static string beam_cmd { get { - return ResourceManager.GetString("ban_text", resourceCulture); + return ResourceManager.GetString("beam_cmd", resourceCulture); } } @@ -557,18 +566,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~beam SomeStreamer`. /// - public static string beam_summary { + public static string beam_usage { get { - return ResourceManager.GetString("beam_summary", resourceCulture); + return ResourceManager.GetString("beam_usage", resourceCulture); } } /// - /// Looks up a localized string similar to beam bm. + /// Looks up a localized string similar to betflip bf. /// - public static string beam_text { + public static string betflip_cmd { get { - return ResourceManager.GetString("beam_text", resourceCulture); + return ResourceManager.GetString("betflip_cmd", resourceCulture); } } @@ -584,18 +593,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `$bf 5 heads` or `$bf 3 t`. /// - public static string betflip_summary { + public static string betflip_usage { get { - return ResourceManager.GetString("betflip_summary", resourceCulture); + return ResourceManager.GetString("betflip_usage", resourceCulture); } } /// - /// Looks up a localized string similar to betflip bf. + /// Looks up a localized string similar to betroll br. /// - public static string betflip_text { + public static string betroll_cmd { get { - return ResourceManager.GetString("betflip_text", resourceCulture); + return ResourceManager.GetString("betroll_cmd", resourceCulture); } } @@ -611,23 +620,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `$br 5`. /// - public static string betroll_summary { + public static string betroll_usage { get { - return ResourceManager.GetString("betroll_summary", resourceCulture); + return ResourceManager.GetString("betroll_usage", resourceCulture); } } /// - /// Looks up a localized string similar to betroll br. + /// Looks up a localized string similar to bind. /// - public static string betroll_text { + public static string bind_cmd { get { - return ResourceManager.GetString("betroll_text", resourceCulture); + return ResourceManager.GetString("bind_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Bind a trello bot to a single channel. You will receive notifications from your board when something is added or edited. **Bot Owner Only!**. + /// Looks up a localized string similar to Bind a trello bot to a single channel. You will receive notifications from your board when something is added or edited.. /// public static string bind_desc { get { @@ -638,18 +647,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `trello bind [board_id]`. /// - public static string bind_summary { + public static string bind_usage { get { - return ResourceManager.GetString("bind_summary", resourceCulture); + return ResourceManager.GetString("bind_usage", resourceCulture); } } /// - /// Looks up a localized string similar to bind. + /// Looks up a localized string similar to boobs. /// - public static string bind_text { + public static string boobs_cmd { get { - return ResourceManager.GetString("bind_text", resourceCulture); + return ResourceManager.GetString("boobs_cmd", resourceCulture); } } @@ -665,18 +674,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~boobs`. /// - public static string boobs_summary { + public static string boobs_usage { get { - return ResourceManager.GetString("boobs_summary", resourceCulture); + return ResourceManager.GetString("boobs_usage", resourceCulture); } } /// - /// Looks up a localized string similar to boobs. + /// Looks up a localized string similar to butts ass butt. /// - public static string boobs_text { + public static string butts_cmd { get { - return ResourceManager.GetString("boobs_text", resourceCulture); + return ResourceManager.GetString("butts_cmd", resourceCulture); } } @@ -692,18 +701,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~butts` or `~ass`. /// - public static string butts_summary { + public static string butts_usage { get { - return ResourceManager.GetString("butts_summary", resourceCulture); + return ResourceManager.GetString("butts_usage", resourceCulture); } } /// - /// Looks up a localized string similar to butts ass butt. + /// Looks up a localized string similar to bye. /// - public static string butts_text { + public static string bye_cmd { get { - return ResourceManager.GetString("butts_text", resourceCulture); + return ResourceManager.GetString("bye_cmd", resourceCulture); } } @@ -719,23 +728,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.bye`. /// - public static string bye_summary { + public static string bye_usage { get { - return ResourceManager.GetString("bye_summary", resourceCulture); + return ResourceManager.GetString("bye_usage", resourceCulture); } } /// - /// Looks up a localized string similar to bye. + /// Looks up a localized string similar to byedel. /// - public static string bye_text { + public static string byedel_cmd { get { - return ResourceManager.GetString("bye_text", resourceCulture); + return ResourceManager.GetString("byedel_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Toggles automatic deletion of bye messages. **Needs Manage Server Permissions.**. + /// Looks up a localized string similar to Toggles automatic deletion of bye messages. . /// public static string byedel_desc { get { @@ -746,23 +755,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.byedel`. /// - public static string byedel_summary { + public static string byedel_usage { get { - return ResourceManager.GetString("byedel_summary", resourceCulture); + return ResourceManager.GetString("byedel_usage", resourceCulture); } } /// - /// Looks up a localized string similar to byedel. + /// Looks up a localized string similar to byemsg. /// - public static string byedel_text { + public static string byemsg_cmd { get { - return ResourceManager.GetString("byedel_text", resourceCulture); + return ResourceManager.GetString("byemsg_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Sets a new leave announcement message. Type %user% if you want to mention the new member. Using it with no message will show the current bye message. **Needs Manage Server Permissions.**. + /// Looks up a localized string similar to Sets a new leave announcement message. Type %user% if you want to mention the new member. Using it with no message will show the current bye message. . /// public static string byemsg_desc { get { @@ -773,18 +782,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.byemsg %user% has left.`. /// - public static string byemsg_summary { + public static string byemsg_usage { get { - return ResourceManager.GetString("byemsg_summary", resourceCulture); + return ResourceManager.GetString("byemsg_usage", resourceCulture); } } /// - /// Looks up a localized string similar to byemsg. + /// Looks up a localized string similar to calcops. /// - public static string byemsg_text { + public static string calcops_cmd { get { - return ResourceManager.GetString("byemsg_text", resourceCulture); + return ResourceManager.GetString("calcops_cmd", resourceCulture); } } @@ -800,18 +809,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.calcops`. /// - public static string calcops_summary { + public static string calcops_usage { get { - return ResourceManager.GetString("calcops_summary", resourceCulture); + return ResourceManager.GetString("calcops_usage", resourceCulture); } } /// - /// Looks up a localized string similar to calcops. + /// Looks up a localized string similar to calculate calc. /// - public static string calcops_text { + public static string calculate_cmd { get { - return ResourceManager.GetString("calcops_text", resourceCulture); + return ResourceManager.GetString("calculate_cmd", resourceCulture); } } @@ -827,23 +836,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~calc 1+1`. /// - public static string calculate_summary { + public static string calculate_usage { get { - return ResourceManager.GetString("calculate_summary", resourceCulture); + return ResourceManager.GetString("calculate_usage", resourceCulture); } } /// - /// Looks up a localized string similar to calculate calc. + /// Looks up a localized string similar to cards. /// - public static string calculate_text { + public static string cards_cmd { get { - return ResourceManager.GetString("calculate_text", resourceCulture); + return ResourceManager.GetString("cards_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Lists all cards from the supplied list. You can supply either a name or an index. **Bot Owner Only!**. + /// Looks up a localized string similar to Lists all cards from the supplied list. You can supply either a name or an index.. /// public static string cards_desc { get { @@ -854,18 +863,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `trello cards index`. /// - public static string cards_summary { + public static string cards_usage { get { - return ResourceManager.GetString("cards_summary", resourceCulture); + return ResourceManager.GetString("cards_usage", resourceCulture); } } /// - /// Looks up a localized string similar to cards. + /// Looks up a localized string similar to cash $$. /// - public static string cards_text { + public static string cash_cmd { get { - return ResourceManager.GetString("cards_text", resourceCulture); + return ResourceManager.GetString("cash_cmd", resourceCulture); } } @@ -881,18 +890,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `$$$` or `$$$ @SomeGuy`. /// - public static string cash_summary { + public static string cash_usage { get { - return ResourceManager.GetString("cash_summary", resourceCulture); + return ResourceManager.GetString("cash_usage", resourceCulture); } } /// - /// Looks up a localized string similar to cash $$. + /// Looks up a localized string similar to catfact. /// - public static string cash_text { + public static string catfact_cmd { get { - return ResourceManager.GetString("cash_text", resourceCulture); + return ResourceManager.GetString("catfact_cmd", resourceCulture); } } @@ -908,23 +917,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~catfact`. /// - public static string catfact_summary { + public static string catfact_usage { get { - return ResourceManager.GetString("catfact_summary", resourceCulture); + return ResourceManager.GetString("catfact_usage", resourceCulture); } } /// - /// Looks up a localized string similar to catfact. + /// Looks up a localized string similar to cbl. /// - public static string catfact_text { + public static string channelblacklist_cmd { get { - return ResourceManager.GetString("catfact_text", resourceCulture); + return ResourceManager.GetString("channelblacklist_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Blacklists a mentioned channel (#general for example).. + /// Looks up a localized string similar to Either [add]s or [rem]oves a channel specified by an ID from a blacklist.. /// public static string channelblacklist_desc { get { @@ -933,20 +942,20 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `;cbl #some_channel`. + /// Looks up a localized string similar to `;cbl rem 12312312312`. /// - public static string channelblacklist_summary { + public static string channelblacklist_usage { get { - return ResourceManager.GetString("channelblacklist_summary", resourceCulture); + return ResourceManager.GetString("channelblacklist_usage", resourceCulture); } } /// - /// Looks up a localized string similar to cbl. + /// Looks up a localized string similar to channelid cid. /// - public static string channelblacklist_text { + public static string channelid_cmd { get { - return ResourceManager.GetString("channelblacklist_text", resourceCulture); + return ResourceManager.GetString("channelid_cmd", resourceCulture); } } @@ -962,18 +971,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.cid`. /// - public static string channelid_summary { + public static string channelid_usage { get { - return ResourceManager.GetString("channelid_summary", resourceCulture); + return ResourceManager.GetString("channelid_usage", resourceCulture); } } /// - /// Looks up a localized string similar to channelid cid. + /// Looks up a localized string similar to channelinfo cinfo. /// - public static string channelid_text { + public static string channelinfo_cmd { get { - return ResourceManager.GetString("channelid_text", resourceCulture); + return ResourceManager.GetString("channelinfo_cmd", resourceCulture); } } @@ -989,18 +998,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.cinfo #some-channel`. /// - public static string channelinfo_summary { + public static string channelinfo_usage { get { - return ResourceManager.GetString("channelinfo_summary", resourceCulture); + return ResourceManager.GetString("channelinfo_usage", resourceCulture); } } /// - /// Looks up a localized string similar to channelinfo cinfo. + /// Looks up a localized string similar to channeltopic ct. /// - public static string channelinfo_text { + public static string channeltopic_cmd { get { - return ResourceManager.GetString("channelinfo_text", resourceCulture); + return ResourceManager.GetString("channeltopic_cmd", resourceCulture); } } @@ -1016,18 +1025,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.ct`. /// - public static string channeltopic_summary { + public static string channeltopic_usage { get { - return ResourceManager.GetString("channeltopic_summary", resourceCulture); + return ResourceManager.GetString("channeltopic_usage", resourceCulture); } } /// - /// Looks up a localized string similar to channeltopic ct. + /// Looks up a localized string similar to checkmyperms. /// - public static string channeltopic_text { + public static string checkmyperms_cmd { get { - return ResourceManager.GetString("channeltopic_text", resourceCulture); + return ResourceManager.GetString("checkmyperms_cmd", resourceCulture); } } @@ -1043,18 +1052,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.checkmyperms`. /// - public static string checkmyperms_summary { + public static string checkmyperms_usage { get { - return ResourceManager.GetString("checkmyperms_summary", resourceCulture); + return ResourceManager.GetString("checkmyperms_usage", resourceCulture); } } /// - /// Looks up a localized string similar to checkmyperms. + /// Looks up a localized string similar to checkstream cs. /// - public static string checkmyperms_text { + public static string checkstream_cmd { get { - return ResourceManager.GetString("checkmyperms_text", resourceCulture); + return ResourceManager.GetString("checkstream_cmd", resourceCulture); } } @@ -1070,18 +1079,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~cs twitch MyFavStreamer`. /// - public static string checkstream_summary { + public static string checkstream_usage { get { - return ResourceManager.GetString("checkstream_summary", resourceCulture); + return ResourceManager.GetString("checkstream_usage", resourceCulture); } } /// - /// Looks up a localized string similar to checkstream cs. + /// Looks up a localized string similar to chnlcmd cc. /// - public static string checkstream_text { + public static string chnlcmd_cmd { get { - return ResourceManager.GetString("checkstream_text", resourceCulture); + return ResourceManager.GetString("chnlcmd_cmd", resourceCulture); } } @@ -1097,18 +1106,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;cc "command name" enable SomeChannel`. /// - public static string chnlcmd_summary { + public static string chnlcmd_usage { get { - return ResourceManager.GetString("chnlcmd_summary", resourceCulture); + return ResourceManager.GetString("chnlcmd_usage", resourceCulture); } } /// - /// Looks up a localized string similar to chnlcmd cc. + /// Looks up a localized string similar to chnlfilterinv cfi. /// - public static string chnlcmd_text { + public static string chnlfilterinv_cmd { get { - return ResourceManager.GetString("chnlcmd_text", resourceCulture); + return ResourceManager.GetString("chnlfilterinv_cmd", resourceCulture); } } @@ -1124,18 +1133,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;cfi enable #general-chat`. /// - public static string chnlfilterinv_summary { + public static string chnlfilterinv_usage { get { - return ResourceManager.GetString("chnlfilterinv_summary", resourceCulture); + return ResourceManager.GetString("chnlfilterinv_usage", resourceCulture); } } /// - /// Looks up a localized string similar to chnlfilterinv cfi. + /// Looks up a localized string similar to chnlfilterwords cfw. /// - public static string chnlfilterinv_text { + public static string chnlfilterwords_cmd { get { - return ResourceManager.GetString("chnlfilterinv_text", resourceCulture); + return ResourceManager.GetString("chnlfilterwords_cmd", resourceCulture); } } @@ -1151,18 +1160,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;cfw enable #general-chat`. /// - public static string chnlfilterwords_summary { + public static string chnlfilterwords_usage { get { - return ResourceManager.GetString("chnlfilterwords_summary", resourceCulture); + return ResourceManager.GetString("chnlfilterwords_usage", resourceCulture); } } /// - /// Looks up a localized string similar to chnlfilterwords cfw. + /// Looks up a localized string similar to chnlmdl cm. /// - public static string chnlfilterwords_text { + public static string chnlmdl_cmd { get { - return ResourceManager.GetString("chnlfilterwords_text", resourceCulture); + return ResourceManager.GetString("chnlmdl_cmd", resourceCulture); } } @@ -1178,18 +1187,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;cm "module name" enable SomeChannel`. /// - public static string chnlmdl_summary { + public static string chnlmdl_usage { get { - return ResourceManager.GetString("chnlmdl_summary", resourceCulture); + return ResourceManager.GetString("chnlmdl_usage", resourceCulture); } } /// - /// Looks up a localized string similar to chnlmdl cm. + /// Looks up a localized string similar to chnlperms cp. /// - public static string chnlmdl_text { + public static string chnlperms_cmd { get { - return ResourceManager.GetString("chnlmdl_text", resourceCulture); + return ResourceManager.GetString("chnlperms_cmd", resourceCulture); } } @@ -1205,18 +1214,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;cp #dev`. /// - public static string chnlperms_summary { + public static string chnlperms_usage { get { - return ResourceManager.GetString("chnlperms_summary", resourceCulture); + return ResourceManager.GetString("chnlperms_usage", resourceCulture); } } /// - /// Looks up a localized string similar to chnlperms cp. + /// Looks up a localized string similar to chnlpermscopy cpc. /// - public static string chnlperms_text { + public static string chnlpermscopy_cmd { get { - return ResourceManager.GetString("chnlperms_text", resourceCulture); + return ResourceManager.GetString("chnlpermscopy_cmd", resourceCulture); } } @@ -1232,18 +1241,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;cpc Some Channel ~ Some other channel`. /// - public static string chnlpermscopy_summary { + public static string chnlpermscopy_usage { get { - return ResourceManager.GetString("chnlpermscopy_summary", resourceCulture); + return ResourceManager.GetString("chnlpermscopy_usage", resourceCulture); } } /// - /// Looks up a localized string similar to chnlpermscopy cpc. + /// Looks up a localized string similar to choose. /// - public static string chnlpermscopy_text { + public static string choose_cmd { get { - return ResourceManager.GetString("chnlpermscopy_text", resourceCulture); + return ResourceManager.GetString("choose_cmd", resourceCulture); } } @@ -1259,18 +1268,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `>choose Get up;Sleep;Sleep more`. /// - public static string choose_summary { + public static string choose_usage { get { - return ResourceManager.GetString("choose_summary", resourceCulture); + return ResourceManager.GetString("choose_usage", resourceCulture); } } /// - /// Looks up a localized string similar to choose. + /// Looks up a localized string similar to chucknorris cn. /// - public static string choose_text { + public static string chucknorris_cmd { get { - return ResourceManager.GetString("choose_text", resourceCulture); + return ResourceManager.GetString("chucknorris_cmd", resourceCulture); } } @@ -1286,18 +1295,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~cn`. /// - public static string chucknorris_summary { + public static string chucknorris_usage { get { - return ResourceManager.GetString("chucknorris_summary", resourceCulture); + return ResourceManager.GetString("chucknorris_usage", resourceCulture); } } /// - /// Looks up a localized string similar to chucknorris cn. + /// Looks up a localized string similar to claim call c. /// - public static string chucknorris_text { + public static string claim_cmd { get { - return ResourceManager.GetString("chucknorris_text", resourceCulture); + return ResourceManager.GetString("claim_cmd", resourceCulture); } } @@ -1313,18 +1322,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `,call [war_number] [base_number] [optional_other_name]`. /// - public static string claim_summary { + public static string claim_usage { get { - return ResourceManager.GetString("claim_summary", resourceCulture); + return ResourceManager.GetString("claim_usage", resourceCulture); } } /// - /// Looks up a localized string similar to claim call c. + /// Looks up a localized string similar to claimfinish cf cf3 claimfinish3. /// - public static string claim_text { + public static string claimfinish_cmd { get { - return ResourceManager.GetString("claim_text", resourceCulture); + return ResourceManager.GetString("claimfinish_cmd", resourceCulture); } } @@ -1340,18 +1349,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `,cf [war_number] [optional_other_name]`. /// - public static string claimfinish_summary { + public static string claimfinish_usage { get { - return ResourceManager.GetString("claimfinish_summary", resourceCulture); + return ResourceManager.GetString("claimfinish_usage", resourceCulture); } } /// - /// Looks up a localized string similar to claimfinish cf cf3 claimfinish3. + /// Looks up a localized string similar to claimfinish1 cf1. /// - public static string claimfinish_text { + public static string claimfinish1_cmd { get { - return ResourceManager.GetString("claimfinish_text", resourceCulture); + return ResourceManager.GetString("claimfinish1_cmd", resourceCulture); } } @@ -1367,18 +1376,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `,cf [war_number] [optional_other_name]`. /// - public static string claimfinish1_summary { + public static string claimfinish1_usage { get { - return ResourceManager.GetString("claimfinish1_summary", resourceCulture); + return ResourceManager.GetString("claimfinish1_usage", resourceCulture); } } /// - /// Looks up a localized string similar to claimfinish1 cf1. + /// Looks up a localized string similar to claimfinish2 cf2. /// - public static string claimfinish1_text { + public static string claimfinish2_cmd { get { - return ResourceManager.GetString("claimfinish1_text", resourceCulture); + return ResourceManager.GetString("claimfinish2_cmd", resourceCulture); } } @@ -1394,23 +1403,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `,cf [war_number] [optional_other_name]`. /// - public static string claimfinish2_summary { + public static string claimfinish2_usage { get { - return ResourceManager.GetString("claimfinish2_summary", resourceCulture); + return ResourceManager.GetString("claimfinish2_usage", resourceCulture); } } /// - /// Looks up a localized string similar to claimfinish2 cf2. + /// Looks up a localized string similar to cleanup. /// - public static string claimfinish2_text { + public static string cleanup_cmd { get { - return ResourceManager.GetString("claimfinish2_text", resourceCulture); + return ResourceManager.GetString("cleanup_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Cleans up hanging voice connections. **Bot Owner Only!**. + /// Looks up a localized string similar to Cleans up hanging voice connections. . /// public static string cleanup_desc { get { @@ -1421,18 +1430,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!cleanup`. /// - public static string cleanup_summary { + public static string cleanup_usage { get { - return ResourceManager.GetString("cleanup_summary", resourceCulture); + return ResourceManager.GetString("cleanup_usage", resourceCulture); } } /// - /// Looks up a localized string similar to cleanup. + /// Looks up a localized string similar to cleanvplust cv+t. /// - public static string cleanup_text { + public static string cleanvplust_cmd { get { - return ResourceManager.GetString("cleanup_text", resourceCulture); + return ResourceManager.GetString("cleanvplust_cmd", resourceCulture); } } @@ -1448,18 +1457,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.cleanv+t`. /// - public static string cleanvplust_summary { + public static string cleanvplust_usage { get { - return ResourceManager.GetString("cleanvplust_summary", resourceCulture); + return ResourceManager.GetString("cleanvplust_usage", resourceCulture); } } /// - /// Looks up a localized string similar to cleanvplust cv+t. + /// Looks up a localized string similar to clr prune. /// - public static string cleanvplust_text { + public static string clr_cmd { get { - return ResourceManager.GetString("cleanvplust_text", resourceCulture); + return ResourceManager.GetString("clr_cmd", resourceCulture); } } @@ -1475,23 +1484,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~clr 00ff00`. /// - public static string clr_summary { + public static string clr_usage { get { - return ResourceManager.GetString("clr_summary", resourceCulture); + return ResourceManager.GetString("clr_usage", resourceCulture); } } /// - /// Looks up a localized string similar to clr prune. + /// Looks up a localized string similar to cmdcooldown cmdcd. /// - public static string clr_text { + public static string cmdcooldown_cmd { get { - return ResourceManager.GetString("clr_text", resourceCulture); + return ResourceManager.GetString("cmdcooldown_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Sets a cooldown per user for a command. Set 0 to clear. **Needs Manager Messages Permissions**. + /// Looks up a localized string similar to Sets a cooldown per user for a command. Set 0 to clear.. /// public static string cmdcooldown_desc { get { @@ -1502,18 +1511,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;cmdcd "some cmd" 5`. /// - public static string cmdcooldown_summary { + public static string cmdcooldown_usage { get { - return ResourceManager.GetString("cmdcooldown_summary", resourceCulture); + return ResourceManager.GetString("cmdcooldown_usage", resourceCulture); } } /// - /// Looks up a localized string similar to cmdcooldown cmdcd. + /// Looks up a localized string similar to commands cmds. /// - public static string cmdcooldown_text { + public static string commands_cmd { get { - return ResourceManager.GetString("cmdcooldown_text", resourceCulture); + return ResourceManager.GetString("commands_cmd", resourceCulture); } } @@ -1529,18 +1538,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `-commands` or `.commands`. /// - public static string commands_summary { + public static string commands_usage { get { - return ResourceManager.GetString("commands_summary", resourceCulture); + return ResourceManager.GetString("commands_usage", resourceCulture); } } /// - /// Looks up a localized string similar to commands cmds. + /// Looks up a localized string similar to convert. /// - public static string commands_text { + public static string convert_cmd { get { - return ResourceManager.GetString("commands_text", resourceCulture); + return ResourceManager.GetString("convert_cmd", resourceCulture); } } @@ -1556,18 +1565,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~convert m>km 1000`. /// - public static string convert_summary { + public static string convert_usage { get { - return ResourceManager.GetString("convert_summary", resourceCulture); + return ResourceManager.GetString("convert_usage", resourceCulture); } } /// - /// Looks up a localized string similar to convert. + /// Looks up a localized string similar to convertlist. /// - public static string convert_text { + public static string convertlist_cmd { get { - return ResourceManager.GetString("convert_text", resourceCulture); + return ResourceManager.GetString("convertlist_cmd", resourceCulture); } } @@ -1583,18 +1592,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to . /// - public static string convertlist_summary { + public static string convertlist_usage { get { - return ResourceManager.GetString("convertlist_summary", resourceCulture); + return ResourceManager.GetString("convertlist_usage", resourceCulture); } } /// - /// Looks up a localized string similar to convertlist. + /// Looks up a localized string similar to cp. /// - public static string convertlist_text { + public static string cp_cmd { get { - return ResourceManager.GetString("convertlist_text", resourceCulture); + return ResourceManager.GetString("cp_cmd", resourceCulture); } } @@ -1610,23 +1619,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~cp`. /// - public static string cp_summary { + public static string cp_usage { get { - return ResourceManager.GetString("cp_summary", resourceCulture); + return ResourceManager.GetString("cp_usage", resourceCulture); } } /// - /// Looks up a localized string similar to cp. + /// Looks up a localized string similar to createrole cr. /// - public static string cp_text { + public static string createrole_cmd { get { - return ResourceManager.GetString("cp_text", resourceCulture); + return ResourceManager.GetString("createrole_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Creates a role with a given name. **Needs Manage Roles Permissions.**. + /// Looks up a localized string similar to Creates a role with a given name. . /// public static string createrole_desc { get { @@ -1637,18 +1646,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.cr Awesome Role`. /// - public static string createrole_summary { + public static string createrole_usage { get { - return ResourceManager.GetString("createrole_summary", resourceCulture); + return ResourceManager.GetString("createrole_usage", resourceCulture); } } /// - /// Looks up a localized string similar to createrole cr. + /// Looks up a localized string similar to createwar cw. /// - public static string createrole_text { + public static string createwar_cmd { get { - return ResourceManager.GetString("createrole_text", resourceCulture); + return ResourceManager.GetString("createwar_cmd", resourceCulture); } } @@ -1664,23 +1673,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `,cw 15 The Enemy Clan`. /// - public static string createwar_summary { + public static string createwar_usage { get { - return ResourceManager.GetString("createwar_summary", resourceCulture); + return ResourceManager.GetString("createwar_usage", resourceCulture); } } /// - /// Looks up a localized string similar to createwar cw. + /// Looks up a localized string similar to creatvoichanl cvch. /// - public static string createwar_text { + public static string creatvoichanl_cmd { get { - return ResourceManager.GetString("createwar_text", resourceCulture); + return ResourceManager.GetString("creatvoichanl_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Creates a new voice channel with a given name. **Needs Manage Channel Permissions.**. + /// Looks up a localized string similar to Creates a new voice channel with a given name. . /// public static string creatvoichanl_desc { get { @@ -1691,23 +1700,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.cvch VoiceChannelName`. /// - public static string creatvoichanl_summary { + public static string creatvoichanl_usage { get { - return ResourceManager.GetString("creatvoichanl_summary", resourceCulture); + return ResourceManager.GetString("creatvoichanl_usage", resourceCulture); } } /// - /// Looks up a localized string similar to creatvoichanl cvch. + /// Looks up a localized string similar to creatxtchanl ctch. /// - public static string creatvoichanl_text { + public static string creatxtchanl_cmd { get { - return ResourceManager.GetString("creatvoichanl_text", resourceCulture); + return ResourceManager.GetString("creatxtchanl_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Creates a new text channel with a given name. **Needs Manage Channel Permissions.**. + /// Looks up a localized string similar to Creates a new text channel with a given name. . /// public static string creatxtchanl_desc { get { @@ -1718,45 +1727,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.ctch TextChannelName`. /// - public static string creatxtchanl_summary { + public static string creatxtchanl_usage { get { - return ResourceManager.GetString("creatxtchanl_summary", resourceCulture); + return ResourceManager.GetString("creatxtchanl_usage", resourceCulture); } } /// - /// Looks up a localized string similar to creatxtchanl ctch. + /// Looks up a localized string similar to danbooru. /// - public static string creatxtchanl_text { + public static string danbooru_cmd { get { - return ResourceManager.GetString("creatxtchanl_text", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Unblacklists a mentioned channel (#general for example).. - /// - public static string cubl_desc { - get { - return ResourceManager.GetString("cubl_desc", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to `;cubl #some_channel`. - /// - public static string cubl_summary { - get { - return ResourceManager.GetString("cubl_summary", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to cubl. - /// - public static string cubl_text { - get { - return ResourceManager.GetString("cubl_text", resourceCulture); + return ResourceManager.GetString("danbooru_cmd", resourceCulture); } } @@ -1772,23 +1754,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~danbooru yuri+kissing`. /// - public static string danbooru_summary { + public static string danbooru_usage { get { - return ResourceManager.GetString("danbooru_summary", resourceCulture); + return ResourceManager.GetString("danbooru_usage", resourceCulture); } } /// - /// Looks up a localized string similar to danbooru. + /// Looks up a localized string similar to deafen deaf. /// - public static string danbooru_text { + public static string deafen_cmd { get { - return ResourceManager.GetString("danbooru_text", resourceCulture); + return ResourceManager.GetString("deafen_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Deafens mentioned user or users. **Needs Deafen Permissions.**. + /// Looks up a localized string similar to Deafens mentioned user or users. . /// public static string deafen_desc { get { @@ -1799,18 +1781,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.deaf "@Someguy"` or `.deaf "@Someguy" "@Someguy"`. /// - public static string deafen_summary { + public static string deafen_usage { get { - return ResourceManager.GetString("deafen_summary", resourceCulture); + return ResourceManager.GetString("deafen_usage", resourceCulture); } } /// - /// Looks up a localized string similar to deafen deaf. + /// Looks up a localized string similar to defvol dv. /// - public static string deafen_text { + public static string defvol_cmd { get { - return ResourceManager.GetString("deafen_text", resourceCulture); + return ResourceManager.GetString("defvol_cmd", resourceCulture); } } @@ -1826,18 +1808,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!dv 80`. /// - public static string defvol_summary { + public static string defvol_usage { get { - return ResourceManager.GetString("defvol_summary", resourceCulture); + return ResourceManager.GetString("defvol_usage", resourceCulture); } } /// - /// Looks up a localized string similar to defvol dv. + /// Looks up a localized string similar to delallq daq. /// - public static string defvol_text { + public static string delallquotes_cmd { get { - return ResourceManager.GetString("defvol_text", resourceCulture); + return ResourceManager.GetString("delallquotes_cmd", resourceCulture); } } @@ -1853,23 +1835,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.delallq`. /// - public static string delallquotes_summary { + public static string delallquotes_usage { get { - return ResourceManager.GetString("delallquotes_summary", resourceCulture); + return ResourceManager.GetString("delallquotes_usage", resourceCulture); } } /// - /// Looks up a localized string similar to delallq daq. + /// Looks up a localized string similar to delcustreact dcr. /// - public static string delallquotes_text { + public static string delcustreact_cmd { get { - return ResourceManager.GetString("delallquotes_text", resourceCulture); + return ResourceManager.GetString("delcustreact_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Deletes a custom reaction with given name (and index). **Bot Owner Only.**. + /// Looks up a localized string similar to Deletes a custom reaction with given name (and index).. /// public static string delcustreact_desc { get { @@ -1880,18 +1862,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.dcr index`. /// - public static string delcustreact_summary { + public static string delcustreact_usage { get { - return ResourceManager.GetString("delcustreact_summary", resourceCulture); + return ResourceManager.GetString("delcustreact_usage", resourceCulture); } } /// - /// Looks up a localized string similar to delcustreact dcr. + /// Looks up a localized string similar to deleteplaylist delpls. /// - public static string delcustreact_text { + public static string deleteplaylist_cmd { get { - return ResourceManager.GetString("delcustreact_text", resourceCulture); + return ResourceManager.GetString("deleteplaylist_cmd", resourceCulture); } } @@ -1907,18 +1889,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!delpls animu-5`. /// - public static string deleteplaylist_summary { + public static string deleteplaylist_usage { get { - return ResourceManager.GetString("deleteplaylist_summary", resourceCulture); + return ResourceManager.GetString("deleteplaylist_usage", resourceCulture); } } /// - /// Looks up a localized string similar to deleteplaylist delpls. + /// Looks up a localized string similar to deletequote delq. /// - public static string deleteplaylist_text { + public static string deletequote_cmd { get { - return ResourceManager.GetString("deleteplaylist_text", resourceCulture); + return ResourceManager.GetString("deletequote_cmd", resourceCulture); } } @@ -1934,18 +1916,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.delq abc`. /// - public static string deletequote_summary { + public static string deletequote_usage { get { - return ResourceManager.GetString("deletequote_summary", resourceCulture); + return ResourceManager.GetString("deletequote_usage", resourceCulture); } } /// - /// Looks up a localized string similar to deletequote delq. + /// Looks up a localized string similar to delmsgoncmd. /// - public static string deletequote_text { + public static string delmsgoncmd_cmd { get { - return ResourceManager.GetString("deletequote_text", resourceCulture); + return ResourceManager.GetString("delmsgoncmd_cmd", resourceCulture); } } @@ -1961,23 +1943,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.delmsgoncmd`. /// - public static string delmsgoncmd_summary { + public static string delmsgoncmd_usage { get { - return ResourceManager.GetString("delmsgoncmd_summary", resourceCulture); + return ResourceManager.GetString("delmsgoncmd_usage", resourceCulture); } } /// - /// Looks up a localized string similar to delmsgoncmd. + /// Looks up a localized string similar to deltxtchanl dtch. /// - public static string delmsgoncmd_text { + public static string deltxtchanl_cmd { get { - return ResourceManager.GetString("delmsgoncmd_text", resourceCulture); + return ResourceManager.GetString("deltxtchanl_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Deletes a text channel with a given name. **Needs Manage Channel Permissions.**. + /// Looks up a localized string similar to Deletes a text channel with a given name. . /// public static string deltxtchanl_desc { get { @@ -1988,23 +1970,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.dtch TextChannelName`. /// - public static string deltxtchanl_summary { + public static string deltxtchanl_usage { get { - return ResourceManager.GetString("deltxtchanl_summary", resourceCulture); + return ResourceManager.GetString("deltxtchanl_usage", resourceCulture); } } /// - /// Looks up a localized string similar to deltxtchanl dtch. + /// Looks up a localized string similar to delvoichanl dvch. /// - public static string deltxtchanl_text { + public static string delvoichanl_cmd { get { - return ResourceManager.GetString("deltxtchanl_text", resourceCulture); + return ResourceManager.GetString("delvoichanl_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Deletes a voice channel with a given name. **Needs Manage Channel Permissions.**. + /// Looks up a localized string similar to Deletes a voice channel with a given name. . /// public static string delvoichanl_desc { get { @@ -2015,18 +1997,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.dvch VoiceChannelName`. /// - public static string delvoichanl_summary { + public static string delvoichanl_usage { get { - return ResourceManager.GetString("delvoichanl_summary", resourceCulture); + return ResourceManager.GetString("delvoichanl_usage", resourceCulture); } } /// - /// Looks up a localized string similar to delvoichanl dvch. + /// Looks up a localized string similar to destroy d. /// - public static string delvoichanl_text { + public static string destroy_cmd { get { - return ResourceManager.GetString("delvoichanl_text", resourceCulture); + return ResourceManager.GetString("destroy_cmd", resourceCulture); } } @@ -2042,18 +2024,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!d`. /// - public static string destroy_summary { + public static string destroy_usage { get { - return ResourceManager.GetString("destroy_summary", resourceCulture); + return ResourceManager.GetString("destroy_usage", resourceCulture); } } /// - /// Looks up a localized string similar to destroy d. + /// Looks up a localized string similar to die. /// - public static string destroy_text { + public static string die_cmd { get { - return ResourceManager.GetString("destroy_text", resourceCulture); + return ResourceManager.GetString("die_cmd", resourceCulture); } } @@ -2069,18 +2051,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `@NadekoBot die`. /// - public static string die_summary { + public static string die_usage { get { - return ResourceManager.GetString("die_summary", resourceCulture); + return ResourceManager.GetString("die_usage", resourceCulture); } } /// - /// Looks up a localized string similar to die. + /// Looks up a localized string similar to donadd. /// - public static string die_text { + public static string donadd_cmd { get { - return ResourceManager.GetString("die_text", resourceCulture); + return ResourceManager.GetString("donadd_cmd", resourceCulture); } } @@ -2096,18 +2078,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.donadd Donate Amount`. /// - public static string donadd_summary { + public static string donadd_usage { get { - return ResourceManager.GetString("donadd_summary", resourceCulture); + return ResourceManager.GetString("donadd_usage", resourceCulture); } } /// - /// Looks up a localized string similar to donadd. + /// Looks up a localized string similar to donate. /// - public static string donadd_text { + public static string donate_cmd { get { - return ResourceManager.GetString("donadd_text", resourceCulture); + return ResourceManager.GetString("donate_cmd", resourceCulture); } } @@ -2123,18 +2105,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `-donate` or `~donate`. /// - public static string donate_summary { + public static string donate_usage { get { - return ResourceManager.GetString("donate_summary", resourceCulture); + return ResourceManager.GetString("donate_usage", resourceCulture); } } /// - /// Looks up a localized string similar to donate. + /// Looks up a localized string similar to donators. /// - public static string donate_text { + public static string donators_cmd { get { - return ResourceManager.GetString("donate_text", resourceCulture); + return ResourceManager.GetString("donators_cmd", resourceCulture); } } @@ -2150,18 +2132,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.donators`. /// - public static string donators_summary { + public static string donators_usage { get { - return ResourceManager.GetString("donators_summary", resourceCulture); + return ResourceManager.GetString("donators_usage", resourceCulture); } } /// - /// Looks up a localized string similar to donators. + /// Looks up a localized string similar to do you love me. /// - public static string donators_text { + public static string doyouloveme_cmd { get { - return ResourceManager.GetString("donators_text", resourceCulture); + return ResourceManager.GetString("doyouloveme_cmd", resourceCulture); } } @@ -2177,18 +2159,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `@NadekoBot do you love me`. /// - public static string doyouloveme_summary { + public static string doyouloveme_usage { get { - return ResourceManager.GetString("doyouloveme_summary", resourceCulture); + return ResourceManager.GetString("doyouloveme_usage", resourceCulture); } } /// - /// Looks up a localized string similar to do you love me. + /// Looks up a localized string similar to draw. /// - public static string doyouloveme_text { + public static string draw_cmd { get { - return ResourceManager.GetString("doyouloveme_text", resourceCulture); + return ResourceManager.GetString("draw_cmd", resourceCulture); } } @@ -2204,45 +2186,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `$draw [x]`. /// - public static string draw_summary { + public static string draw_usage { get { - return ResourceManager.GetString("draw_summary", resourceCulture); + return ResourceManager.GetString("draw_usage", resourceCulture); } } /// - /// Looks up a localized string similar to draw. + /// Looks up a localized string similar to dysyd. /// - public static string draw_text { + public static string dysyd_cmd { get { - return ResourceManager.GetString("draw_text", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Dumps all of the invites it can to dump.txt.** Owner Only.**. - /// - public static string dump_desc { - get { - return ResourceManager.GetString("dump_desc", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to `@NadekoBot dump`. - /// - public static string dump_summary { - get { - return ResourceManager.GetString("dump_summary", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to dump. - /// - public static string dump_text { - get { - return ResourceManager.GetString("dump_text", resourceCulture); + return ResourceManager.GetString("dysyd_cmd", resourceCulture); } } @@ -2258,18 +2213,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.dysyd`. /// - public static string dysyd_summary { + public static string dysyd_usage { get { - return ResourceManager.GetString("dysyd_summary", resourceCulture); + return ResourceManager.GetString("dysyd_usage", resourceCulture); } } /// - /// Looks up a localized string similar to dysyd. + /// Looks up a localized string similar to e621. /// - public static string dysyd_text { + public static string e621_cmd { get { - return ResourceManager.GetString("dysyd_text", resourceCulture); + return ResourceManager.GetString("e621_cmd", resourceCulture); } } @@ -2285,23 +2240,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~e621 yuri kissing`. /// - public static string e621_summary { + public static string e621_usage { get { - return ResourceManager.GetString("e621_summary", resourceCulture); + return ResourceManager.GetString("e621_usage", resourceCulture); } } /// - /// Looks up a localized string similar to e621. + /// Looks up a localized string similar to editcustreact ecr. /// - public static string e621_text { + public static string editcustreact_cmd { get { - return ResourceManager.GetString("e621_text", resourceCulture); + return ResourceManager.GetString("editcustreact_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Edits a custom reaction, arguments are custom reactions name, index to change, and a (multiword) message **Bot Owner Only**. + /// Looks up a localized string similar to Edits a custom reaction, arguments are custom reactions name, index to change, and a (multiword) message.. /// public static string editcustreact_desc { get { @@ -2312,18 +2267,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.ecr "%mention% disguise" 2 Test 123`. /// - public static string editcustreact_summary { + public static string editcustreact_usage { get { - return ResourceManager.GetString("editcustreact_summary", resourceCulture); + return ResourceManager.GetString("editcustreact_usage", resourceCulture); } } /// - /// Looks up a localized string similar to editcustreact ecr. + /// Looks up a localized string similar to endwar ew. /// - public static string editcustreact_text { + public static string endwar_cmd { get { - return ResourceManager.GetString("editcustreact_text", resourceCulture); + return ResourceManager.GetString("endwar_cmd", resourceCulture); } } @@ -2339,18 +2294,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `,ew [war_number]`. /// - public static string endwar_summary { + public static string endwar_usage { get { - return ResourceManager.GetString("endwar_summary", resourceCulture); + return ResourceManager.GetString("endwar_usage", resourceCulture); } } /// - /// Looks up a localized string similar to endwar ew. + /// Looks up a localized string similar to fw. /// - public static string endwar_text { + public static string filterword_cmd { get { - return ResourceManager.GetString("endwar_text", resourceCulture); + return ResourceManager.GetString("filterword_cmd", resourceCulture); } } @@ -2366,18 +2321,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;fw poop`. /// - public static string filterword_summary { + public static string filterword_usage { get { - return ResourceManager.GetString("filterword_summary", resourceCulture); + return ResourceManager.GetString("filterword_usage", resourceCulture); } } /// - /// Looks up a localized string similar to fw. + /// Looks up a localized string similar to fire. /// - public static string filterword_text { + public static string fire_cmd { get { - return ResourceManager.GetString("filterword_text", resourceCulture); + return ResourceManager.GetString("fire_cmd", resourceCulture); } } @@ -2393,18 +2348,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `@NadekoBot fire [x]`. /// - public static string fire_summary { + public static string fire_usage { get { - return ResourceManager.GetString("fire_summary", resourceCulture); + return ResourceManager.GetString("fire_usage", resourceCulture); } } /// - /// Looks up a localized string similar to fire. + /// Looks up a localized string similar to flip. /// - public static string fire_text { + public static string flip_cmd { get { - return ResourceManager.GetString("fire_text", resourceCulture); + return ResourceManager.GetString("flip_cmd", resourceCulture); } } @@ -2420,18 +2375,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `$flip` or `$flip 3`. /// - public static string flip_summary { + public static string flip_usage { get { - return ResourceManager.GetString("flip_summary", resourceCulture); + return ResourceManager.GetString("flip_usage", resourceCulture); } } /// - /// Looks up a localized string similar to flip. + /// Looks up a localized string similar to gelbooru. /// - public static string flip_text { + public static string gelbooru_cmd { get { - return ResourceManager.GetString("flip_text", resourceCulture); + return ResourceManager.GetString("gelbooru_cmd", resourceCulture); } } @@ -2447,18 +2402,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~gelbooru yuri+kissing`. /// - public static string gelbooru_summary { + public static string gelbooru_usage { get { - return ResourceManager.GetString("gelbooru_summary", resourceCulture); + return ResourceManager.GetString("gelbooru_usage", resourceCulture); } } /// - /// Looks up a localized string similar to gelbooru. + /// Looks up a localized string similar to gencurrency gc. /// - public static string gelbooru_text { + public static string gencurrency_cmd { get { - return ResourceManager.GetString("gelbooru_text", resourceCulture); + return ResourceManager.GetString("gencurrency_cmd", resourceCulture); } } @@ -2474,18 +2429,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `>gc`. /// - public static string gencurrency_summary { + public static string gencurrency_usage { get { - return ResourceManager.GetString("gencurrency_summary", resourceCulture); + return ResourceManager.GetString("gencurrency_usage", resourceCulture); } } /// - /// Looks up a localized string similar to gencurrency gc. + /// Looks up a localized string similar to getlink gl. /// - public static string gencurrency_text { + public static string getlink_cmd { get { - return ResourceManager.GetString("gencurrency_text", resourceCulture); + return ResourceManager.GetString("getlink_cmd", resourceCulture); } } @@ -2501,18 +2456,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!gl`. /// - public static string getlink_summary { + public static string getlink_usage { get { - return ResourceManager.GetString("getlink_summary", resourceCulture); + return ResourceManager.GetString("getlink_usage", resourceCulture); } } /// - /// Looks up a localized string similar to getlink gl. + /// Looks up a localized string similar to give. /// - public static string getlink_text { + public static string give_cmd { get { - return ResourceManager.GetString("getlink_text", resourceCulture); + return ResourceManager.GetString("give_cmd", resourceCulture); } } @@ -2528,18 +2483,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `$give 1 "@SomeGuy"`. /// - public static string give_summary { + public static string give_usage { get { - return ResourceManager.GetString("give_summary", resourceCulture); + return ResourceManager.GetString("give_usage", resourceCulture); } } /// - /// Looks up a localized string similar to give. + /// Looks up a localized string similar to google g. /// - public static string give_text { + public static string google_cmd { get { - return ResourceManager.GetString("give_text", resourceCulture); + return ResourceManager.GetString("google_cmd", resourceCulture); } } @@ -2555,18 +2510,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~google query`. /// - public static string google_summary { + public static string google_usage { get { - return ResourceManager.GetString("google_summary", resourceCulture); + return ResourceManager.GetString("google_usage", resourceCulture); } } /// - /// Looks up a localized string similar to google g. + /// Looks up a localized string similar to goto. /// - public static string google_text { + public static string goto_cmd { get { - return ResourceManager.GetString("google_text", resourceCulture); + return ResourceManager.GetString("goto_cmd", resourceCulture); } } @@ -2582,23 +2537,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!goto 30`. /// - public static string goto_summary { + public static string goto_usage { get { - return ResourceManager.GetString("goto_summary", resourceCulture); + return ResourceManager.GetString("goto_usage", resourceCulture); } } /// - /// Looks up a localized string similar to goto. + /// Looks up a localized string similar to greet. /// - public static string goto_text { + public static string greet_cmd { get { - return ResourceManager.GetString("goto_text", resourceCulture); + return ResourceManager.GetString("greet_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Toggles anouncements on the current channel when someone joins the server. **Needs Manage Server Permissions.**. + /// Looks up a localized string similar to Toggles anouncements on the current channel when someone joins the server. . /// public static string greet_desc { get { @@ -2609,23 +2564,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.greet`. /// - public static string greet_summary { + public static string greet_usage { get { - return ResourceManager.GetString("greet_summary", resourceCulture); + return ResourceManager.GetString("greet_usage", resourceCulture); } } /// - /// Looks up a localized string similar to greet. + /// Looks up a localized string similar to greetdel. /// - public static string greet_text { + public static string greetdel_cmd { get { - return ResourceManager.GetString("greet_text", resourceCulture); + return ResourceManager.GetString("greetdel_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Toggles automatic deletion of greet messages. **Needs Manage Server Permissions.**. + /// Looks up a localized string similar to Toggles automatic deletion of greet messages. . /// public static string greetdel_desc { get { @@ -2636,23 +2591,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.greetdel`. /// - public static string greetdel_summary { + public static string greetdel_usage { get { - return ResourceManager.GetString("greetdel_summary", resourceCulture); + return ResourceManager.GetString("greetdel_usage", resourceCulture); } } /// - /// Looks up a localized string similar to greetdel. + /// Looks up a localized string similar to greetdm. /// - public static string greetdel_text { + public static string greetdm_cmd { get { - return ResourceManager.GetString("greetdel_text", resourceCulture); + return ResourceManager.GetString("greetdm_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Toggles whether the greet messages will be sent in a DM (This is separate from greet - you can have both, any or neither enabled). **Needs Manage Server Permissions.**. + /// Looks up a localized string similar to Toggles whether the greet messages will be sent in a DM (This is separate from greet - you can have both, any or neither enabled). . /// public static string greetdm_desc { get { @@ -2663,23 +2618,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.greetdm`. /// - public static string greetdm_summary { + public static string greetdm_usage { get { - return ResourceManager.GetString("greetdm_summary", resourceCulture); + return ResourceManager.GetString("greetdm_usage", resourceCulture); } } /// - /// Looks up a localized string similar to greetdm. + /// Looks up a localized string similar to greetdmmsg. /// - public static string greetdm_text { + public static string greetdmmsg_cmd { get { - return ResourceManager.GetString("greetdm_text", resourceCulture); + return ResourceManager.GetString("greetdmmsg_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Sets a new join announcement message which will be sent to the user who joined. Type %user% if you want to mention the new member. Using it with no message will show the current DM greet message. **Needs Manage Server Permissions.**. + /// Looks up a localized string similar to Sets a new join announcement message which will be sent to the user who joined. Type %user% if you want to mention the new member. Using it with no message will show the current DM greet message. . /// public static string greetdmmsg_desc { get { @@ -2690,23 +2645,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.greetdmmsg Welcome to the server, %user%`.. /// - public static string greetdmmsg_summary { + public static string greetdmmsg_usage { get { - return ResourceManager.GetString("greetdmmsg_summary", resourceCulture); + return ResourceManager.GetString("greetdmmsg_usage", resourceCulture); } } /// - /// Looks up a localized string similar to greetdmmsg. + /// Looks up a localized string similar to greetmsg. /// - public static string greetdmmsg_text { + public static string greetmsg_cmd { get { - return ResourceManager.GetString("greetdmmsg_text", resourceCulture); + return ResourceManager.GetString("greetmsg_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to 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. **Needs Manage Server Permissions.**. + /// Looks up a localized string similar to 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. . /// public static string greetmsg_desc { get { @@ -2717,18 +2672,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.greetmsg Welcome, %user%.`. /// - public static string greetmsg_summary { + public static string greetmsg_usage { get { - return ResourceManager.GetString("greetmsg_summary", resourceCulture); + return ResourceManager.GetString("greetmsg_usage", resourceCulture); } } /// - /// Looks up a localized string similar to greetmsg. + /// Looks up a localized string similar to readme guide. /// - public static string greetmsg_text { + public static string guide_cmd { get { - return ResourceManager.GetString("greetmsg_text", resourceCulture); + return ResourceManager.GetString("guide_cmd", resourceCulture); } } @@ -2744,18 +2699,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `-readme` or `-guide`. /// - public static string guide_summary { + public static string guide_usage { get { - return ResourceManager.GetString("guide_summary", resourceCulture); + return ResourceManager.GetString("guide_usage", resourceCulture); } } /// - /// Looks up a localized string similar to readme guide. + /// Looks up a localized string similar to h help. /// - public static string guide_text { + public static string h_cmd { get { - return ResourceManager.GetString("guide_text", resourceCulture); + return ResourceManager.GetString("h_cmd", resourceCulture); } } @@ -2771,18 +2726,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `-h !m q` or just `-h`. /// - public static string h_summary { + public static string h_usage { get { - return ResourceManager.GetString("h_summary", resourceCulture); + return ResourceManager.GetString("h_usage", resourceCulture); } } /// - /// Looks up a localized string similar to h help. + /// Looks up a localized string similar to half. /// - public static string h_text { + public static string half_cmd { get { - return ResourceManager.GetString("h_text", resourceCulture); + return ResourceManager.GetString("half_cmd", resourceCulture); } } @@ -2798,18 +2753,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!half`. /// - public static string half_summary { + public static string half_usage { get { - return ResourceManager.GetString("half_summary", resourceCulture); + return ResourceManager.GetString("half_usage", resourceCulture); } } /// - /// Looks up a localized string similar to half. + /// Looks up a localized string similar to #. /// - public static string half_text { + public static string hashtag_cmd { get { - return ResourceManager.GetString("half_text", resourceCulture); + return ResourceManager.GetString("hashtag_cmd", resourceCulture); } } @@ -2825,18 +2780,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~# ff`. /// - public static string hashtag_summary { + public static string hashtag_usage { get { - return ResourceManager.GetString("hashtag_summary", resourceCulture); + return ResourceManager.GetString("hashtag_usage", resourceCulture); } } /// - /// Looks up a localized string similar to #. + /// Looks up a localized string similar to heal. /// - public static string hashtag_text { + public static string heal_cmd { get { - return ResourceManager.GetString("hashtag_text", resourceCulture); + return ResourceManager.GetString("heal_cmd", resourceCulture); } } @@ -2852,23 +2807,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `>heal @someone`. /// - public static string heal_summary { + public static string heal_usage { get { - return ResourceManager.GetString("heal_summary", resourceCulture); + return ResourceManager.GetString("heal_usage", resourceCulture); } } /// - /// Looks up a localized string similar to heal. + /// Looks up a localized string similar to heap. /// - public static string heal_text { + public static string heap_cmd { get { - return ResourceManager.GetString("heal_text", resourceCulture); + return ResourceManager.GetString("heap_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Shows allocated memory - **Bot Owner Only!**. + /// Looks up a localized string similar to Shows allocated memory - . /// public static string heap_desc { get { @@ -2879,18 +2834,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.heap`. /// - public static string heap_summary { + public static string heap_usage { get { - return ResourceManager.GetString("heap_summary", resourceCulture); + return ResourceManager.GetString("heap_usage", resourceCulture); } } /// - /// Looks up a localized string similar to heap. + /// Looks up a localized string similar to hearthstone hs. /// - public static string heap_text { + public static string hearthstone_cmd { get { - return ResourceManager.GetString("heap_text", resourceCulture); + return ResourceManager.GetString("hearthstone_cmd", resourceCulture); } } @@ -2906,18 +2861,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~hs Ysera`. /// - public static string hearthstone_summary { + public static string hearthstone_usage { get { - return ResourceManager.GetString("hearthstone_summary", resourceCulture); + return ResourceManager.GetString("hearthstone_usage", resourceCulture); } } /// - /// Looks up a localized string similar to hearthstone hs. + /// Looks up a localized string similar to hentai. /// - public static string hearthstone_text { + public static string hentai_cmd { get { - return ResourceManager.GetString("hearthstone_text", resourceCulture); + return ResourceManager.GetString("hentai_cmd", resourceCulture); } } @@ -2933,23 +2888,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~hentai yuri+kissing`. /// - public static string hentai_summary { + public static string hentai_usage { get { - return ResourceManager.GetString("hentai_summary", resourceCulture); + return ResourceManager.GetString("hentai_usage", resourceCulture); } } /// - /// Looks up a localized string similar to hentai. + /// Looks up a localized string similar to hgit. /// - public static string hentai_text { + public static string hgit_cmd { get { - return ResourceManager.GetString("hentai_text", resourceCulture); + return ResourceManager.GetString("hgit_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Generates the commandlist.md file. **Bot Owner Only!**. + /// Looks up a localized string similar to Generates the commandlist.md file.. /// public static string hgit_desc { get { @@ -2960,18 +2915,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `-hgit`. /// - public static string hgit_summary { + public static string hgit_usage { get { - return ResourceManager.GetString("hgit_summary", resourceCulture); + return ResourceManager.GetString("hgit_usage", resourceCulture); } } /// - /// Looks up a localized string similar to hgit. + /// Looks up a localized string similar to hitbox hb. /// - public static string hgit_text { + public static string hitbox_cmd { get { - return ResourceManager.GetString("hgit_text", resourceCulture); + return ResourceManager.GetString("hitbox_cmd", resourceCulture); } } @@ -2987,18 +2942,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~hitbox SomeStreamer`. /// - public static string hitbox_summary { + public static string hitbox_usage { get { - return ResourceManager.GetString("hitbox_summary", resourceCulture); + return ResourceManager.GetString("hitbox_usage", resourceCulture); } } /// - /// Looks up a localized string similar to hitbox hb. + /// Looks up a localized string similar to how are you. /// - public static string hitbox_text { + public static string howareyou_cmd { get { - return ResourceManager.GetString("hitbox_text", resourceCulture); + return ResourceManager.GetString("howareyou_cmd", resourceCulture); } } @@ -3014,18 +2969,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `@NadekoBot how are you`. /// - public static string howareyou_summary { + public static string howareyou_usage { get { - return ResourceManager.GetString("howareyou_summary", resourceCulture); + return ResourceManager.GetString("howareyou_usage", resourceCulture); } } /// - /// Looks up a localized string similar to how are you. + /// Looks up a localized string similar to img i. /// - public static string howareyou_text { + public static string i_cmd { get { - return ResourceManager.GetString("howareyou_text", resourceCulture); + return ResourceManager.GetString("i_cmd", resourceCulture); } } @@ -3041,18 +2996,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~i cute kitten`. /// - public static string i_summary { + public static string i_usage { get { - return ResourceManager.GetString("i_summary", resourceCulture); + return ResourceManager.GetString("i_usage", resourceCulture); } } /// - /// Looks up a localized string similar to img i. + /// Looks up a localized string similar to iam. /// - public static string i_text { + public static string iam_cmd { get { - return ResourceManager.GetString("i_text", resourceCulture); + return ResourceManager.GetString("iam_cmd", resourceCulture); } } @@ -3068,18 +3023,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.iam Gamer`. /// - public static string iam_summary { + public static string iam_usage { get { - return ResourceManager.GetString("iam_summary", resourceCulture); + return ResourceManager.GetString("iam_usage", resourceCulture); } } /// - /// Looks up a localized string similar to iam. + /// Looks up a localized string similar to iamnot iamn. /// - public static string iam_text { + public static string iamnot_cmd { get { - return ResourceManager.GetString("iam_text", resourceCulture); + return ResourceManager.GetString("iamnot_cmd", resourceCulture); } } @@ -3095,18 +3050,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.iamn Gamer`. /// - public static string iamnot_summary { + public static string iamnot_usage { get { - return ResourceManager.GetString("iamnot_summary", resourceCulture); + return ResourceManager.GetString("iamnot_usage", resourceCulture); } } /// - /// Looks up a localized string similar to iamnot iamn. + /// Looks up a localized string similar to imdb. /// - public static string iamnot_text { + public static string imdb_cmd { get { - return ResourceManager.GetString("iamnot_text", resourceCulture); + return ResourceManager.GetString("imdb_cmd", resourceCulture); } } @@ -3122,18 +3077,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~imdb Batman vs Superman`. /// - public static string imdb_summary { + public static string imdb_usage { get { - return ResourceManager.GetString("imdb_summary", resourceCulture); + return ResourceManager.GetString("imdb_usage", resourceCulture); } } /// - /// Looks up a localized string similar to imdb. + /// Looks up a localized string similar to inrole. /// - public static string imdb_text { + public static string inrole_cmd { get { - return ResourceManager.GetString("imdb_text", resourceCulture); + return ResourceManager.GetString("inrole_cmd", resourceCulture); } } @@ -3149,18 +3104,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.inrole Role`. /// - public static string inrole_summary { + public static string inrole_usage { get { - return ResourceManager.GetString("inrole_summary", resourceCulture); + return ResourceManager.GetString("inrole_usage", resourceCulture); } } /// - /// Looks up a localized string similar to inrole. + /// Looks up a localized string similar to ir. /// - public static string inrole_text { + public static string ir_cmd { get { - return ResourceManager.GetString("inrole_text", resourceCulture); + return ResourceManager.GetString("ir_cmd", resourceCulture); } } @@ -3176,23 +3131,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~ir cute kitten`. /// - public static string ir_summary { + public static string ir_usage { get { - return ResourceManager.GetString("ir_summary", resourceCulture); + return ResourceManager.GetString("ir_usage", resourceCulture); } } /// - /// Looks up a localized string similar to ir. + /// Looks up a localized string similar to jcsc. /// - public static string ir_text { + public static string jcsc_cmd { get { - return ResourceManager.GetString("ir_text", resourceCulture); + return ResourceManager.GetString("jcsc_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Joins current channel to an instance of cross server channel using the token. **Needs Manage Server Permissions.**. + /// Looks up a localized string similar to Joins current channel to an instance of cross server channel using the token. . /// public static string jcsc_desc { get { @@ -3203,18 +3158,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.jcsc`. /// - public static string jcsc_summary { + public static string jcsc_usage { get { - return ResourceManager.GetString("jcsc_summary", resourceCulture); + return ResourceManager.GetString("jcsc_usage", resourceCulture); } } /// - /// Looks up a localized string similar to jcsc. + /// Looks up a localized string similar to joinrace jr. /// - public static string jcsc_text { + public static string joinrace_cmd { get { - return ResourceManager.GetString("jcsc_text", resourceCulture); + return ResourceManager.GetString("joinrace_cmd", resourceCulture); } } @@ -3230,23 +3185,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `$jr` or `$jr 5`. /// - public static string joinrace_summary { + public static string joinrace_usage { get { - return ResourceManager.GetString("joinrace_summary", resourceCulture); + return ResourceManager.GetString("joinrace_usage", resourceCulture); } } /// - /// Looks up a localized string similar to joinrace jr. + /// Looks up a localized string similar to kick k. /// - public static string joinrace_text { + public static string kick_cmd { get { - return ResourceManager.GetString("joinrace_text", resourceCulture); + return ResourceManager.GetString("kick_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Kicks a mentioned user. **Needs Kick Permissions.**. + /// Looks up a localized string similar to Kicks a mentioned user. . /// public static string kick_desc { get { @@ -3257,23 +3212,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.k "@some Guy" Your behaviour is toxic.`. /// - public static string kick_summary { + public static string kick_usage { get { - return ResourceManager.GetString("kick_summary", resourceCulture); + return ResourceManager.GetString("kick_usage", resourceCulture); } } /// - /// Looks up a localized string similar to kick k. + /// Looks up a localized string similar to lcsc. /// - public static string kick_text { + public static string lcsc_cmd { get { - return ResourceManager.GetString("kick_text", resourceCulture); + return ResourceManager.GetString("lcsc_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Leaves Cross server channel instance from this channel. **Needs Manage Server Permissions.**. + /// Looks up a localized string similar to Leaves Cross server channel instance from this channel. . /// public static string lcsc_desc { get { @@ -3284,18 +3239,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.lcsc`. /// - public static string lcsc_summary { + public static string lcsc_usage { get { - return ResourceManager.GetString("lcsc_summary", resourceCulture); + return ResourceManager.GetString("lcsc_usage", resourceCulture); } } /// - /// Looks up a localized string similar to lcsc. + /// Looks up a localized string similar to leaderboard lb. /// - public static string lcsc_text { + public static string leaderboard_cmd { get { - return ResourceManager.GetString("lcsc_text", resourceCulture); + return ResourceManager.GetString("leaderboard_cmd", resourceCulture); } } @@ -3311,23 +3266,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `$lb`. /// - public static string leaderboard_summary { + public static string leaderboard_usage { get { - return ResourceManager.GetString("leaderboard_summary", resourceCulture); + return ResourceManager.GetString("leaderboard_usage", resourceCulture); } } /// - /// Looks up a localized string similar to leaderboard lb. + /// Looks up a localized string similar to leave. /// - public static string leaderboard_text { + public static string leave_cmd { get { - return ResourceManager.GetString("leaderboard_text", resourceCulture); + return ResourceManager.GetString("leave_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Makes Nadeko leave the server. Either name or id required. **Bot Owner Only!**. + /// Looks up a localized string similar to Makes Nadeko leave the server. Either name or id required. . /// public static string leave_desc { get { @@ -3338,18 +3293,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.leave 123123123331`. /// - public static string leave_summary { + public static string leave_usage { get { - return ResourceManager.GetString("leave_summary", resourceCulture); + return ResourceManager.GetString("leave_usage", resourceCulture); } } /// - /// Looks up a localized string similar to leave. + /// Looks up a localized string similar to leet. /// - public static string leave_text { + public static string leet_cmd { get { - return ResourceManager.GetString("leave_text", resourceCulture); + return ResourceManager.GetString("leet_cmd", resourceCulture); } } @@ -3365,18 +3320,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `>leet 3 Hello`. /// - public static string leet_summary { + public static string leet_usage { get { - return ResourceManager.GetString("leet_summary", resourceCulture); + return ResourceManager.GetString("leet_usage", resourceCulture); } } /// - /// Looks up a localized string similar to leet. + /// Looks up a localized string similar to linux. /// - public static string leet_text { + public static string linux_cmd { get { - return ResourceManager.GetString("leet_text", resourceCulture); + return ResourceManager.GetString("linux_cmd", resourceCulture); } } @@ -3392,23 +3347,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `>linux Spyware Windows`. /// - public static string linux_summary { + public static string linux_usage { get { - return ResourceManager.GetString("linux_summary", resourceCulture); + return ResourceManager.GetString("linux_usage", resourceCulture); } } /// - /// Looks up a localized string similar to linux. + /// Looks up a localized string similar to listallincidents lain. /// - public static string linux_text { + public static string listallincidents_cmd { get { - return ResourceManager.GetString("linux_text", resourceCulture); + return ResourceManager.GetString("listallincidents_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Sends you a file containing all incidents and flags them as read. **Needs Manage Server Permissions.**. + /// Looks up a localized string similar to Sends you a file containing all incidents and flags them as read. . /// public static string listallincidents_desc { get { @@ -3419,18 +3374,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.lain`. /// - public static string listallincidents_summary { + public static string listallincidents_usage { get { - return ResourceManager.GetString("listallincidents_summary", resourceCulture); + return ResourceManager.GetString("listallincidents_usage", resourceCulture); } } /// - /// Looks up a localized string similar to listallincidents lain. + /// Looks up a localized string similar to listcustreact lcr. /// - public static string listallincidents_text { + public static string listcustreact_cmd { get { - return ResourceManager.GetString("listallincidents_text", resourceCulture); + return ResourceManager.GetString("listcustreact_cmd", resourceCulture); } } @@ -3446,23 +3401,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.lcr 1`. /// - public static string listcustreact_summary { + public static string listcustreact_usage { get { - return ResourceManager.GetString("listcustreact_summary", resourceCulture); + return ResourceManager.GetString("listcustreact_usage", resourceCulture); } } /// - /// Looks up a localized string similar to listcustreact lcr. + /// Looks up a localized string similar to listincidents lin. /// - public static string listcustreact_text { + public static string listincidents_cmd { get { - return ResourceManager.GetString("listcustreact_text", resourceCulture); + return ResourceManager.GetString("listincidents_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to List all UNREAD incidents and flags them as read. **Needs Manage Server Permissions.**. + /// Looks up a localized string similar to List all UNREAD incidents and flags them as read. . /// public static string listincidents_desc { get { @@ -3473,18 +3428,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.lin`. /// - public static string listincidents_summary { + public static string listincidents_usage { get { - return ResourceManager.GetString("listincidents_summary", resourceCulture); + return ResourceManager.GetString("listincidents_usage", resourceCulture); } } /// - /// Looks up a localized string similar to listincidents lin. + /// Looks up a localized string similar to listperms lp. /// - public static string listincidents_text { + public static string listperms_cmd { get { - return ResourceManager.GetString("listincidents_text", resourceCulture); + return ResourceManager.GetString("listperms_cmd", resourceCulture); } } @@ -3500,23 +3455,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;lp`. /// - public static string listperms_summary { + public static string listperms_usage { get { - return ResourceManager.GetString("listperms_summary", resourceCulture); + return ResourceManager.GetString("listperms_usage", resourceCulture); } } /// - /// Looks up a localized string similar to listperms lp. + /// Looks up a localized string similar to listplaying lipl. /// - public static string listperms_text { + public static string listplaying_cmd { get { - return ResourceManager.GetString("listperms_text", resourceCulture); + return ResourceManager.GetString("listplaying_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Lists all playing statuses with their corresponding number. **Bot Owner Only!**. + /// Looks up a localized string similar to Lists all playing statuses with their corresponding number.. /// public static string listplaying_desc { get { @@ -3527,18 +3482,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.lipl`. /// - public static string listplaying_summary { + public static string listplaying_usage { get { - return ResourceManager.GetString("listplaying_summary", resourceCulture); + return ResourceManager.GetString("listplaying_usage", resourceCulture); } } /// - /// Looks up a localized string similar to listplaying lipl. + /// Looks up a localized string similar to listqueue lq. /// - public static string listplaying_text { + public static string listqueue_cmd { get { - return ResourceManager.GetString("listplaying_text", resourceCulture); + return ResourceManager.GetString("listqueue_cmd", resourceCulture); } } @@ -3554,23 +3509,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!lq` or `!!lq 2`. /// - public static string listqueue_summary { + public static string listqueue_usage { get { - return ResourceManager.GetString("listqueue_summary", resourceCulture); + return ResourceManager.GetString("listqueue_usage", resourceCulture); } } /// - /// Looks up a localized string similar to listqueue lq. + /// Looks up a localized string similar to lists list. /// - public static string listqueue_text { + public static string lists_cmd { get { - return ResourceManager.GetString("listqueue_text", resourceCulture); + return ResourceManager.GetString("lists_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Lists all lists, yo ;) **Bot Owner Only!**. + /// Looks up a localized string similar to Lists all lists, yo ;). /// public static string lists_desc { get { @@ -3581,18 +3536,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `trello list`. /// - public static string lists_summary { + public static string lists_usage { get { - return ResourceManager.GetString("lists_summary", resourceCulture); + return ResourceManager.GetString("lists_usage", resourceCulture); } } /// - /// Looks up a localized string similar to lists list. + /// Looks up a localized string similar to liststreams ls. /// - public static string lists_text { + public static string liststreams_cmd { get { - return ResourceManager.GetString("lists_text", resourceCulture); + return ResourceManager.GetString("liststreams_cmd", resourceCulture); } } @@ -3608,18 +3563,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~ls`. /// - public static string liststreams_summary { + public static string liststreams_usage { get { - return ResourceManager.GetString("liststreams_summary", resourceCulture); + return ResourceManager.GetString("liststreams_usage", resourceCulture); } } /// - /// Looks up a localized string similar to liststreams ls. + /// Looks up a localized string similar to listwar lw. /// - public static string liststreams_text { + public static string listwar_cmd { get { - return ResourceManager.GetString("liststreams_text", resourceCulture); + return ResourceManager.GetString("listwar_cmd", resourceCulture); } } @@ -3635,18 +3590,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `,lw [war_number] or ,lw`. /// - public static string listwar_summary { + public static string listwar_usage { get { - return ResourceManager.GetString("listwar_summary", resourceCulture); + return ResourceManager.GetString("listwar_usage", resourceCulture); } } /// - /// Looks up a localized string similar to listwar lw. + /// Looks up a localized string similar to lmgtfy. /// - public static string listwar_text { + public static string lmgtfy_cmd { get { - return ResourceManager.GetString("listwar_text", resourceCulture); + return ResourceManager.GetString("lmgtfy_cmd", resourceCulture); } } @@ -3662,18 +3617,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~lmgtfy query`. /// - public static string lmgtfy_summary { + public static string lmgtfy_usage { get { - return ResourceManager.GetString("lmgtfy_summary", resourceCulture); + return ResourceManager.GetString("lmgtfy_usage", resourceCulture); } } /// - /// Looks up a localized string similar to lmgtfy. + /// Looks up a localized string similar to load. /// - public static string lmgtfy_text { + public static string load_cmd { get { - return ResourceManager.GetString("lmgtfy_text", resourceCulture); + return ResourceManager.GetString("load_cmd", resourceCulture); } } @@ -3689,23 +3644,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!load classical-1`. /// - public static string load_summary { + public static string load_usage { get { - return ResourceManager.GetString("load_summary", resourceCulture); + return ResourceManager.GetString("load_usage", resourceCulture); } } /// - /// Looks up a localized string similar to load. + /// Looks up a localized string similar to local lo. /// - public static string load_text { + public static string local_cmd { get { - return ResourceManager.GetString("load_text", resourceCulture); + return ResourceManager.GetString("local_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Queues a local file by specifying a full path. **Bot Owner Only!**. + /// Looks up a localized string similar to Queues a local file by specifying a full path.. /// public static string local_desc { get { @@ -3716,23 +3671,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!lo C:/music/mysong.mp3`. /// - public static string local_summary { + public static string local_usage { get { - return ResourceManager.GetString("local_summary", resourceCulture); + return ResourceManager.GetString("local_usage", resourceCulture); } } /// - /// Looks up a localized string similar to local lo. + /// Looks up a localized string similar to localplaylst lopl. /// - public static string local_text { + public static string localpl_cmd { get { - return ResourceManager.GetString("local_text", resourceCulture); + return ResourceManager.GetString("localpl_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Queues all songs from a directory. **Bot Owner Only!**. + /// Looks up a localized string similar to Queues all songs from a directory.. /// public static string localpl_desc { get { @@ -3743,23 +3698,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!lopl C:/music/classical`. /// - public static string localpl_summary { + public static string localpl_usage { get { - return ResourceManager.GetString("localpl_summary", resourceCulture); + return ResourceManager.GetString("localpl_usage", resourceCulture); } } /// - /// Looks up a localized string similar to localplaylst lopl. + /// Looks up a localized string similar to logignore. /// - public static string localpl_text { + public static string logignore_cmd { get { - return ResourceManager.GetString("localpl_text", resourceCulture); + return ResourceManager.GetString("logignore_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Toggles whether the .logserver command ignores this channel. Useful if you have hidden admin channel and public log channel. **Bot Owner Only!**. + /// Looks up a localized string similar to Toggles whether the .logserver command ignores this channel. Useful if you have hidden admin channel and public log channel.. /// public static string logignore_desc { get { @@ -3770,18 +3725,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.logignore`. /// - public static string logignore_summary { + public static string logignore_usage { get { - return ResourceManager.GetString("logignore_summary", resourceCulture); + return ResourceManager.GetString("logignore_usage", resourceCulture); } } /// - /// Looks up a localized string similar to logignore. + /// Looks up a localized string similar to logserver. /// - public static string logignore_text { + public static string logserver_cmd { get { - return ResourceManager.GetString("logignore_text", resourceCulture); + return ResourceManager.GetString("logserver_cmd", resourceCulture); } } @@ -3797,18 +3752,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.logserver`. /// - public static string logserver_summary { + public static string logserver_usage { get { - return ResourceManager.GetString("logserver_summary", resourceCulture); + return ResourceManager.GetString("logserver_usage", resourceCulture); } } /// - /// Looks up a localized string similar to logserver. + /// Looks up a localized string similar to lolban. /// - public static string logserver_text { + public static string lolban_cmd { get { - return ResourceManager.GetString("logserver_text", resourceCulture); + return ResourceManager.GetString("lolban_cmd", resourceCulture); } } @@ -3824,18 +3779,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~lolban`. /// - public static string lolban_summary { + public static string lolban_usage { get { - return ResourceManager.GetString("lolban_summary", resourceCulture); + return ResourceManager.GetString("lolban_usage", resourceCulture); } } /// - /// Looks up a localized string similar to lolban. + /// Looks up a localized string similar to lolchamp. /// - public static string lolban_text { + public static string lolchamp_cmd { get { - return ResourceManager.GetString("lolban_text", resourceCulture); + return ResourceManager.GetString("lolchamp_cmd", resourceCulture); } } @@ -3851,18 +3806,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~lolchamp Riven` or `~lolchamp Annie sup`. /// - public static string lolchamp_summary { + public static string lolchamp_usage { get { - return ResourceManager.GetString("lolchamp_summary", resourceCulture); + return ResourceManager.GetString("lolchamp_usage", resourceCulture); } } /// - /// Looks up a localized string similar to lolchamp. + /// Looks up a localized string similar to lsar. /// - public static string lolchamp_text { + public static string lsar_cmd { get { - return ResourceManager.GetString("lolchamp_text", resourceCulture); + return ResourceManager.GetString("lsar_cmd", resourceCulture); } } @@ -3878,18 +3833,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.lsar`. /// - public static string lsar_summary { + public static string lsar_usage { get { - return ResourceManager.GetString("lsar_summary", resourceCulture); + return ResourceManager.GetString("lsar_usage", resourceCulture); } } /// - /// Looks up a localized string similar to lsar. + /// Looks up a localized string similar to lstfilterwords lfw. /// - public static string lsar_text { + public static string lstfilterwords_cmd { get { - return ResourceManager.GetString("lsar_text", resourceCulture); + return ResourceManager.GetString("lstfilterwords_cmd", resourceCulture); } } @@ -3905,18 +3860,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;lfw`. /// - public static string lstfilterwords_summary { + public static string lstfilterwords_usage { get { - return ResourceManager.GetString("lstfilterwords_summary", resourceCulture); + return ResourceManager.GetString("lstfilterwords_usage", resourceCulture); } } /// - /// Looks up a localized string similar to lstfilterwords lfw. + /// Looks up a localized string similar to magicitem mi. /// - public static string lstfilterwords_text { + public static string magicitem_cmd { get { - return ResourceManager.GetString("lstfilterwords_text", resourceCulture); + return ResourceManager.GetString("magicitem_cmd", resourceCulture); } } @@ -3932,18 +3887,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~mi`. /// - public static string magicitem_summary { + public static string magicitem_usage { get { - return ResourceManager.GetString("magicitem_summary", resourceCulture); + return ResourceManager.GetString("magicitem_usage", resourceCulture); } } /// - /// Looks up a localized string similar to magicitem mi. + /// Looks up a localized string similar to manga mang mq. /// - public static string magicitem_text { + public static string manga_cmd { get { - return ResourceManager.GetString("magicitem_text", resourceCulture); + return ResourceManager.GetString("manga_cmd", resourceCulture); } } @@ -3959,18 +3914,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~mq Shingeki no kyojin`. /// - public static string manga_summary { + public static string manga_usage { get { - return ResourceManager.GetString("manga_summary", resourceCulture); + return ResourceManager.GetString("manga_usage", resourceCulture); } } /// - /// Looks up a localized string similar to manga mang mq. + /// Looks up a localized string similar to max. /// - public static string manga_text { + public static string max_cmd { get { - return ResourceManager.GetString("manga_text", resourceCulture); + return ResourceManager.GetString("max_cmd", resourceCulture); } } @@ -3986,18 +3941,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!max`. /// - public static string max_summary { + public static string max_usage { get { - return ResourceManager.GetString("max_summary", resourceCulture); + return ResourceManager.GetString("max_usage", resourceCulture); } } /// - /// Looks up a localized string similar to max. + /// Looks up a localized string similar to memegen. /// - public static string max_text { + public static string memegen_cmd { get { - return ResourceManager.GetString("max_text", resourceCulture); + return ResourceManager.GetString("memegen_cmd", resourceCulture); } } @@ -4013,18 +3968,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~memegen biw "gets iced coffee" "in the winter"`. /// - public static string memegen_summary { + public static string memegen_usage { get { - return ResourceManager.GetString("memegen_summary", resourceCulture); + return ResourceManager.GetString("memegen_usage", resourceCulture); } } /// - /// Looks up a localized string similar to memegen. + /// Looks up a localized string similar to memelist. /// - public static string memegen_text { + public static string memelist_cmd { get { - return ResourceManager.GetString("memegen_text", resourceCulture); + return ResourceManager.GetString("memelist_cmd", resourceCulture); } } @@ -4040,18 +3995,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~memelist`. /// - public static string memelist_summary { + public static string memelist_usage { get { - return ResourceManager.GetString("memelist_summary", resourceCulture); + return ResourceManager.GetString("memelist_usage", resourceCulture); } } /// - /// Looks up a localized string similar to memelist. + /// Looks up a localized string similar to mentionrole menro. /// - public static string memelist_text { + public static string mentionrole_cmd { get { - return ResourceManager.GetString("memelist_text", resourceCulture); + return ResourceManager.GetString("mentionrole_cmd", resourceCulture); } } @@ -4067,18 +4022,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.menro RoleName`. /// - public static string mentionrole_summary { + public static string mentionrole_usage { get { - return ResourceManager.GetString("mentionrole_summary", resourceCulture); + return ResourceManager.GetString("mentionrole_usage", resourceCulture); } } /// - /// Looks up a localized string similar to mentionrole menro. + /// Looks up a localized string similar to migratedata. /// - public static string mentionrole_text { + public static string migratedata_cmd { get { - return ResourceManager.GetString("mentionrole_text", resourceCulture); + return ResourceManager.GetString("migratedata_cmd", resourceCulture); } } @@ -4094,18 +4049,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.migratedata`. /// - public static string migratedata_summary { + public static string migratedata_usage { get { - return ResourceManager.GetString("migratedata_summary", resourceCulture); + return ResourceManager.GetString("migratedata_usage", resourceCulture); } } /// - /// Looks up a localized string similar to migratedata. + /// Looks up a localized string similar to modules mdls. /// - public static string migratedata_text { + public static string modules_cmd { get { - return ResourceManager.GetString("migratedata_text", resourceCulture); + return ResourceManager.GetString("modules_cmd", resourceCulture); } } @@ -4121,18 +4076,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `-modules` or `.modules`. /// - public static string modules_summary { + public static string modules_usage { get { - return ResourceManager.GetString("modules_summary", resourceCulture); + return ResourceManager.GetString("modules_usage", resourceCulture); } } /// - /// Looks up a localized string similar to modules mdls. + /// Looks up a localized string similar to move mv. /// - public static string modules_text { + public static string move_cmd { get { - return ResourceManager.GetString("modules_text", resourceCulture); + return ResourceManager.GetString("move_cmd", resourceCulture); } } @@ -4148,18 +4103,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!mv`. /// - public static string move_summary { + public static string move_usage { get { - return ResourceManager.GetString("move_summary", resourceCulture); + return ResourceManager.GetString("move_usage", resourceCulture); } } /// - /// Looks up a localized string similar to move mv. + /// Looks up a localized string similar to movelist ml. /// - public static string move_text { + public static string movelist_cmd { get { - return ResourceManager.GetString("move_text", resourceCulture); + return ResourceManager.GetString("movelist_cmd", resourceCulture); } } @@ -4175,18 +4130,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `>ml`. /// - public static string movelist_summary { + public static string movelist_usage { get { - return ResourceManager.GetString("movelist_summary", resourceCulture); + return ResourceManager.GetString("movelist_usage", resourceCulture); } } /// - /// Looks up a localized string similar to movelist ml. + /// Looks up a localized string similar to moveperm mp. /// - public static string movelist_text { + public static string moveperm_cmd { get { - return ResourceManager.GetString("movelist_text", resourceCulture); + return ResourceManager.GetString("moveperm_cmd", resourceCulture); } } @@ -4202,18 +4157,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;mp 2 4`. /// - public static string moveperm_summary { + public static string moveperm_usage { get { - return ResourceManager.GetString("moveperm_summary", resourceCulture); + return ResourceManager.GetString("moveperm_usage", resourceCulture); } } /// - /// Looks up a localized string similar to moveperm mp. + /// Looks up a localized string similar to movesong ms. /// - public static string moveperm_text { + public static string movesong_cmd { get { - return ResourceManager.GetString("moveperm_text", resourceCulture); + return ResourceManager.GetString("movesong_cmd", resourceCulture); } } @@ -4229,18 +4184,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!! ms 5>3`. /// - public static string movesong_summary { + public static string movesong_usage { get { - return ResourceManager.GetString("movesong_summary", resourceCulture); + return ResourceManager.GetString("movesong_usage", resourceCulture); } } /// - /// Looks up a localized string similar to movesong ms. + /// Looks up a localized string similar to mute min. /// - public static string movesong_text { + public static string mute_cmd { get { - return ResourceManager.GetString("movesong_text", resourceCulture); + return ResourceManager.GetString("mute_cmd", resourceCulture); } } @@ -4256,23 +4211,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!min`. /// - public static string mute_summary { + public static string mute_usage { get { - return ResourceManager.GetString("mute_summary", resourceCulture); + return ResourceManager.GetString("mute_usage", resourceCulture); } } /// - /// Looks up a localized string similar to mute min. + /// Looks up a localized string similar to newavatar setavatar. /// - public static string mute_text { + public static string newavatar_cmd { get { - return ResourceManager.GetString("mute_text", resourceCulture); + return ResourceManager.GetString("newavatar_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Sets a new avatar image for the NadekoBot. Argument is a direct link to an image. **Bot Owner Only!**. + /// Looks up a localized string similar to Sets a new avatar image for the NadekoBot. Argument is a direct link to an image. . /// public static string newavatar_desc { get { @@ -4283,18 +4238,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.setavatar http://i.imgur.com/xTG3a1I.jpg`. /// - public static string newavatar_summary { + public static string newavatar_usage { get { - return ResourceManager.GetString("newavatar_summary", resourceCulture); + return ResourceManager.GetString("newavatar_usage", resourceCulture); } } /// - /// Looks up a localized string similar to newavatar setavatar. + /// Looks up a localized string similar to next n. /// - public static string newavatar_text { + public static string next_cmd { get { - return ResourceManager.GetString("newavatar_text", resourceCulture); + return ResourceManager.GetString("next_cmd", resourceCulture); } } @@ -4310,18 +4265,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!n`. /// - public static string next_summary { + public static string next_usage { get { - return ResourceManager.GetString("next_summary", resourceCulture); + return ResourceManager.GetString("next_usage", resourceCulture); } } /// - /// Looks up a localized string similar to next n. + /// Looks up a localized string similar to nowplaying np. /// - public static string next_text { + public static string nowplaying_cmd { get { - return ResourceManager.GetString("next_text", resourceCulture); + return ResourceManager.GetString("nowplaying_cmd", resourceCulture); } } @@ -4337,18 +4292,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!np`. /// - public static string nowplaying_summary { + public static string nowplaying_usage { get { - return ResourceManager.GetString("nowplaying_summary", resourceCulture); + return ResourceManager.GetString("nowplaying_usage", resourceCulture); } } /// - /// Looks up a localized string similar to nowplaying np. + /// Looks up a localized string similar to nroll. /// - public static string nowplaying_text { + public static string nroll_cmd { get { - return ResourceManager.GetString("nowplaying_text", resourceCulture); + return ResourceManager.GetString("nroll_cmd", resourceCulture); } } @@ -4364,18 +4319,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `$nroll 5` (rolls 0-5) or `$nroll 5-15`. /// - public static string nroll_summary { + public static string nroll_usage { get { - return ResourceManager.GetString("nroll_summary", resourceCulture); + return ResourceManager.GetString("nroll_usage", resourceCulture); } } /// - /// Looks up a localized string similar to nroll. + /// Looks up a localized string similar to osu. /// - public static string nroll_text { + public static string osu_cmd { get { - return ResourceManager.GetString("nroll_text", resourceCulture); + return ResourceManager.GetString("osu_cmd", resourceCulture); } } @@ -4391,18 +4346,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~osu Name` or `~osu Name taiko`. /// - public static string osu_summary { + public static string osu_usage { get { - return ResourceManager.GetString("osu_summary", resourceCulture); + return ResourceManager.GetString("osu_usage", resourceCulture); } } /// - /// Looks up a localized string similar to osu. + /// Looks up a localized string similar to osu5. /// - public static string osu_text { + public static string osu5_cmd { get { - return ResourceManager.GetString("osu_text", resourceCulture); + return ResourceManager.GetString("osu5_cmd", resourceCulture); } } @@ -4418,18 +4373,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~osu5 Name`. /// - public static string osu5_summary { + public static string osu5_usage { get { - return ResourceManager.GetString("osu5_summary", resourceCulture); + return ResourceManager.GetString("osu5_usage", resourceCulture); } } /// - /// Looks up a localized string similar to osu5. + /// Looks up a localized string similar to osub. /// - public static string osu5_text { + public static string osub_cmd { get { - return ResourceManager.GetString("osu5_text", resourceCulture); + return ResourceManager.GetString("osub_cmd", resourceCulture); } } @@ -4445,18 +4400,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~osub https://osu.ppy.sh/s/127712`. /// - public static string osub_summary { + public static string osub_usage { get { - return ResourceManager.GetString("osub_summary", resourceCulture); + return ResourceManager.GetString("osub_usage", resourceCulture); } } /// - /// Looks up a localized string similar to osub. + /// Looks up a localized string similar to pause p. /// - public static string osub_text { + public static string pause_cmd { get { - return ResourceManager.GetString("osub_text", resourceCulture); + return ResourceManager.GetString("pause_cmd", resourceCulture); } } @@ -4472,18 +4427,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!p`. /// - public static string pause_summary { + public static string pause_usage { get { - return ResourceManager.GetString("pause_summary", resourceCulture); + return ResourceManager.GetString("pause_usage", resourceCulture); } } /// - /// Looks up a localized string similar to pause p. + /// Looks up a localized string similar to permrole pr. /// - public static string pause_text { + public static string permrole_cmd { get { - return ResourceManager.GetString("pause_text", resourceCulture); + return ResourceManager.GetString("permrole_cmd", resourceCulture); } } @@ -4499,18 +4454,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;pr role`. /// - public static string permrole_summary { + public static string permrole_usage { get { - return ResourceManager.GetString("permrole_summary", resourceCulture); + return ResourceManager.GetString("permrole_usage", resourceCulture); } } /// - /// Looks up a localized string similar to permrole pr. + /// Looks up a localized string similar to pick. /// - public static string permrole_text { + public static string pick_cmd { get { - return ResourceManager.GetString("permrole_text", resourceCulture); + return ResourceManager.GetString("pick_cmd", resourceCulture); } } @@ -4526,18 +4481,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `>pick`. /// - public static string pick_summary { + public static string pick_usage { get { - return ResourceManager.GetString("pick_summary", resourceCulture); + return ResourceManager.GetString("pick_usage", resourceCulture); } } /// - /// Looks up a localized string similar to pick. + /// Looks up a localized string similar to plant. /// - public static string pick_text { + public static string plant_cmd { get { - return ResourceManager.GetString("pick_text", resourceCulture); + return ResourceManager.GetString("plant_cmd", resourceCulture); } } @@ -4553,18 +4508,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `>plant`. /// - public static string plant_summary { + public static string plant_usage { get { - return ResourceManager.GetString("plant_summary", resourceCulture); + return ResourceManager.GetString("plant_usage", resourceCulture); } } /// - /// Looks up a localized string similar to plant. + /// Looks up a localized string similar to playlist pl. /// - public static string plant_text { + public static string playlist_cmd { get { - return ResourceManager.GetString("plant_text", resourceCulture); + return ResourceManager.GetString("playlist_cmd", resourceCulture); } } @@ -4580,18 +4535,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!pl playlist link or name`. /// - public static string playlist_summary { + public static string playlist_usage { get { - return ResourceManager.GetString("playlist_summary", resourceCulture); + return ResourceManager.GetString("playlist_usage", resourceCulture); } } /// - /// Looks up a localized string similar to playlist pl. + /// Looks up a localized string similar to playlists pls. /// - public static string playlist_text { + public static string playlists_cmd { get { - return ResourceManager.GetString("playlist_text", resourceCulture); + return ResourceManager.GetString("playlists_cmd", resourceCulture); } } @@ -4607,18 +4562,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!pls 1`. /// - public static string playlists_summary { + public static string playlists_usage { get { - return ResourceManager.GetString("playlists_summary", resourceCulture); + return ResourceManager.GetString("playlists_usage", resourceCulture); } } /// - /// Looks up a localized string similar to playlists pls. + /// Looks up a localized string similar to pokemon poke. /// - public static string playlists_text { + public static string pokemon_cmd { get { - return ResourceManager.GetString("playlists_text", resourceCulture); + return ResourceManager.GetString("pokemon_cmd", resourceCulture); } } @@ -4634,18 +4589,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~poke Sylveon`. /// - public static string pokemon_summary { + public static string pokemon_usage { get { - return ResourceManager.GetString("pokemon_summary", resourceCulture); + return ResourceManager.GetString("pokemon_usage", resourceCulture); } } /// - /// Looks up a localized string similar to pokemon poke. + /// Looks up a localized string similar to pokemonability pokeab. /// - public static string pokemon_text { + public static string pokemonability_cmd { get { - return ResourceManager.GetString("pokemon_text", resourceCulture); + return ResourceManager.GetString("pokemonability_cmd", resourceCulture); } } @@ -4661,23 +4616,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~pokeab "water gun"`. /// - public static string pokemonability_summary { + public static string pokemonability_usage { get { - return ResourceManager.GetString("pokemonability_summary", resourceCulture); + return ResourceManager.GetString("pokemonability_usage", resourceCulture); } } /// - /// Looks up a localized string similar to pokemonability pokeab. + /// Looks up a localized string similar to poll. /// - public static string pokemonability_text { + public static string poll_cmd { get { - return ResourceManager.GetString("pokemonability_text", resourceCulture); + return ResourceManager.GetString("poll_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Creates a poll, only person who has manage server permission can do it. **Needs Manage Server Permissions**. + /// Looks up a localized string similar to Creates a poll, only person who has manage server permission can do it.. /// public static string poll_desc { get { @@ -4688,18 +4643,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `>poll Question?;Answer1;Answ 2;A_3`. /// - public static string poll_summary { + public static string poll_usage { get { - return ResourceManager.GetString("poll_summary", resourceCulture); + return ResourceManager.GetString("poll_usage", resourceCulture); } } /// - /// Looks up a localized string similar to poll. + /// Looks up a localized string similar to pollend. /// - public static string poll_text { + public static string pollend_cmd { get { - return ResourceManager.GetString("poll_text", resourceCulture); + return ResourceManager.GetString("pollend_cmd", resourceCulture); } } @@ -4715,23 +4670,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `>pollend`. /// - public static string pollend_summary { + public static string pollend_usage { get { - return ResourceManager.GetString("pollend_summary", resourceCulture); + return ResourceManager.GetString("pollend_usage", resourceCulture); } } /// - /// Looks up a localized string similar to pollend. + /// Looks up a localized string similar to prune clr. /// - public static string pollend_text { + public static string prune_cmd { get { - return ResourceManager.GetString("pollend_text", resourceCulture); + return ResourceManager.GetString("prune_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to `.prune` removes all nadeko's messages in the last 100 messages.`.prune X` removes last X 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 'Someone's' messages in the channel. **Needs Manage Messages Permissions**. + /// Looks up a localized string similar to `.prune` removes all nadeko's messages in the last 100 messages.`.prune X` removes last X 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 'Someone's' messages in the channel. . /// public static string prune_desc { get { @@ -4742,18 +4697,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.prune` or `.prune 5` or `.prune @Someone` or `.prune @Someone X`. /// - public static string prune_summary { + public static string prune_usage { get { - return ResourceManager.GetString("prune_summary", resourceCulture); + return ResourceManager.GetString("prune_usage", resourceCulture); } } /// - /// Looks up a localized string similar to prune clr. + /// Looks up a localized string similar to queue q yq. /// - public static string prune_text { + public static string queue_cmd { get { - return ResourceManager.GetString("prune_text", resourceCulture); + return ResourceManager.GetString("queue_cmd", resourceCulture); } } @@ -4769,18 +4724,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!q Dream Of Venice`. /// - public static string queue_summary { + public static string queue_usage { get { - return ResourceManager.GetString("queue_summary", resourceCulture); + return ResourceManager.GetString("queue_usage", resourceCulture); } } /// - /// Looks up a localized string similar to queue q yq. + /// Looks up a localized string similar to race. /// - public static string queue_text { + public static string race_cmd { get { - return ResourceManager.GetString("queue_text", resourceCulture); + return ResourceManager.GetString("race_cmd", resourceCulture); } } @@ -4796,18 +4751,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `$race`. /// - public static string race_summary { + public static string race_usage { get { - return ResourceManager.GetString("race_summary", resourceCulture); + return ResourceManager.GetString("race_usage", resourceCulture); } } /// - /// Looks up a localized string similar to race. + /// Looks up a localized string similar to radio ra. /// - public static string race_text { + public static string radio_cmd { get { - return ResourceManager.GetString("race_text", resourceCulture); + return ResourceManager.GetString("radio_cmd", resourceCulture); } } @@ -4823,18 +4778,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!ra radio link here`. /// - public static string radio_summary { + public static string radio_usage { get { - return ResourceManager.GetString("radio_summary", resourceCulture); + return ResourceManager.GetString("radio_usage", resourceCulture); } } /// - /// Looks up a localized string similar to radio ra. + /// Looks up a localized string similar to raffle. /// - public static string radio_text { + public static string raffle_cmd { get { - return ResourceManager.GetString("radio_text", resourceCulture); + return ResourceManager.GetString("raffle_cmd", resourceCulture); } } @@ -4850,18 +4805,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `$raffle` or `$raffle RoleName`. /// - public static string raffle_summary { + public static string raffle_usage { get { - return ResourceManager.GetString("raffle_summary", resourceCulture); + return ResourceManager.GetString("raffle_usage", resourceCulture); } } /// - /// Looks up a localized string similar to raffle. + /// Looks up a localized string similar to randjoke rj. /// - public static string raffle_text { + public static string randjoke_cmd { get { - return ResourceManager.GetString("raffle_text", resourceCulture); + return ResourceManager.GetString("randjoke_cmd", resourceCulture); } } @@ -4877,18 +4832,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~rj`. /// - public static string randjoke_summary { + public static string randjoke_usage { get { - return ResourceManager.GetString("randjoke_summary", resourceCulture); + return ResourceManager.GetString("randjoke_usage", resourceCulture); } } /// - /// Looks up a localized string similar to randjoke rj. + /// Looks up a localized string similar to randomcat meow. /// - public static string randjoke_text { + public static string randomcat_cmd { get { - return ResourceManager.GetString("randjoke_text", resourceCulture); + return ResourceManager.GetString("randomcat_cmd", resourceCulture); } } @@ -4904,18 +4859,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~meow`. /// - public static string randomcat_summary { + public static string randomcat_usage { get { - return ResourceManager.GetString("randomcat_summary", resourceCulture); + return ResourceManager.GetString("randomcat_usage", resourceCulture); } } /// - /// Looks up a localized string similar to randomcat meow. + /// Looks up a localized string similar to randomdog woof. /// - public static string randomcat_text { + public static string randomdog_cmd { get { - return ResourceManager.GetString("randomcat_text", resourceCulture); + return ResourceManager.GetString("randomdog_cmd", resourceCulture); } } @@ -4931,18 +4886,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~woof`. /// - public static string randomdog_summary { + public static string randomdog_usage { get { - return ResourceManager.GetString("randomdog_summary", resourceCulture); + return ResourceManager.GetString("randomdog_usage", resourceCulture); } } /// - /// Looks up a localized string similar to randomdog woof. + /// Looks up a localized string similar to remind. /// - public static string randomdog_text { + public static string remind_cmd { get { - return ResourceManager.GetString("randomdog_text", resourceCulture); + return ResourceManager.GetString("remind_cmd", resourceCulture); } } @@ -4958,23 +4913,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.remind me 1d5h Do something` or `.remind #general Start now!`. /// - public static string remind_summary { + public static string remind_usage { get { - return ResourceManager.GetString("remind_summary", resourceCulture); + return ResourceManager.GetString("remind_usage", resourceCulture); } } /// - /// Looks up a localized string similar to remind. + /// Looks up a localized string similar to remindmsg. /// - public static string remind_text { + public static string remindmsg_cmd { get { - return ResourceManager.GetString("remind_text", resourceCulture); + return ResourceManager.GetString("remindmsg_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to 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!**. + /// Looks up a localized string similar to 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. . /// public static string remindmsg_desc { get { @@ -4985,18 +4940,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.remindmsg do something else`. /// - public static string remindmsg_summary { + public static string remindmsg_usage { get { - return ResourceManager.GetString("remindmsg_summary", resourceCulture); + return ResourceManager.GetString("remindmsg_usage", resourceCulture); } } /// - /// Looks up a localized string similar to remindmsg. + /// Looks up a localized string similar to remove rm. /// - public static string remindmsg_text { + public static string remove_cmd { get { - return ResourceManager.GetString("remindmsg_text", resourceCulture); + return ResourceManager.GetString("remove_cmd", resourceCulture); } } @@ -5012,23 +4967,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!rm 5`. /// - public static string remove_summary { + public static string remove_usage { get { - return ResourceManager.GetString("remove_summary", resourceCulture); + return ResourceManager.GetString("remove_usage", resourceCulture); } } /// - /// Looks up a localized string similar to remove rm. + /// Looks up a localized string similar to removeallroles rar. /// - public static string remove_text { + public static string removeallroles_cmd { get { - return ResourceManager.GetString("remove_text", resourceCulture); + return ResourceManager.GetString("removeallroles_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Removes all roles from a mentioned user. **Needs Manage Roles Permissions.**. + /// Looks up a localized string similar to Removes all roles from a mentioned user. . /// public static string removeallroles_desc { get { @@ -5039,18 +4994,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.rar @User`. /// - public static string removeallroles_summary { + public static string removeallroles_usage { get { - return ResourceManager.GetString("removeallroles_summary", resourceCulture); + return ResourceManager.GetString("removeallroles_usage", resourceCulture); } } /// - /// Looks up a localized string similar to removeallroles rar. + /// Looks up a localized string similar to removeperm rp. /// - public static string removeallroles_text { + public static string removeperm_cmd { get { - return ResourceManager.GetString("removeallroles_text", resourceCulture); + return ResourceManager.GetString("removeperm_cmd", resourceCulture); } } @@ -5066,23 +5021,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;rp 1`. /// - public static string removeperm_summary { + public static string removeperm_usage { get { - return ResourceManager.GetString("removeperm_summary", resourceCulture); + return ResourceManager.GetString("removeperm_usage", resourceCulture); } } /// - /// Looks up a localized string similar to removeperm rp. + /// Looks up a localized string similar to removeplaying rmlp repl. /// - public static string removeperm_text { + public static string removeplaying_cmd { get { - return ResourceManager.GetString("removeperm_text", resourceCulture); + return ResourceManager.GetString("removeplaying_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Removes a playing string on a given number. **Bot Owner Only!**. + /// Looks up a localized string similar to Removes a playing string on a given number. . /// public static string removeplaying_desc { get { @@ -5093,23 +5048,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.rmpl`. /// - public static string removeplaying_summary { + public static string removeplaying_usage { get { - return ResourceManager.GetString("removeplaying_summary", resourceCulture); + return ResourceManager.GetString("removeplaying_usage", resourceCulture); } } /// - /// Looks up a localized string similar to removeplaying rmlp repl. + /// Looks up a localized string similar to removerole rr. /// - public static string removeplaying_text { + public static string removerole_cmd { get { - return ResourceManager.GetString("removeplaying_text", resourceCulture); + return ResourceManager.GetString("removerole_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Removes a role from a given user. **Needs Manage Roles Permissions.**. + /// Looks up a localized string similar to Removes a role from a given user. . /// public static string removerole_desc { get { @@ -5120,18 +5075,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.rr @User Admin`. /// - public static string removerole_summary { + public static string removerole_usage { get { - return ResourceManager.GetString("removerole_summary", resourceCulture); + return ResourceManager.GetString("removerole_usage", resourceCulture); } } /// - /// Looks up a localized string similar to removerole rr. + /// Looks up a localized string similar to removestream rms. /// - public static string removerole_text { + public static string removestream_cmd { get { - return ResourceManager.GetString("removerole_text", resourceCulture); + return ResourceManager.GetString("removestream_cmd", resourceCulture); } } @@ -5147,18 +5102,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~rms SomeGuy`. /// - public static string removestream_summary { + public static string removestream_usage { get { - return ResourceManager.GetString("removestream_summary", resourceCulture); + return ResourceManager.GetString("removestream_usage", resourceCulture); } } /// - /// Looks up a localized string similar to removestream rms. + /// Looks up a localized string similar to renamerole renr. /// - public static string removestream_text { + public static string renamerole_cmd { get { - return ResourceManager.GetString("removestream_text", resourceCulture); + return ResourceManager.GetString("renamerole_cmd", resourceCulture); } } @@ -5174,23 +5129,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.renr "First role" SecondRole`. /// - public static string renamerole_summary { + public static string renamerole_usage { get { - return ResourceManager.GetString("renamerole_summary", resourceCulture); + return ResourceManager.GetString("renamerole_usage", resourceCulture); } } /// - /// Looks up a localized string similar to renamerole renr. + /// Looks up a localized string similar to repeat. /// - public static string renamerole_text { + public static string repeat_cmd { get { - return ResourceManager.GetString("renamerole_text", resourceCulture); + return ResourceManager.GetString("repeat_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Repeat a message every X minutes. If no parameters are specified, repeat is disabled. **Needs Manage Messages Permissions.**. + /// Looks up a localized string similar to Repeat a message every X minutes. If no parameters are specified, repeat is disabled.. /// public static string repeat_desc { get { @@ -5201,23 +5156,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.repeat 5 Hello there`. /// - public static string repeat_summary { + public static string repeat_usage { get { - return ResourceManager.GetString("repeat_summary", resourceCulture); + return ResourceManager.GetString("repeat_usage", resourceCulture); } } /// - /// Looks up a localized string similar to repeat. + /// Looks up a localized string similar to repeatinvoke repinv. /// - public static string repeat_text { + public static string repeatinvoke_cmd { get { - return ResourceManager.GetString("repeat_text", resourceCulture); + return ResourceManager.GetString("repeatinvoke_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Immediately shows the repeat message and restarts the timer. **Needs Manage Messages Permissions.**. + /// Looks up a localized string similar to Immediately shows the repeat message and restarts the timer. . /// public static string repeatinvoke_desc { get { @@ -5228,18 +5183,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.repinv`. /// - public static string repeatinvoke_summary { + public static string repeatinvoke_usage { get { - return ResourceManager.GetString("repeatinvoke_summary", resourceCulture); + return ResourceManager.GetString("repeatinvoke_usage", resourceCulture); } } /// - /// Looks up a localized string similar to repeatinvoke repinv. + /// Looks up a localized string similar to rpeatplaylst rpl. /// - public static string repeatinvoke_text { + public static string repeatpl_cmd { get { - return ResourceManager.GetString("repeatinvoke_text", resourceCulture); + return ResourceManager.GetString("repeatpl_cmd", resourceCulture); } } @@ -5255,18 +5210,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!rpl`. /// - public static string repeatpl_summary { + public static string repeatpl_usage { get { - return ResourceManager.GetString("repeatpl_summary", resourceCulture); + return ResourceManager.GetString("repeatpl_usage", resourceCulture); } } /// - /// Looks up a localized string similar to rpeatplaylst rpl. + /// Looks up a localized string similar to reptcursong rcs. /// - public static string repeatpl_text { + public static string reptcursong_cmd { get { - return ResourceManager.GetString("repeatpl_text", resourceCulture); + return ResourceManager.GetString("reptcursong_cmd", resourceCulture); } } @@ -5282,23 +5237,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!rcs`. /// - public static string reptcursong_summary { + public static string reptcursong_usage { get { - return ResourceManager.GetString("reptcursong_summary", resourceCulture); + return ResourceManager.GetString("reptcursong_usage", resourceCulture); } } /// - /// Looks up a localized string similar to reptcursong rcs. + /// Looks up a localized string similar to restart. /// - public static string reptcursong_text { + public static string restart_cmd { get { - return ResourceManager.GetString("reptcursong_text", resourceCulture); + return ResourceManager.GetString("restart_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Restarts the bot. Might not work. **Bot Owner Only**. + /// Looks up a localized string similar to Restarts the bot. Might not work.. /// public static string restart_desc { get { @@ -5309,18 +5264,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.restart`. /// - public static string restart_summary { + public static string restart_usage { get { - return ResourceManager.GetString("restart_summary", resourceCulture); + return ResourceManager.GetString("restart_usage", resourceCulture); } } /// - /// Looks up a localized string similar to restart. + /// Looks up a localized string similar to revav. /// - public static string restart_text { + public static string revav_cmd { get { - return ResourceManager.GetString("restart_text", resourceCulture); + return ResourceManager.GetString("revav_cmd", resourceCulture); } } @@ -5336,18 +5291,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~revav "@SomeGuy"`. /// - public static string revav_summary { + public static string revav_usage { get { - return ResourceManager.GetString("revav_summary", resourceCulture); + return ResourceManager.GetString("revav_usage", resourceCulture); } } /// - /// Looks up a localized string similar to revav. + /// Looks up a localized string similar to revimg. /// - public static string revav_text { + public static string revimg_cmd { get { - return ResourceManager.GetString("revav_text", resourceCulture); + return ResourceManager.GetString("revimg_cmd", resourceCulture); } } @@ -5363,18 +5318,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~revimg Image link`. /// - public static string revimg_summary { + public static string revimg_usage { get { - return ResourceManager.GetString("revimg_summary", resourceCulture); + return ResourceManager.GetString("revimg_usage", resourceCulture); } } /// - /// Looks up a localized string similar to revimg. + /// Looks up a localized string similar to rip. /// - public static string revimg_text { + public static string rip_cmd { get { - return ResourceManager.GetString("revimg_text", resourceCulture); + return ResourceManager.GetString("rip_cmd", resourceCulture); } } @@ -5390,18 +5345,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `@NadekoBot rip @Someone 2000`. /// - public static string rip_summary { + public static string rip_usage { get { - return ResourceManager.GetString("rip_summary", resourceCulture); + return ResourceManager.GetString("rip_usage", resourceCulture); } } /// - /// Looks up a localized string similar to rip. + /// Looks up a localized string similar to rmvfilterword rw. /// - public static string rip_text { + public static string rmvfilterword_cmd { get { - return ResourceManager.GetString("rip_text", resourceCulture); + return ResourceManager.GetString("rmvfilterword_cmd", resourceCulture); } } @@ -5417,18 +5372,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;rw poop`. /// - public static string rmvfilterword_summary { + public static string rmvfilterword_usage { get { - return ResourceManager.GetString("rmvfilterword_summary", resourceCulture); + return ResourceManager.GetString("rmvfilterword_usage", resourceCulture); } } /// - /// Looks up a localized string similar to rmvfilterword rw. + /// Looks up a localized string similar to rolecmd rc. /// - public static string rmvfilterword_text { + public static string rolecmd_cmd { get { - return ResourceManager.GetString("rmvfilterword_text", resourceCulture); + return ResourceManager.GetString("rolecmd_cmd", resourceCulture); } } @@ -5444,23 +5399,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;rc "command name" disable MyRole`. /// - public static string rolecmd_summary { + public static string rolecmd_usage { get { - return ResourceManager.GetString("rolecmd_summary", resourceCulture); + return ResourceManager.GetString("rolecmd_usage", resourceCulture); } } /// - /// Looks up a localized string similar to rolecmd rc. + /// Looks up a localized string similar to rolecolor rc. /// - public static string rolecmd_text { + public static string rolecolor_cmd { get { - return ResourceManager.GetString("rolecmd_text", resourceCulture); + return ResourceManager.GetString("rolecolor_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Set a role's color to the hex or 0-255 rgb color value provided. **Needs Manage Roles Permissions.**. + /// Looks up a localized string similar to Set a role's color to the hex or 0-255 rgb color value provided. . /// public static string rolecolor_desc { get { @@ -5471,18 +5426,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.rc Admin 255 200 100` or `.rc Admin ffba55`. /// - public static string rolecolor_summary { + public static string rolecolor_usage { get { - return ResourceManager.GetString("rolecolor_summary", resourceCulture); + return ResourceManager.GetString("rolecolor_usage", resourceCulture); } } /// - /// Looks up a localized string similar to rolecolor rc. + /// Looks up a localized string similar to rolemdl rm. /// - public static string rolecolor_text { + public static string rolemdl_cmd { get { - return ResourceManager.GetString("rolecolor_text", resourceCulture); + return ResourceManager.GetString("rolemdl_cmd", resourceCulture); } } @@ -5498,18 +5453,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;rm "module name" enable MyRole`. /// - public static string rolemdl_summary { + public static string rolemdl_usage { get { - return ResourceManager.GetString("rolemdl_summary", resourceCulture); + return ResourceManager.GetString("rolemdl_usage", resourceCulture); } } /// - /// Looks up a localized string similar to rolemdl rm. + /// Looks up a localized string similar to roleperms rp. /// - public static string rolemdl_text { + public static string roleperms_cmd { get { - return ResourceManager.GetString("rolemdl_text", resourceCulture); + return ResourceManager.GetString("roleperms_cmd", resourceCulture); } } @@ -5525,18 +5480,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;rp AwesomeRole`. /// - public static string roleperms_summary { + public static string roleperms_usage { get { - return ResourceManager.GetString("roleperms_summary", resourceCulture); + return ResourceManager.GetString("roleperms_usage", resourceCulture); } } /// - /// Looks up a localized string similar to roleperms rp. + /// Looks up a localized string similar to rolepermscopy rpc. /// - public static string roleperms_text { + public static string rolepermscopy_cmd { get { - return ResourceManager.GetString("roleperms_text", resourceCulture); + return ResourceManager.GetString("rolepermscopy_cmd", resourceCulture); } } @@ -5552,18 +5507,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;rpc Some Role ~ Some other role`. /// - public static string rolepermscopy_summary { + public static string rolepermscopy_usage { get { - return ResourceManager.GetString("rolepermscopy_summary", resourceCulture); + return ResourceManager.GetString("rolepermscopy_usage", resourceCulture); } } /// - /// Looks up a localized string similar to rolepermscopy rpc. + /// Looks up a localized string similar to roles. /// - public static string rolepermscopy_text { + public static string roles_cmd { get { - return ResourceManager.GetString("rolepermscopy_text", resourceCulture); + return ResourceManager.GetString("roles_cmd", resourceCulture); } } @@ -5579,18 +5534,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.roles`. /// - public static string roles_summary { + public static string roles_usage { get { - return ResourceManager.GetString("roles_summary", resourceCulture); + return ResourceManager.GetString("roles_usage", resourceCulture); } } /// - /// Looks up a localized string similar to roles. + /// Looks up a localized string similar to roll. /// - public static string roles_text { + public static string roll_cmd { get { - return ResourceManager.GetString("roles_text", resourceCulture); + return ResourceManager.GetString("roll_cmd", resourceCulture); } } @@ -5606,18 +5561,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `$roll` or `$roll 7` or `$roll 3d5`. /// - public static string roll_summary { + public static string roll_usage { get { - return ResourceManager.GetString("roll_summary", resourceCulture); + return ResourceManager.GetString("roll_usage", resourceCulture); } } /// - /// Looks up a localized string similar to roll. + /// Looks up a localized string similar to rolluo. /// - public static string roll_text { + public static string rolluo_cmd { get { - return ResourceManager.GetString("roll_text", resourceCulture); + return ResourceManager.GetString("rolluo_cmd", resourceCulture); } } @@ -5633,23 +5588,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `$rolluo` or `$rolluo 7` or `$rolluo 3d5`. /// - public static string rolluo_summary { + public static string rolluo_usage { get { - return ResourceManager.GetString("rolluo_summary", resourceCulture); + return ResourceManager.GetString("rolluo_usage", resourceCulture); } } /// - /// Looks up a localized string similar to rolluo. + /// Looks up a localized string similar to rotateplaying ropl. /// - public static string rolluo_text { + public static string rotateplaying_cmd { get { - return ResourceManager.GetString("rolluo_text", resourceCulture); + return ResourceManager.GetString("rotateplaying_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Toggles rotation of playing status of the dynamic strings you specified earlier. **Bot Owner Only!**. + /// Looks up a localized string similar to Toggles rotation of playing status of the dynamic strings you specified earlier.. /// public static string rotateplaying_desc { get { @@ -5660,18 +5615,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.ropl`. /// - public static string rotateplaying_summary { + public static string rotateplaying_usage { get { - return ResourceManager.GetString("rotateplaying_summary", resourceCulture); + return ResourceManager.GetString("rotateplaying_usage", resourceCulture); } } /// - /// Looks up a localized string similar to rotateplaying ropl. + /// Looks up a localized string similar to rps. /// - public static string rotateplaying_text { + public static string rps_cmd { get { - return ResourceManager.GetString("rotateplaying_text", resourceCulture); + return ResourceManager.GetString("rps_cmd", resourceCulture); } } @@ -5687,18 +5642,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `>rps scissors`. /// - public static string rps_summary { + public static string rps_usage { get { - return ResourceManager.GetString("rps_summary", resourceCulture); + return ResourceManager.GetString("rps_usage", resourceCulture); } } /// - /// Looks up a localized string similar to rps. + /// Looks up a localized string similar to rsar. /// - public static string rps_text { + public static string rsar_cmd { get { - return ResourceManager.GetString("rps_text", resourceCulture); + return ResourceManager.GetString("rsar_cmd", resourceCulture); } } @@ -5714,18 +5669,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.rsar`. /// - public static string rsar_summary { + public static string rsar_usage { get { - return ResourceManager.GetString("rsar_summary", resourceCulture); + return ResourceManager.GetString("rsar_usage", resourceCulture); } } /// - /// Looks up a localized string similar to rsar. + /// Looks up a localized string similar to rule34. /// - public static string rsar_text { + public static string rule34_cmd { get { - return ResourceManager.GetString("rsar_text", resourceCulture); + return ResourceManager.GetString("rule34_cmd", resourceCulture); } } @@ -5741,18 +5696,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~rule34 yuri+kissing`. /// - public static string rule34_summary { + public static string rule34_usage { get { - return ResourceManager.GetString("rule34_summary", resourceCulture); + return ResourceManager.GetString("rule34_usage", resourceCulture); } } /// - /// Looks up a localized string similar to rule34. + /// Looks up a localized string similar to safebooru. /// - public static string rule34_text { + public static string safebooru_cmd { get { - return ResourceManager.GetString("rule34_text", resourceCulture); + return ResourceManager.GetString("safebooru_cmd", resourceCulture); } } @@ -5768,18 +5723,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~safebooru yuri+kissing`. /// - public static string safebooru_summary { + public static string safebooru_usage { get { - return ResourceManager.GetString("safebooru_summary", resourceCulture); + return ResourceManager.GetString("safebooru_usage", resourceCulture); } } /// - /// Looks up a localized string similar to safebooru. + /// Looks up a localized string similar to save. /// - public static string safebooru_text { + public static string save_cmd { get { - return ResourceManager.GetString("safebooru_text", resourceCulture); + return ResourceManager.GetString("save_cmd", resourceCulture); } } @@ -5795,23 +5750,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!save classical1`. /// - public static string save_summary { + public static string save_usage { get { - return ResourceManager.GetString("save_summary", resourceCulture); + return ResourceManager.GetString("save_usage", resourceCulture); } } /// - /// Looks up a localized string similar to save. + /// Looks up a localized string similar to savechat. /// - public static string save_text { + public static string savechat_cmd { get { - return ResourceManager.GetString("save_text", resourceCulture); + return ResourceManager.GetString("savechat_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Saves a number of messages to a text file and sends it to you. **Bot Owner Only**. + /// Looks up a localized string similar to Saves a number of messages to a text file and sends it to you.. /// public static string savechat_desc { get { @@ -5822,23 +5777,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.savechat 150`. /// - public static string savechat_summary { + public static string savechat_usage { get { - return ResourceManager.GetString("savechat_summary", resourceCulture); + return ResourceManager.GetString("savechat_usage", resourceCulture); } } /// - /// Looks up a localized string similar to savechat. + /// Looks up a localized string similar to scsc. /// - public static string savechat_text { + public static string scsc_cmd { get { - return ResourceManager.GetString("savechat_text", resourceCulture); + return ResourceManager.GetString("scsc_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Starts an instance of cross server channel. You will get a token as a DM that other people will use to tune in to the same instance. **Bot Owner Only.**. + /// Looks up a localized string similar to Starts an instance of cross server channel. You will get a token as a DM that other people will use to tune in to the same instance.. /// public static string scsc_desc { get { @@ -5849,23 +5804,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.scsc`. /// - public static string scsc_summary { + public static string scsc_usage { get { - return ResourceManager.GetString("scsc_summary", resourceCulture); + return ResourceManager.GetString("scsc_usage", resourceCulture); } } /// - /// Looks up a localized string similar to scsc. + /// Looks up a localized string similar to send. /// - public static string scsc_text { + public static string send_cmd { get { - return ResourceManager.GetString("scsc_text", resourceCulture); + return ResourceManager.GetString("send_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Send a message to someone on a different server through the bot. **Bot Owner Only!**. + /// Looks up a localized string similar to Send a message to someone on a different server through the bot. . /// public static string send_desc { get { @@ -5876,23 +5831,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.send sid. /// - public static string send_summary { + public static string send_usage { get { - return ResourceManager.GetString("send_summary", resourceCulture); + return ResourceManager.GetString("send_usage", resourceCulture); } } /// - /// Looks up a localized string similar to send. + /// Looks up a localized string similar to sbl. /// - public static string send_text { + public static string serverblacklist_cmd { get { - return ResourceManager.GetString("send_text", resourceCulture); + return ResourceManager.GetString("serverblacklist_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Blacklists a server by a name or id (#general for example). **BOT OWNER ONLY**. + /// Looks up a localized string similar to Either [add]s or [rem]oves a server specified by a Name or ID from a blacklist.. /// public static string serverblacklist_desc { get { @@ -5901,20 +5856,20 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `;sbl [servername/serverid]`. + /// Looks up a localized string similar to `;sbl add 12312321312` or `;sbl rem SomeTrashServer`. /// - public static string serverblacklist_summary { + public static string serverblacklist_usage { get { - return ResourceManager.GetString("serverblacklist_summary", resourceCulture); + return ResourceManager.GetString("serverblacklist_usage", resourceCulture); } } /// - /// Looks up a localized string similar to sbl. + /// Looks up a localized string similar to serverid sid. /// - public static string serverblacklist_text { + public static string serverid_cmd { get { - return ResourceManager.GetString("serverblacklist_text", resourceCulture); + return ResourceManager.GetString("serverid_cmd", resourceCulture); } } @@ -5930,18 +5885,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.sid`. /// - public static string serverid_summary { + public static string serverid_usage { get { - return ResourceManager.GetString("serverid_summary", resourceCulture); + return ResourceManager.GetString("serverid_usage", resourceCulture); } } /// - /// Looks up a localized string similar to serverid sid. + /// Looks up a localized string similar to serverinfo sinfo. /// - public static string serverid_text { + public static string serverinfo_cmd { get { - return ResourceManager.GetString("serverid_text", resourceCulture); + return ResourceManager.GetString("serverinfo_cmd", resourceCulture); } } @@ -5957,23 +5912,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.sinfo Some Server`. /// - public static string serverinfo_summary { + public static string serverinfo_usage { get { - return ResourceManager.GetString("serverinfo_summary", resourceCulture); + return ResourceManager.GetString("serverinfo_usage", resourceCulture); } } /// - /// Looks up a localized string similar to serverinfo sinfo. + /// Looks up a localized string similar to setchanlname schn. /// - public static string serverinfo_text { + public static string setchanlname_cmd { get { - return ResourceManager.GetString("serverinfo_text", resourceCulture); + return ResourceManager.GetString("setchanlname_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Changed the name of the current channel. **Needs Manage Channel Permissions.**. + /// Looks up a localized string similar to Changed the name of the current channel. . /// public static string setchanlname_desc { get { @@ -5984,23 +5939,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.schn NewName`. /// - public static string setchanlname_summary { + public static string setchanlname_usage { get { - return ResourceManager.GetString("setchanlname_summary", resourceCulture); + return ResourceManager.GetString("setchanlname_usage", resourceCulture); } } /// - /// Looks up a localized string similar to setchanlname schn. + /// Looks up a localized string similar to setgame. /// - public static string setchanlname_text { + public static string setgame_cmd { get { - return ResourceManager.GetString("setchanlname_text", resourceCulture); + return ResourceManager.GetString("setgame_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Sets the bots game. **Bot Owner Only!**. + /// Looks up a localized string similar to Sets the bots game. . /// public static string setgame_desc { get { @@ -6011,18 +5966,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.setgame Playing with kwoth`. /// - public static string setgame_summary { + public static string setgame_usage { get { - return ResourceManager.GetString("setgame_summary", resourceCulture); + return ResourceManager.GetString("setgame_usage", resourceCulture); } } /// - /// Looks up a localized string similar to setgame. + /// Looks up a localized string similar to setmaxqueue smq. /// - public static string setgame_text { + public static string setmaxqueue_cmd { get { - return ResourceManager.GetString("setgame_text", resourceCulture); + return ResourceManager.GetString("setmaxqueue_cmd", resourceCulture); } } @@ -6038,23 +5993,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!smq 50` or `!!smq`. /// - public static string setmaxqueue_summary { + public static string setmaxqueue_usage { get { - return ResourceManager.GetString("setmaxqueue_summary", resourceCulture); + return ResourceManager.GetString("setmaxqueue_usage", resourceCulture); } } /// - /// Looks up a localized string similar to setmaxqueue smq. + /// Looks up a localized string similar to setname newnm. /// - public static string setmaxqueue_text { + public static string setname_cmd { get { - return ResourceManager.GetString("setmaxqueue_text", resourceCulture); + return ResourceManager.GetString("setname_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Give the bot a new name. **Bot Owner Only!**. + /// Looks up a localized string similar to Give the bot a new name. . /// public static string setname_desc { get { @@ -6065,23 +6020,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.newnm BotName`. /// - public static string setname_summary { + public static string setname_usage { get { - return ResourceManager.GetString("setname_summary", resourceCulture); + return ResourceManager.GetString("setname_usage", resourceCulture); } } /// - /// Looks up a localized string similar to setname newnm. + /// Looks up a localized string similar to setrole sr. /// - public static string setname_text { + public static string setrole_cmd { get { - return ResourceManager.GetString("setname_text", resourceCulture); + return ResourceManager.GetString("setrole_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Sets a role for a given user. **Needs Manage Roles Permissions.**. + /// Looks up a localized string similar to Sets a role for a given user. . /// public static string setrole_desc { get { @@ -6092,23 +6047,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.sr @User Guest`. /// - public static string setrole_summary { + public static string setrole_usage { get { - return ResourceManager.GetString("setrole_summary", resourceCulture); + return ResourceManager.GetString("setrole_usage", resourceCulture); } } /// - /// Looks up a localized string similar to setrole sr. + /// Looks up a localized string similar to settopic st. /// - public static string setrole_text { + public static string settopic_cmd { get { - return ResourceManager.GetString("setrole_text", resourceCulture); + return ResourceManager.GetString("settopic_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Sets a topic on the current channel. **Needs Manage Channel Permissions.**. + /// Looks up a localized string similar to Sets a topic on the current channel. . /// public static string settopic_desc { get { @@ -6119,18 +6074,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.st My new topic`. /// - public static string settopic_summary { + public static string settopic_usage { get { - return ResourceManager.GetString("settopic_summary", resourceCulture); + return ResourceManager.GetString("settopic_usage", resourceCulture); } } /// - /// Looks up a localized string similar to settopic st. + /// Looks up a localized string similar to settype. /// - public static string settopic_text { + public static string settype_cmd { get { - return ResourceManager.GetString("settopic_text", resourceCulture); + return ResourceManager.GetString("settype_cmd", resourceCulture); } } @@ -6146,18 +6101,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `>settype fire`. /// - public static string settype_summary { + public static string settype_usage { get { - return ResourceManager.GetString("settype_summary", resourceCulture); + return ResourceManager.GetString("settype_usage", resourceCulture); } } /// - /// Looks up a localized string similar to settype. + /// Looks up a localized string similar to showcustreact scr. /// - public static string settype_text { + public static string showcustreact_cmd { get { - return ResourceManager.GetString("settype_text", resourceCulture); + return ResourceManager.GetString("showcustreact_cmd", resourceCulture); } } @@ -6173,18 +6128,45 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.scr %mention% bb`. /// - public static string showcustreact_summary { + public static string showcustreact_usage { get { - return ResourceManager.GetString("showcustreact_summary", resourceCulture); + return ResourceManager.GetString("showcustreact_usage", resourceCulture); } } /// - /// Looks up a localized string similar to showcustreact scr. + /// Looks up a localized string similar to showemojis se. /// - public static string showcustreact_text { + public static string showemojis_cmd { get { - return ResourceManager.GetString("showcustreact_text", resourceCulture); + return ResourceManager.GetString("showemojis_cmd", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Shows a name and a link to every special emoji in the message.. + /// + public static string showemojis_desc { + get { + return ResourceManager.GetString("showemojis_desc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to `.se A message full of emojis`. + /// + public static string showemojis_usage { + get { + return ResourceManager.GetString("showemojis_usage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to ... + /// + public static string showquote_cmd { + get { + return ResourceManager.GetString("showquote_cmd", resourceCulture); } } @@ -6200,18 +6182,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `... abc`. /// - public static string showquote_summary { + public static string showquote_usage { get { - return ResourceManager.GetString("showquote_summary", resourceCulture); + return ResourceManager.GetString("showquote_usage", resourceCulture); } } /// - /// Looks up a localized string similar to ... + /// Looks up a localized string similar to shuffle sh. /// - public static string showquote_text { + public static string shuffle_cmd { get { - return ResourceManager.GetString("showquote_text", resourceCulture); + return ResourceManager.GetString("shuffle_cmd", resourceCulture); } } @@ -6227,23 +6209,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!sh`. /// - public static string shuffle_summary { + public static string shuffle_usage { get { - return ResourceManager.GetString("shuffle_summary", resourceCulture); + return ResourceManager.GetString("shuffle_usage", resourceCulture); } } /// - /// Looks up a localized string similar to shuffle sh. + /// Looks up a localized string similar to slowmode. /// - public static string shuffle_text { + public static string slowmode_cmd { get { - return ResourceManager.GetString("shuffle_text", resourceCulture); + return ResourceManager.GetString("slowmode_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Toggles slow mode. When ON, users will be able to send only 1 message every 5 seconds. **Needs Manage Messages Permissions.**. + /// Looks up a localized string similar to Toggles slow mode. When ON, users will be able to send only 1 message every 5 seconds. . /// public static string slowmode_desc { get { @@ -6254,23 +6236,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.slowmode`. /// - public static string slowmode_summary { + public static string slowmode_usage { get { - return ResourceManager.GetString("slowmode_summary", resourceCulture); + return ResourceManager.GetString("slowmode_usage", resourceCulture); } } /// - /// Looks up a localized string similar to slowmode. + /// Looks up a localized string similar to softban sb. /// - public static string slowmode_text { + public static string softban_cmd { get { - return ResourceManager.GetString("slowmode_text", resourceCulture); + return ResourceManager.GetString("softban_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Bans and then unbans a user by id or name with an optional message. **Needs Ban Permissions.**. + /// Looks up a localized string similar to Bans and then unbans a user by id or name with an optional message. . /// public static string softban_desc { get { @@ -6281,18 +6263,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.sb "@some Guy" Your behaviour is toxic.`. /// - public static string softban_summary { + public static string softban_usage { get { - return ResourceManager.GetString("softban_summary", resourceCulture); + return ResourceManager.GetString("softban_usage", resourceCulture); } } /// - /// Looks up a localized string similar to softban sb. + /// Looks up a localized string similar to soundcloudpl scpl. /// - public static string softban_text { + public static string soundcloudpl_cmd { get { - return ResourceManager.GetString("softban_text", resourceCulture); + return ResourceManager.GetString("soundcloudpl_cmd", resourceCulture); } } @@ -6308,18 +6290,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!scpl soundcloudseturl`. /// - public static string soundcloudpl_summary { + public static string soundcloudpl_usage { get { - return ResourceManager.GetString("soundcloudpl_summary", resourceCulture); + return ResourceManager.GetString("soundcloudpl_usage", resourceCulture); } } /// - /// Looks up a localized string similar to soundcloudpl scpl. + /// Looks up a localized string similar to soundcloudqueue sq. /// - public static string soundcloudpl_text { + public static string soundcloudqueue_cmd { get { - return ResourceManager.GetString("soundcloudpl_text", resourceCulture); + return ResourceManager.GetString("soundcloudqueue_cmd", resourceCulture); } } @@ -6335,23 +6317,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!sq Dream Of Venice`. /// - public static string soundcloudqueue_summary { + public static string soundcloudqueue_usage { get { - return ResourceManager.GetString("soundcloudqueue_summary", resourceCulture); + return ResourceManager.GetString("soundcloudqueue_usage", resourceCulture); } } /// - /// Looks up a localized string similar to soundcloudqueue sq. + /// Looks up a localized string similar to spmom. /// - public static string soundcloudqueue_text { + public static string spmom_cmd { get { - return ResourceManager.GetString("soundcloudqueue_text", resourceCulture); + return ResourceManager.GetString("spmom_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Toggles whether mentions of other offline users on your server will send a pm to them. **Needs Manage Server Permissions.**. + /// Looks up a localized string similar to Toggles whether mentions of other offline users on your server will send a pm to them. . /// public static string spmom_desc { get { @@ -6362,18 +6344,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.spmom`. /// - public static string spmom_summary { + public static string spmom_usage { get { - return ResourceManager.GetString("spmom_summary", resourceCulture); + return ResourceManager.GetString("spmom_usage", resourceCulture); } } /// - /// Looks up a localized string similar to spmom. + /// Looks up a localized string similar to srvrcmd sc. /// - public static string spmom_text { + public static string srvrcmd_cmd { get { - return ResourceManager.GetString("spmom_text", resourceCulture); + return ResourceManager.GetString("srvrcmd_cmd", resourceCulture); } } @@ -6389,18 +6371,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;sc "command name" disable`. /// - public static string srvrcmd_summary { + public static string srvrcmd_usage { get { - return ResourceManager.GetString("srvrcmd_summary", resourceCulture); + return ResourceManager.GetString("srvrcmd_usage", resourceCulture); } } /// - /// Looks up a localized string similar to srvrcmd sc. + /// Looks up a localized string similar to srvrfilterinv sfi. /// - public static string srvrcmd_text { + public static string srvrfilterinv_cmd { get { - return ResourceManager.GetString("srvrcmd_text", resourceCulture); + return ResourceManager.GetString("srvrfilterinv_cmd", resourceCulture); } } @@ -6416,18 +6398,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;sfi disable`. /// - public static string srvrfilterinv_summary { + public static string srvrfilterinv_usage { get { - return ResourceManager.GetString("srvrfilterinv_summary", resourceCulture); + return ResourceManager.GetString("srvrfilterinv_usage", resourceCulture); } } /// - /// Looks up a localized string similar to srvrfilterinv sfi. + /// Looks up a localized string similar to srvrfilterwords sfw. /// - public static string srvrfilterinv_text { + public static string srvrfilterwords_cmd { get { - return ResourceManager.GetString("srvrfilterinv_text", resourceCulture); + return ResourceManager.GetString("srvrfilterwords_cmd", resourceCulture); } } @@ -6443,18 +6425,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;sfw disable`. /// - public static string srvrfilterwords_summary { + public static string srvrfilterwords_usage { get { - return ResourceManager.GetString("srvrfilterwords_summary", resourceCulture); + return ResourceManager.GetString("srvrfilterwords_usage", resourceCulture); } } /// - /// Looks up a localized string similar to srvrfilterwords sfw. + /// Looks up a localized string similar to srvrmdl sm. /// - public static string srvrfilterwords_text { + public static string srvrmdl_cmd { get { - return ResourceManager.GetString("srvrfilterwords_text", resourceCulture); + return ResourceManager.GetString("srvrmdl_cmd", resourceCulture); } } @@ -6470,18 +6452,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;sm "module name" enable`. /// - public static string srvrmdl_summary { + public static string srvrmdl_usage { get { - return ResourceManager.GetString("srvrmdl_summary", resourceCulture); + return ResourceManager.GetString("srvrmdl_usage", resourceCulture); } } /// - /// Looks up a localized string similar to srvrmdl sm. + /// Looks up a localized string similar to srvrperms sp. /// - public static string srvrmdl_text { + public static string srvrperms_cmd { get { - return ResourceManager.GetString("srvrmdl_text", resourceCulture); + return ResourceManager.GetString("srvrperms_cmd", resourceCulture); } } @@ -6497,18 +6479,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;sp`. /// - public static string srvrperms_summary { + public static string srvrperms_usage { get { - return ResourceManager.GetString("srvrperms_summary", resourceCulture); + return ResourceManager.GetString("srvrperms_usage", resourceCulture); } } /// - /// Looks up a localized string similar to srvrperms sp. + /// Looks up a localized string similar to startwar sw. /// - public static string srvrperms_text { + public static string startwar_cmd { get { - return ResourceManager.GetString("srvrperms_text", resourceCulture); + return ResourceManager.GetString("startwar_cmd", resourceCulture); } } @@ -6524,18 +6506,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `,sw 15`. /// - public static string startwar_summary { + public static string startwar_usage { get { - return ResourceManager.GetString("startwar_summary", resourceCulture); + return ResourceManager.GetString("startwar_usage", resourceCulture); } } /// - /// Looks up a localized string similar to startwar sw. + /// Looks up a localized string similar to stats. /// - public static string startwar_text { + public static string stats_cmd { get { - return ResourceManager.GetString("startwar_text", resourceCulture); + return ResourceManager.GetString("stats_cmd", resourceCulture); } } @@ -6551,18 +6533,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.stats`. /// - public static string stats_summary { + public static string stats_usage { get { - return ResourceManager.GetString("stats_summary", resourceCulture); + return ResourceManager.GetString("stats_usage", resourceCulture); } } /// - /// Looks up a localized string similar to stats. + /// Looks up a localized string similar to stop s. /// - public static string stats_text { + public static string stop_cmd { get { - return ResourceManager.GetString("stats_text", resourceCulture); + return ResourceManager.GetString("stop_cmd", resourceCulture); } } @@ -6578,23 +6560,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!s`. /// - public static string stop_summary { + public static string stop_usage { get { - return ResourceManager.GetString("stop_summary", resourceCulture); + return ResourceManager.GetString("stop_usage", resourceCulture); } } /// - /// Looks up a localized string similar to stop s. + /// Looks up a localized string similar to take. /// - public static string stop_text { + public static string take_cmd { get { - return ResourceManager.GetString("stop_text", resourceCulture); + return ResourceManager.GetString("take_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Takes a certain amount of flowers from someone. **Bot Owner Only!**. + /// Looks up a localized string similar to Takes a certain amount of flowers from someone. . /// public static string take_desc { get { @@ -6605,18 +6587,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `$take 1 "@someguy"`. /// - public static string take_summary { + public static string take_usage { get { - return ResourceManager.GetString("take_summary", resourceCulture); + return ResourceManager.GetString("take_usage", resourceCulture); } } /// - /// Looks up a localized string similar to take. + /// Looks up a localized string similar to togglexclsar tesar. /// - public static string take_text { + public static string tesar_cmd { get { - return ResourceManager.GetString("take_text", resourceCulture); + return ResourceManager.GetString("tesar_cmd", resourceCulture); } } @@ -6632,18 +6614,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.tesar`. /// - public static string tesar_summary { + public static string tesar_usage { get { - return ResourceManager.GetString("tesar_summary", resourceCulture); + return ResourceManager.GetString("tesar_usage", resourceCulture); } } /// - /// Looks up a localized string similar to togglexclsar tesar. + /// Looks up a localized string similar to tl. /// - public static string tesar_text { + public static string tl_cmd { get { - return ResourceManager.GetString("tesar_text", resourceCulture); + return ResourceManager.GetString("tl_cmd", resourceCulture); } } @@ -6659,18 +6641,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `>tl`. /// - public static string tl_summary { + public static string tl_usage { get { - return ResourceManager.GetString("tl_summary", resourceCulture); + return ResourceManager.GetString("tl_usage", resourceCulture); } } /// - /// Looks up a localized string similar to tl. + /// Looks up a localized string similar to tq. /// - public static string tl_text { + public static string tq_cmd { get { - return ResourceManager.GetString("tl_text", resourceCulture); + return ResourceManager.GetString("tq_cmd", resourceCulture); } } @@ -6686,18 +6668,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `>tq`. /// - public static string tq_summary { + public static string tq_usage { get { - return ResourceManager.GetString("tq_summary", resourceCulture); + return ResourceManager.GetString("tq_usage", resourceCulture); } } /// - /// Looks up a localized string similar to tq. + /// Looks up a localized string similar to translangs. /// - public static string tq_text { + public static string translangs_cmd { get { - return ResourceManager.GetString("tq_text", resourceCulture); + return ResourceManager.GetString("translangs_cmd", resourceCulture); } } @@ -6713,18 +6695,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~translangs` or `~translangs language`. /// - public static string translangs_summary { + public static string translangs_usage { get { - return ResourceManager.GetString("translangs_summary", resourceCulture); + return ResourceManager.GetString("translangs_usage", resourceCulture); } } /// - /// Looks up a localized string similar to translangs. + /// Looks up a localized string similar to translate trans. /// - public static string translangs_text { + public static string translate_cmd { get { - return ResourceManager.GetString("translangs_text", resourceCulture); + return ResourceManager.GetString("translate_cmd", resourceCulture); } } @@ -6740,18 +6722,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~trans en>fr Hello`. /// - public static string translate_summary { + public static string translate_usage { get { - return ResourceManager.GetString("translate_summary", resourceCulture); + return ResourceManager.GetString("translate_usage", resourceCulture); } } /// - /// Looks up a localized string similar to translate trans. + /// Looks up a localized string similar to trivia t. /// - public static string translate_text { + public static string trivia_cmd { get { - return ResourceManager.GetString("translate_text", resourceCulture); + return ResourceManager.GetString("trivia_cmd", resourceCulture); } } @@ -6767,18 +6749,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `>t nohint` or `>t 5 nohint`. /// - public static string trivia_summary { + public static string trivia_usage { get { - return ResourceManager.GetString("trivia_summary", resourceCulture); + return ResourceManager.GetString("trivia_usage", resourceCulture); } } /// - /// Looks up a localized string similar to trivia t. + /// Looks up a localized string similar to twitch tw. /// - public static string trivia_text { + public static string twitch_cmd { get { - return ResourceManager.GetString("trivia_text", resourceCulture); + return ResourceManager.GetString("twitch_cmd", resourceCulture); } } @@ -6794,18 +6776,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~twitch SomeStreamer`. /// - public static string twitch_summary { + public static string twitch_usage { get { - return ResourceManager.GetString("twitch_summary", resourceCulture); + return ResourceManager.GetString("twitch_usage", resourceCulture); } } /// - /// Looks up a localized string similar to twitch tw. + /// Looks up a localized string similar to type. /// - public static string twitch_text { + public static string type_cmd { get { - return ResourceManager.GetString("twitch_text", resourceCulture); + return ResourceManager.GetString("type_cmd", resourceCulture); } } @@ -6821,23 +6803,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `>type @someone`. /// - public static string type_summary { + public static string type_usage { get { - return ResourceManager.GetString("type_summary", resourceCulture); + return ResourceManager.GetString("type_usage", resourceCulture); } } /// - /// Looks up a localized string similar to type. + /// Looks up a localized string similar to typeadd. /// - public static string type_text { + public static string typeadd_cmd { get { - return ResourceManager.GetString("type_text", resourceCulture); + return ResourceManager.GetString("typeadd_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Adds a new article to the typing contest. Owner only.. + /// Looks up a localized string similar to Adds a new article to the typing contest.. /// public static string typeadd_desc { get { @@ -6848,18 +6830,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `>typeadd wordswords`. /// - public static string typeadd_summary { + public static string typeadd_usage { get { - return ResourceManager.GetString("typeadd_summary", resourceCulture); + return ResourceManager.GetString("typeadd_usage", resourceCulture); } } /// - /// Looks up a localized string similar to typeadd. + /// Looks up a localized string similar to typestart. /// - public static string typeadd_text { + public static string typestart_cmd { get { - return ResourceManager.GetString("typeadd_text", resourceCulture); + return ResourceManager.GetString("typestart_cmd", resourceCulture); } } @@ -6875,18 +6857,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `>typestart`. /// - public static string typestart_summary { + public static string typestart_usage { get { - return ResourceManager.GetString("typestart_summary", resourceCulture); + return ResourceManager.GetString("typestart_usage", resourceCulture); } } /// - /// Looks up a localized string similar to typestart. + /// Looks up a localized string similar to typestop. /// - public static string typestart_text { + public static string typestop_cmd { get { - return ResourceManager.GetString("typestart_text", resourceCulture); + return ResourceManager.GetString("typestop_cmd", resourceCulture); } } @@ -6902,23 +6884,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `>typestop`. /// - public static string typestop_summary { + public static string typestop_usage { get { - return ResourceManager.GetString("typestop_summary", resourceCulture); + return ResourceManager.GetString("typestop_usage", resourceCulture); } } /// - /// Looks up a localized string similar to typestop. + /// Looks up a localized string similar to unbind. /// - public static string typestop_text { + public static string unbind_cmd { get { - return ResourceManager.GetString("typestop_text", resourceCulture); + return ResourceManager.GetString("unbind_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Unbinds a bot from the channel and board. **Bot Owner Only!**. + /// Looks up a localized string similar to Unbinds a bot from the channel and board.. /// public static string unbind_desc { get { @@ -6929,18 +6911,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `trello unbind`. /// - public static string unbind_summary { + public static string unbind_usage { get { - return ResourceManager.GetString("unbind_summary", resourceCulture); + return ResourceManager.GetString("unbind_usage", resourceCulture); } } /// - /// Looks up a localized string similar to unbind. + /// Looks up a localized string similar to unclaim ucall uc. /// - public static string unbind_text { + public static string unclaim_cmd { get { - return ResourceManager.GetString("unbind_text", resourceCulture); + return ResourceManager.GetString("unclaim_cmd", resourceCulture); } } @@ -6956,23 +6938,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `,uc [war_number] [optional_other_name]`. /// - public static string unclaim_summary { + public static string unclaim_usage { get { - return ResourceManager.GetString("unclaim_summary", resourceCulture); + return ResourceManager.GetString("unclaim_usage", resourceCulture); } } /// - /// Looks up a localized string similar to unclaim ucall uc. + /// Looks up a localized string similar to undeafen undef. /// - public static string unclaim_text { + public static string undeafen_cmd { get { - return ResourceManager.GetString("unclaim_text", resourceCulture); + return ResourceManager.GetString("undeafen_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Undeafens mentioned user or users. **Needs Deafen Permissions.**. + /// Looks up a localized string similar to Undeafens mentioned user or users. . /// public static string undeafen_desc { get { @@ -6983,23 +6965,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.undef "@Someguy"` or `.undef "@Someguy" "@Someguy"`. /// - public static string undeafen_summary { + public static string undeafen_usage { get { - return ResourceManager.GetString("undeafen_summary", resourceCulture); + return ResourceManager.GetString("undeafen_usage", resourceCulture); } } /// - /// Looks up a localized string similar to undeafen undef. + /// Looks up a localized string similar to unmute. /// - public static string undeafen_text { + public static string unmute_cmd { get { - return ResourceManager.GetString("undeafen_text", resourceCulture); + return ResourceManager.GetString("unmute_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Unmutes mentioned user or users. **Needs Mute Permissions.**. + /// Looks up a localized string similar to Unmutes mentioned user or users. . /// public static string unmute_desc { get { @@ -7010,23 +6992,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.unmute "@Someguy"` or `.unmute "@Someguy" "@Someguy"`. /// - public static string unmute_summary { + public static string unmute_usage { get { - return ResourceManager.GetString("unmute_summary", resourceCulture); + return ResourceManager.GetString("unmute_usage", resourceCulture); } } /// - /// Looks up a localized string similar to unmute. + /// Looks up a localized string similar to unstuck. /// - public static string unmute_text { + public static string unstuck_cmd { get { - return ResourceManager.GetString("unmute_text", resourceCulture); + return ResourceManager.GetString("unstuck_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Clears the message queue. **Bot Owner Only!**. + /// Looks up a localized string similar to Clears the message queue. . /// public static string unstuck_desc { get { @@ -7037,18 +7019,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.unstuck`. /// - public static string unstuck_summary { + public static string unstuck_usage { get { - return ResourceManager.GetString("unstuck_summary", resourceCulture); + return ResourceManager.GetString("unstuck_usage", resourceCulture); } } /// - /// Looks up a localized string similar to unstuck. + /// Looks up a localized string similar to urbandict ud. /// - public static string unstuck_text { + public static string urbandict_cmd { get { - return ResourceManager.GetString("unstuck_text", resourceCulture); + return ResourceManager.GetString("urbandict_cmd", resourceCulture); } } @@ -7064,23 +7046,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~ud Pineapple`. /// - public static string urbandict_summary { + public static string urbandict_usage { get { - return ResourceManager.GetString("urbandict_summary", resourceCulture); + return ResourceManager.GetString("urbandict_usage", resourceCulture); } } /// - /// Looks up a localized string similar to urbandict ud. + /// Looks up a localized string similar to ubl. /// - public static string urbandict_text { + public static string userblacklist_cmd { get { - return ResourceManager.GetString("urbandict_text", resourceCulture); + return ResourceManager.GetString("userblacklist_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Blacklists a mentioned user. **Bot Owner Only!**. + /// Looks up a localized string similar to Either [add]s or [rem]oves a user specified by a mention or ID from a blacklist.. /// public static string userblacklist_desc { get { @@ -7089,20 +7071,20 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `;ubl [user_mention]`. + /// Looks up a localized string similar to `;ubl add @SomeUser` or `;ubl rem 12312312313`. /// - public static string userblacklist_summary { + public static string userblacklist_usage { get { - return ResourceManager.GetString("userblacklist_summary", resourceCulture); + return ResourceManager.GetString("userblacklist_usage", resourceCulture); } } /// - /// Looks up a localized string similar to ubl. + /// Looks up a localized string similar to userid uid. /// - public static string userblacklist_text { + public static string userid_cmd { get { - return ResourceManager.GetString("userblacklist_text", resourceCulture); + return ResourceManager.GetString("userid_cmd", resourceCulture); } } @@ -7118,18 +7100,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.uid` or `.uid "@SomeGuy"`. /// - public static string userid_summary { + public static string userid_usage { get { - return ResourceManager.GetString("userid_summary", resourceCulture); + return ResourceManager.GetString("userid_usage", resourceCulture); } } /// - /// Looks up a localized string similar to userid uid. + /// Looks up a localized string similar to userinfo uinfo. /// - public static string userid_text { + public static string userinfo_cmd { get { - return ResourceManager.GetString("userid_text", resourceCulture); + return ResourceManager.GetString("userinfo_cmd", resourceCulture); } } @@ -7145,18 +7127,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.uinfo @SomeUser`. /// - public static string userinfo_summary { + public static string userinfo_usage { get { - return ResourceManager.GetString("userinfo_summary", resourceCulture); + return ResourceManager.GetString("userinfo_usage", resourceCulture); } } /// - /// Looks up a localized string similar to userinfo uinfo. + /// Looks up a localized string similar to userperms up. /// - public static string userinfo_text { + public static string userperms_cmd { get { - return ResourceManager.GetString("userinfo_text", resourceCulture); + return ResourceManager.GetString("userperms_cmd", resourceCulture); } } @@ -7172,23 +7154,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;up Kwoth`. /// - public static string userperms_summary { + public static string userperms_usage { get { - return ResourceManager.GetString("userperms_summary", resourceCulture); + return ResourceManager.GetString("userperms_usage", resourceCulture); } } /// - /// Looks up a localized string similar to userperms up. + /// Looks up a localized string similar to userpresence. /// - public static string userperms_text { + public static string userpresence_cmd { get { - return ResourceManager.GetString("userperms_text", resourceCulture); + return ResourceManager.GetString("userpresence_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Starts logging to this channel when someone from the server goes online/offline/idle. **Needs Manage Server Permissions.**. + /// Looks up a localized string similar to Starts logging to this channel when someone from the server goes online/offline/idle. . /// public static string userpresence_desc { get { @@ -7199,18 +7181,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.userpresence`. /// - public static string userpresence_summary { + public static string userpresence_usage { get { - return ResourceManager.GetString("userpresence_summary", resourceCulture); + return ResourceManager.GetString("userpresence_usage", resourceCulture); } } /// - /// Looks up a localized string similar to userpresence. + /// Looks up a localized string similar to usrcmd uc. /// - public static string userpresence_text { + public static string usrcmd_cmd { get { - return ResourceManager.GetString("userpresence_text", resourceCulture); + return ResourceManager.GetString("usrcmd_cmd", resourceCulture); } } @@ -7226,18 +7208,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;uc "command name" enable SomeUsername`. /// - public static string usrcmd_summary { + public static string usrcmd_usage { get { - return ResourceManager.GetString("usrcmd_summary", resourceCulture); + return ResourceManager.GetString("usrcmd_usage", resourceCulture); } } /// - /// Looks up a localized string similar to usrcmd uc. + /// Looks up a localized string similar to usrmdl um. /// - public static string usrcmd_text { + public static string usrmdl_cmd { get { - return ResourceManager.GetString("usrcmd_text", resourceCulture); + return ResourceManager.GetString("usrmdl_cmd", resourceCulture); } } @@ -7253,18 +7235,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;um "module name" enable SomeUsername`. /// - public static string usrmdl_summary { + public static string usrmdl_usage { get { - return ResourceManager.GetString("usrmdl_summary", resourceCulture); + return ResourceManager.GetString("usrmdl_usage", resourceCulture); } } /// - /// Looks up a localized string similar to usrmdl um. + /// Looks up a localized string similar to usrpermscopy upc. /// - public static string usrmdl_text { + public static string usrpermscopy_cmd { get { - return ResourceManager.GetString("usrmdl_text", resourceCulture); + return ResourceManager.GetString("usrpermscopy_cmd", resourceCulture); } } @@ -7280,45 +7262,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;upc @SomeUser ~ @SomeOtherUser`. /// - public static string usrpermscopy_summary { + public static string usrpermscopy_usage { get { - return ResourceManager.GetString("usrpermscopy_summary", resourceCulture); + return ResourceManager.GetString("usrpermscopy_usage", resourceCulture); } } /// - /// Looks up a localized string similar to usrpermscopy upc. + /// Looks up a localized string similar to verbose v. /// - public static string usrpermscopy_text { + public static string verbose_cmd { get { - return ResourceManager.GetString("usrpermscopy_text", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Unblacklists a mentioned user. **Bot Owner Only!**. - /// - public static string uubl_desc { - get { - return ResourceManager.GetString("uubl_desc", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to `;uubl [user_mention]`. - /// - public static string uubl_summary { - get { - return ResourceManager.GetString("uubl_summary", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to uubl. - /// - public static string uubl_text { - get { - return ResourceManager.GetString("uubl_text", resourceCulture); + return ResourceManager.GetString("verbose_cmd", resourceCulture); } } @@ -7334,18 +7289,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `;verbose true`. /// - public static string verbose_summary { + public static string verbose_usage { get { - return ResourceManager.GetString("verbose_summary", resourceCulture); + return ResourceManager.GetString("verbose_usage", resourceCulture); } } /// - /// Looks up a localized string similar to verbose v. + /// Looks up a localized string similar to videocall. /// - public static string verbose_text { + public static string videocall_cmd { get { - return ResourceManager.GetString("verbose_text", resourceCulture); + return ResourceManager.GetString("videocall_cmd", resourceCulture); } } @@ -7361,23 +7316,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~videocall "@SomeGuy"`. /// - public static string videocall_summary { + public static string videocall_usage { get { - return ResourceManager.GetString("videocall_summary", resourceCulture); + return ResourceManager.GetString("videocall_usage", resourceCulture); } } /// - /// Looks up a localized string similar to videocall. + /// Looks up a localized string similar to voice+text v+t. /// - public static string videocall_text { + public static string voiceplustext_cmd { get { - return ResourceManager.GetString("videocall_text", resourceCulture); + return ResourceManager.GetString("voiceplustext_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Creates a text channel for each voice channel only users in that voice channel can see.If you are server owner, keep in mind you will see them all the time regardless. **Needs Manage Roles and Manage Channels Permissions.**. + /// Looks up a localized string similar to Creates a text channel for each voice channel only users in that voice channel can see.If you are server owner, keep in mind you will see them all the time regardless. . /// public static string voiceplustext_desc { get { @@ -7388,23 +7343,23 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.voice+text`. /// - public static string voiceplustext_summary { + public static string voiceplustext_usage { get { - return ResourceManager.GetString("voiceplustext_summary", resourceCulture); + return ResourceManager.GetString("voiceplustext_usage", resourceCulture); } } /// - /// Looks up a localized string similar to voice+text v+t. + /// Looks up a localized string similar to voicepresence. /// - public static string voiceplustext_text { + public static string voicepresence_cmd { get { - return ResourceManager.GetString("voiceplustext_text", resourceCulture); + return ResourceManager.GetString("voicepresence_cmd", resourceCulture); } } /// - /// Looks up a localized string similar to Toggles logging to this channel whenever someone joins or leaves a voice channel you are in right now. **Needs Manage Server Permissions.**. + /// Looks up a localized string similar to Toggles logging to this channel whenever someone joins or leaves a voice channel you are in right now. . /// public static string voicepresence_desc { get { @@ -7415,18 +7370,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.voicerpresence`. /// - public static string voicepresence_summary { + public static string voicepresence_usage { get { - return ResourceManager.GetString("voicepresence_summary", resourceCulture); + return ResourceManager.GetString("voicepresence_usage", resourceCulture); } } /// - /// Looks up a localized string similar to voicepresence. + /// Looks up a localized string similar to volume vol. /// - public static string voicepresence_text { + public static string volume_cmd { get { - return ResourceManager.GetString("voicepresence_text", resourceCulture); + return ResourceManager.GetString("volume_cmd", resourceCulture); } } @@ -7442,18 +7397,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `!!vol 50`. /// - public static string volume_summary { + public static string volume_usage { get { - return ResourceManager.GetString("volume_summary", resourceCulture); + return ResourceManager.GetString("volume_usage", resourceCulture); } } /// - /// Looks up a localized string similar to volume vol. + /// Looks up a localized string similar to weather we. /// - public static string volume_text { + public static string weather_cmd { get { - return ResourceManager.GetString("volume_text", resourceCulture); + return ResourceManager.GetString("weather_cmd", resourceCulture); } } @@ -7469,18 +7424,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~we Moscow RF`. /// - public static string weather_summary { + public static string weather_usage { get { - return ResourceManager.GetString("weather_summary", resourceCulture); + return ResourceManager.GetString("weather_usage", resourceCulture); } } /// - /// Looks up a localized string similar to weather we. + /// Looks up a localized string similar to whosplaying. /// - public static string weather_text { + public static string whosplaying_cmd { get { - return ResourceManager.GetString("weather_text", resourceCulture); + return ResourceManager.GetString("whosplaying_cmd", resourceCulture); } } @@ -7496,18 +7451,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `.whoplays Overwatch`. /// - public static string whosplaying_summary { + public static string whosplaying_usage { get { - return ResourceManager.GetString("whosplaying_summary", resourceCulture); + return ResourceManager.GetString("whosplaying_usage", resourceCulture); } } /// - /// Looks up a localized string similar to whosplaying. + /// Looks up a localized string similar to wikipedia wiki. /// - public static string whosplaying_text { + public static string wiki_cmd { get { - return ResourceManager.GetString("whosplaying_text", resourceCulture); + return ResourceManager.GetString("wiki_cmd", resourceCulture); } } @@ -7523,18 +7478,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~wiki query`. /// - public static string wiki_summary { + public static string wiki_usage { get { - return ResourceManager.GetString("wiki_summary", resourceCulture); + return ResourceManager.GetString("wiki_usage", resourceCulture); } } /// - /// Looks up a localized string similar to wikipedia wiki. + /// Looks up a localized string similar to wowjoke. /// - public static string wiki_text { + public static string wowjoke_cmd { get { - return ResourceManager.GetString("wiki_text", resourceCulture); + return ResourceManager.GetString("wowjoke_cmd", resourceCulture); } } @@ -7550,18 +7505,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~wowjoke`. /// - public static string wowjoke_summary { + public static string wowjoke_usage { get { - return ResourceManager.GetString("wowjoke_summary", resourceCulture); + return ResourceManager.GetString("wowjoke_usage", resourceCulture); } } /// - /// Looks up a localized string similar to wowjoke. + /// Looks up a localized string similar to yomama ym. /// - public static string wowjoke_text { + public static string yomama_cmd { get { - return ResourceManager.GetString("wowjoke_text", resourceCulture); + return ResourceManager.GetString("yomama_cmd", resourceCulture); } } @@ -7577,18 +7532,18 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~ym`. /// - public static string yomama_summary { + public static string yomama_usage { get { - return ResourceManager.GetString("yomama_summary", resourceCulture); + return ResourceManager.GetString("yomama_usage", resourceCulture); } } /// - /// Looks up a localized string similar to yomama ym. + /// Looks up a localized string similar to youtube yt. /// - public static string yomama_text { + public static string youtube_cmd { get { - return ResourceManager.GetString("yomama_text", resourceCulture); + return ResourceManager.GetString("youtube_cmd", resourceCulture); } } @@ -7604,18 +7559,9 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to `~yt query`. /// - public static string youtube_summary { + public static string youtube_usage { get { - return ResourceManager.GetString("youtube_summary", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to youtube yt. - /// - public static string youtube_text { - get { - return ResourceManager.GetString("youtube_text", resourceCulture); + return ResourceManager.GetString("youtube_usage", resourceCulture); } } } diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index bb2e7c1d..5a923c34 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -2610,4 +2610,13 @@ checkstream cs + + showemojis se + + + Shows a name and a link to every special emoji in the message. + + + `.se A message full of emojis` + \ No newline at end of file diff --git a/src/NadekoBot/Services/Database/Models/BotConfig.cs b/src/NadekoBot/Services/Database/Models/BotConfig.cs index c66a98cb..2ff3ba52 100644 --- a/src/NadekoBot/Services/Database/Models/BotConfig.cs +++ b/src/NadekoBot/Services/Database/Models/BotConfig.cs @@ -34,8 +34,19 @@ namespace NadekoBot.Services.Database.Models public List EightBallResponses { get; set; } = new List(); public List RaceAnimals { get; set; } = new List(); - public string DMHelpString { get; set; } - public string HelpString { get; set; } + public string DMHelpString { get; set; } = "Type `-h` for help."; + public string HelpString { get; set; } = @"To add me to your server, use this link -> +You can use `{1}modules` command to see a list of all modules. +You can use `{1}commands ModuleName` +(for example `{1}commands Administration`) to see a list of all of the commands in that module. +For a specific command help, use `{1}h CommandName` (for example {1}h !!q) + + +**LIST OF COMMANDS CAN BE FOUND ON THIS LINK** + + + +Nadeko Support Server: https://discord.gg/0ehQwTK2RBjAxzEY"; public int MigrationVersion { get; set; } } diff --git a/src/NadekoBot/Services/Database/Repositories/IGuildConfigRepository.cs b/src/NadekoBot/Services/Database/Repositories/IGuildConfigRepository.cs index 7303eda2..e6797de1 100644 --- a/src/NadekoBot/Services/Database/Repositories/IGuildConfigRepository.cs +++ b/src/NadekoBot/Services/Database/Repositories/IGuildConfigRepository.cs @@ -12,6 +12,7 @@ namespace NadekoBot.Services.Database.Repositories { GuildConfig For(ulong guildId); GuildConfig PermissionsFor(ulong guildId); + void SetNewRootPermission(ulong guildId, Permission p); IEnumerable GetAllFollowedStreams(); } } diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs b/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs index 9a82c191..fe336c0a 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs +++ b/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; +using NadekoBot.Modules.Permissions; namespace NadekoBot.Services.Database.Repositories.Impl { @@ -88,5 +89,15 @@ namespace NadekoBot.Services.Database.Repositories.Impl _set.Include(gc => gc.FollowedStreams) .SelectMany(gc => gc.FollowedStreams) .ToList(); + + public void SetNewRootPermission(ulong guildId, Permission p) + { + var data = _set + .Include(gc => gc.RootPermission) + .FirstOrDefault(gc => gc.GuildId == guildId); + + data.RootPermission.Prepend(p); + data.RootPermission = p; + } } } From 8b6750c5ba098ed1e4b5e27467a875fee146d869 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Thu, 6 Oct 2016 20:47:13 +0200 Subject: [PATCH 36/74] Permission chain will no longer mention people --- src/NadekoBot/Modules/Permissions/PermissionExtensions.cs | 8 ++++++-- src/NadekoBot/Modules/Permissions/Permissions.cs | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs b/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs index 77f4201f..ad38511d 100644 --- a/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs +++ b/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs @@ -1,5 +1,6 @@ using Discord; using Discord.Commands; +using Discord.WebSocket; using NadekoBot.Services; using NadekoBot.Services.Database; using NadekoBot.Services.Database.Models; @@ -89,7 +90,7 @@ namespace NadekoBot.Modules.Permissions return null; } - public static string GetCommand(this Permission perm) + public static string GetCommand(this Permission perm, IGuild guild = null) { var com = ""; switch (perm.PrimaryTarget) @@ -125,7 +126,10 @@ namespace NadekoBot.Modules.Permissions switch (perm.PrimaryTarget) { case PrimaryPermissionType.User: - com += $"<@{perm.PrimaryTargetId}>"; + if (guild == null) + com += $"<@{perm.PrimaryTargetId}>"; + else + com += guild.GetUser(perm.PrimaryTargetId).ToString() ?? $"<@{perm.PrimaryTargetId}>"; break; case PrimaryPermissionType.Channel: com += $"<#{perm.PrimaryTargetId}>"; diff --git a/src/NadekoBot/Modules/Permissions/Permissions.cs b/src/NadekoBot/Modules/Permissions/Permissions.cs index 53dcc145..b19d8e41 100644 --- a/src/NadekoBot/Modules/Permissions/Permissions.cs +++ b/src/NadekoBot/Modules/Permissions/Permissions.cs @@ -71,7 +71,7 @@ namespace NadekoBot.Modules.Permissions var perms = uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission; var i = 1; - toSend = String.Join("\n", perms.AsEnumerable().Select(p => $"`{(i++)}.` {p.GetCommand()}")); + toSend = String.Join("\n", perms.AsEnumerable().Select(p => $"`{(i++)}.` {p.GetCommand(channel.Guild)}")); } if (string.IsNullOrWhiteSpace(toSend)) From 0eec287e7b2edd1338739d651f3f88e5220fda7d Mon Sep 17 00:00:00 2001 From: Kwoth Date: Fri, 7 Oct 2016 15:00:42 +0200 Subject: [PATCH 37/74] ;mp almost fixed. Might need a rework >.> --- ...er.cs => 20161007091612_first.Designer.cs} | 2 +- ...30440_first.cs => 20161007091612_first.cs} | 0 .../Permissions/PermissionExtensions.cs | 4 +-- .../Modules/Permissions/Permissions.cs | 29 ++++++++++++------- .../Services/Database/Models/Permission.cs | 11 +++++++ .../Services/Database/NadekoContext.cs | 4 +-- 6 files changed, 35 insertions(+), 15 deletions(-) rename src/NadekoBot/Migrations/{20161005030440_first.Designer.cs => 20161007091612_first.Designer.cs} (99%) rename src/NadekoBot/Migrations/{20161005030440_first.cs => 20161007091612_first.cs} (100%) diff --git a/src/NadekoBot/Migrations/20161005030440_first.Designer.cs b/src/NadekoBot/Migrations/20161007091612_first.Designer.cs similarity index 99% rename from src/NadekoBot/Migrations/20161005030440_first.Designer.cs rename to src/NadekoBot/Migrations/20161007091612_first.Designer.cs index 1f862568..8a0b6f16 100644 --- a/src/NadekoBot/Migrations/20161005030440_first.Designer.cs +++ b/src/NadekoBot/Migrations/20161007091612_first.Designer.cs @@ -8,7 +8,7 @@ using NadekoBot.Services.Database.Impl; namespace NadekoBot.Migrations { [DbContext(typeof(NadekoSqliteContext))] - [Migration("20161005030440_first")] + [Migration("20161007091612_first")] partial class first { protected override void BuildTargetModel(ModelBuilder modelBuilder) diff --git a/src/NadekoBot/Migrations/20161005030440_first.cs b/src/NadekoBot/Migrations/20161007091612_first.cs similarity index 100% rename from src/NadekoBot/Migrations/20161005030440_first.cs rename to src/NadekoBot/Migrations/20161007091612_first.cs diff --git a/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs b/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs index ad38511d..af8e53c1 100644 --- a/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs +++ b/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs @@ -6,6 +6,7 @@ using NadekoBot.Services.Database; using NadekoBot.Services.Database.Models; using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -159,8 +160,7 @@ namespace NadekoBot.Modules.Permissions if (index == 0) { - perm.Previous = toAdd; - toAdd.Next = perm; + perm.Prepend(toAdd); return; } diff --git a/src/NadekoBot/Modules/Permissions/Permissions.cs b/src/NadekoBot/Modules/Permissions/Permissions.cs index b19d8e41..b3a52765 100644 --- a/src/NadekoBot/Modules/Permissions/Permissions.cs +++ b/src/NadekoBot/Modules/Permissions/Permissions.cs @@ -91,7 +91,8 @@ namespace NadekoBot.Modules.Permissions Permission p; using (var uow = DbHandler.UnitOfWork()) { - var perms = uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission; + var config = uow.GuildConfigs.PermissionsFor(channel.Guild.Id); + var perms = config.RootPermission; if (index == perms.Count() - 1) { return; @@ -99,7 +100,7 @@ namespace NadekoBot.Modules.Permissions else if (index == 0) { p = perms; - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = perms.Next; + config.RootPermission = perms.Next; } else { @@ -114,7 +115,7 @@ namespace NadekoBot.Modules.Permissions uow2._context.SaveChanges(); } - await channel.SendMessageAsync($"{imsg.Author.Mention} removed permission **{p.GetCommand()}** from position #{index + 1}.").ConfigureAwait(false); + await channel.SendMessageAsync($"{imsg.Author.Mention} removed permission **{p.GetCommand(channel.Guild)}** from position #{index + 1}.").ConfigureAwait(false); } catch (ArgumentOutOfRangeException) { @@ -136,21 +137,29 @@ namespace NadekoBot.Modules.Permissions Permission toInsert; using (var uow = DbHandler.UnitOfWork()) { - var perms = uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission; + var config = uow.GuildConfigs.PermissionsFor(channel.Guild.Id); + var perms = config.RootPermission; if (from == 0) + { toInsert = perms; + perms = perms.Next; + toInsert.Previous = null; + toInsert.Next = null; + perms.Previous = null; + } else + { toInsert = perms.RemoveAt(from); - if (from < to) - to -= 1; - var last = perms.Count() - 1; - if (from == last || to == last) + toInsert.Previous = null; + } + var size = perms.Count(); + if (from == size || to == size) throw new IndexOutOfRangeException(); perms.Insert(to, toInsert); - uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission = perms.GetRoot(); + config.RootPermission = perms.GetRoot(); await uow.CompleteAsync().ConfigureAwait(false); } - await channel.SendMessageAsync($"`Moved permission:` \"{toInsert.GetCommand()}\" `from #{from} to #{to}.`").ConfigureAwait(false); + await channel.SendMessageAsync($"`Moved permission:` \"{toInsert.GetCommand(channel.Guild)}\" `from #{from} to #{to}.`").ConfigureAwait(false); return; } catch (Exception e) when (e is ArgumentOutOfRangeException || e is IndexOutOfRangeException) diff --git a/src/NadekoBot/Services/Database/Models/Permission.cs b/src/NadekoBot/Services/Database/Models/Permission.cs index aed70fa5..b88de0d3 100644 --- a/src/NadekoBot/Services/Database/Models/Permission.cs +++ b/src/NadekoBot/Services/Database/Models/Permission.cs @@ -1,12 +1,14 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; +using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NadekoBot.Services.Database.Models { + [DebuggerDisplay("{global::NadekoBot.Modules.Permissions.PermissionExtensions.GetCommand(this)}", Target = typeof(Permission))] public class Permission : DbEntity { public Permission Previous { get; set; } = null; @@ -49,6 +51,15 @@ namespace NadekoBot.Services.Database.Models return blockNsfw; } + + public Permission Clone() => new Permission() + { + PrimaryTarget = PrimaryTarget, + SecondaryTarget = SecondaryTarget, + PrimaryTargetId = PrimaryTargetId, + SecondaryTargetName = SecondaryTargetName, + State = State, + }; } public enum PrimaryPermissionType diff --git a/src/NadekoBot/Services/Database/NadekoContext.cs b/src/NadekoBot/Services/Database/NadekoContext.cs index 81940a91..2661bdf8 100644 --- a/src/NadekoBot/Services/Database/NadekoContext.cs +++ b/src/NadekoBot/Services/Database/NadekoContext.cs @@ -186,8 +186,8 @@ namespace NadekoBot.Services.Database var permissionEntity = modelBuilder.Entity(); permissionEntity .HasOne(p => p.Next) - .WithOne(p => p.Previous); - + .WithOne(p => p.Previous) + .IsRequired(false); #endregion #region LogSettings From f89937fd0a417a73b4e313cf12c67f7bbda2e028 Mon Sep 17 00:00:00 2001 From: Nitix Date: Fri, 7 Oct 2016 18:53:04 +0200 Subject: [PATCH 38/74] Fix ;mp command --- .../Permissions/PermissionExtensions.cs | 3 +- .../Modules/Permissions/Permissions.cs | 82 +++++++++++++++---- 2 files changed, 70 insertions(+), 15 deletions(-) diff --git a/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs b/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs index af8e53c1..783e2b90 100644 --- a/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs +++ b/src/NadekoBot/Modules/Permissions/PermissionExtensions.cs @@ -153,6 +153,7 @@ namespace NadekoBot.Modules.Permissions toAdd.Next = perm; } + /* /this can't work if index < 0 and perm isn't roo public static void Insert(this Permission perm, int index, Permission toAdd) { if (index < 0) @@ -183,7 +184,7 @@ namespace NadekoBot.Modules.Permissions toAdd.Previous = previous; previous.Next = toAdd; } - + */ public static Permission RemoveAt(this Permission perm, int index) { if (index <= 0) //can't really remove at 0, that means deleting the element right now. Just use perm.Next if its 0 diff --git a/src/NadekoBot/Modules/Permissions/Permissions.cs b/src/NadekoBot/Modules/Permissions/Permissions.cs index b3a52765..ee4d84ea 100644 --- a/src/NadekoBot/Modules/Permissions/Permissions.cs +++ b/src/NadekoBot/Modules/Permissions/Permissions.cs @@ -134,32 +134,86 @@ namespace NadekoBot.Modules.Permissions { try { - Permission toInsert; + Permission fromPerm = null; + Permission toPerm = null; using (var uow = DbHandler.UnitOfWork()) { var config = uow.GuildConfigs.PermissionsFor(channel.Guild.Id); var perms = config.RootPermission; + var root = perms; + var index = 0; + var fromFound = false; + var toFound = false; + var isLast = true; + while ((!toFound || !fromFound) && perms != null) + { + if (index == from) + { + fromPerm = perms; + fromFound = true; + } + if (index == to) + { + toPerm = perms; + toFound = true; + isLast = false; + } + if (!toFound) + { + toPerm = perms; //In case of to > size + } + perms = perms.Next; + index++; + } + if (perms == null) + { + if (!fromFound) + { + await channel.SendMessageAsync($"`Can't find permission at index `#{++from}`").ConfigureAwait(false); + return; + } + } + + //Change chain for from indx + var next = fromPerm.Next; + var pre = fromPerm.Previous; + if (pre != null) + pre.Next = next; + if (next != null) + { + next.Previous = pre; + } if (from == 0) { - toInsert = perms; - perms = perms.Next; - toInsert.Previous = null; - toInsert.Next = null; - perms.Previous = null; + root = next; + } + await uow.CompleteAsync().ConfigureAwait(false); + //Inserting + pre = toPerm.Previous; + if (isLast) + { + toPerm.Next = fromPerm; + fromPerm.Previous = toPerm; + fromPerm.Next = null; } else { - toInsert = perms.RemoveAt(from); - toInsert.Previous = null; + fromPerm.Next = toPerm; + fromPerm.Previous = pre; + if (pre != null) + { + pre.Next = fromPerm; + } + else + { + root = fromPerm; + } + toPerm.Previous = fromPerm; } - var size = perms.Count(); - if (from == size || to == size) - throw new IndexOutOfRangeException(); - perms.Insert(to, toInsert); - config.RootPermission = perms.GetRoot(); + config.RootPermission = root; await uow.CompleteAsync().ConfigureAwait(false); } - await channel.SendMessageAsync($"`Moved permission:` \"{toInsert.GetCommand(channel.Guild)}\" `from #{from} to #{to}.`").ConfigureAwait(false); + await channel.SendMessageAsync($"`Moved permission:` \"{fromPerm.GetCommand(channel.Guild)}\" `from #{++from} to #{++to}.`").ConfigureAwait(false); return; } catch (Exception e) when (e is ArgumentOutOfRangeException || e is IndexOutOfRangeException) From 0a8f998b329d5d635a114d641640e2c930d64606 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Fri, 7 Oct 2016 20:13:03 +0200 Subject: [PATCH 39/74] Message when there is no toPerm too --- src/NadekoBot/Modules/Permissions/Permissions.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/NadekoBot/Modules/Permissions/Permissions.cs b/src/NadekoBot/Modules/Permissions/Permissions.cs index ee4d84ea..a3160f16 100644 --- a/src/NadekoBot/Modules/Permissions/Permissions.cs +++ b/src/NadekoBot/Modules/Permissions/Permissions.cs @@ -172,6 +172,12 @@ namespace NadekoBot.Modules.Permissions await channel.SendMessageAsync($"`Can't find permission at index `#{++from}`").ConfigureAwait(false); return; } + + if (!toFound) + { + await channel.SendMessageAsync($"`Can't find permission at index `#{++to}`").ConfigureAwait(false); + return; + } } //Change chain for from indx From ccb287c2380f6ec942e02501060c76970f366783 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Fri, 7 Oct 2016 21:52:56 +0200 Subject: [PATCH 40/74] Fixed ;mp --- .../Modules/Permissions/Permissions.cs | 37 +++++++++---------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/src/NadekoBot/Modules/Permissions/Permissions.cs b/src/NadekoBot/Modules/Permissions/Permissions.cs index a3160f16..aa0ab412 100644 --- a/src/NadekoBot/Modules/Permissions/Permissions.cs +++ b/src/NadekoBot/Modules/Permissions/Permissions.cs @@ -69,9 +69,8 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { var perms = uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission; - var i = 1; - toSend = String.Join("\n", perms.AsEnumerable().Select(p => $"`{(i++)}.` {p.GetCommand(channel.Guild)}")); + toSend = String.Join("\n", perms.AsEnumerable().Select(p => $"`{(i++)}.` {(p.Next == null ? Format.Bold(p.GetCommand(channel.Guild) + " [uneditable]") : (p.GetCommand(channel.Guild)))}")); } if (string.IsNullOrWhiteSpace(toSend)) @@ -144,7 +143,6 @@ namespace NadekoBot.Modules.Permissions var index = 0; var fromFound = false; var toFound = false; - var isLast = true; while ((!toFound || !fromFound) && perms != null) { if (index == from) @@ -156,7 +154,6 @@ namespace NadekoBot.Modules.Permissions { toPerm = perms; toFound = true; - isLast = false; } if (!toFound) { @@ -185,38 +182,38 @@ namespace NadekoBot.Modules.Permissions var pre = fromPerm.Previous; if (pre != null) pre.Next = next; - if (next != null) + if (fromPerm.Next == null || toPerm.Next == null) { - next.Previous = pre; + throw new IndexOutOfRangeException(); } + next.Previous = pre; if (from == 0) { root = next; } await uow.CompleteAsync().ConfigureAwait(false); //Inserting - pre = toPerm.Previous; - if (isLast) + if (to > from) { - toPerm.Next = fromPerm; fromPerm.Previous = toPerm; - fromPerm.Next = null; + fromPerm.Next = toPerm.Next; + + toPerm.Next.Previous = fromPerm; + toPerm.Next = fromPerm; } else { + pre = toPerm.Previous; + fromPerm.Next = toPerm; fromPerm.Previous = pre; - if (pre != null) - { - pre.Next = fromPerm; - } - else - { - root = fromPerm; - } + toPerm.Previous = fromPerm; + if (pre != null) + pre.Next = fromPerm; } - config.RootPermission = root; + + config.RootPermission = fromPerm.GetRoot(); await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"`Moved permission:` \"{fromPerm.GetCommand(channel.Guild)}\" `from #{++from} to #{++to}.`").ConfigureAwait(false); @@ -478,7 +475,7 @@ namespace NadekoBot.Modules.Permissions [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] - public async Task AllSrvrMdls(IUserMessage imsg, PermissionAction action, [Remainder] IUser user) + public async Task AllSrvrMdls(IUserMessage imsg, PermissionAction action) { var channel = (ITextChannel)imsg.Channel; From 8dbc7075da52c9d8c51f088737c7f218e8888f57 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sat, 8 Oct 2016 00:23:41 +0200 Subject: [PATCH 41/74] Added some json files back. Added command cooldowns. Fixed some stuff --- .../20161007210034_cmdcds.Designer.cs | 737 + .../Migrations/20161007210034_cmdcds.cs | 44 + .../NadekoSqliteContextModelSnapshot.cs | 25 + .../Commands/Trivia/TriviaQuestionPool.cs | 2 +- .../Permissions/Commands/CmdCdsCommands.cs | 122 + src/NadekoBot/Services/CommandHandler.cs | 8 + .../Database/Models/CommandCooldown.cs | 14 + .../Services/Database/Models/GuildConfig.cs | 2 + .../Impl/GuildConfigRepository.cs | 2 + src/NadekoBot/data/magicitems.json | 314 + src/NadekoBot/data/pokemon/LICENSE | 21 + .../data/pokemon/pokemon_abilities.json | 1596 + src/NadekoBot/data/pokemon/pokemon_list.json | 25607 ++++++++++++++++ .../{triviaquestions.json => questions.json} | 0 src/NadekoBot/data/wowjokes.json | 302 + 15 files changed, 28795 insertions(+), 1 deletion(-) create mode 100644 src/NadekoBot/Migrations/20161007210034_cmdcds.Designer.cs create mode 100644 src/NadekoBot/Migrations/20161007210034_cmdcds.cs create mode 100644 src/NadekoBot/Modules/Permissions/Commands/CmdCdsCommands.cs create mode 100644 src/NadekoBot/Services/Database/Models/CommandCooldown.cs create mode 100644 src/NadekoBot/data/magicitems.json create mode 100644 src/NadekoBot/data/pokemon/LICENSE create mode 100644 src/NadekoBot/data/pokemon/pokemon_abilities.json create mode 100644 src/NadekoBot/data/pokemon/pokemon_list.json rename src/NadekoBot/data/{triviaquestions.json => questions.json} (100%) create mode 100644 src/NadekoBot/data/wowjokes.json diff --git a/src/NadekoBot/Migrations/20161007210034_cmdcds.Designer.cs b/src/NadekoBot/Migrations/20161007210034_cmdcds.Designer.cs new file mode 100644 index 00000000..79c21557 --- /dev/null +++ b/src/NadekoBot/Migrations/20161007210034_cmdcds.Designer.cs @@ -0,0 +1,737 @@ +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using NadekoBot.Services.Database.Impl; + +namespace NadekoBot.Migrations +{ + [DbContext(typeof(NadekoSqliteContext))] + [Migration("20161007210034_cmdcds")] + partial class cmdcds + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { + modelBuilder + .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ItemId"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("BlacklistItem"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BufferSize"); + + b.Property("CurrencyGenerationChance"); + + b.Property("CurrencyGenerationCooldown"); + + b.Property("CurrencyName"); + + b.Property("CurrencyPluralName"); + + b.Property("CurrencySign"); + + b.Property("DMHelpString"); + + b.Property("DontJoinServers"); + + b.Property("ForwardMessages"); + + b.Property("ForwardToAllOwners"); + + b.Property("HelpString"); + + b.Property("MigrationVersion"); + + b.Property("RemindMessageFormat"); + + b.Property("RotatingStatuses"); + + b.HasKey("Id"); + + 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("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("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.CommandCooldown", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CommandName"); + + b.Property("GuildConfigId"); + + b.Property("Seconds"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("CommandCooldown"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("InternalTrigger"); + + b.Property("Modifier"); + + b.Property("UnitType"); + + b.HasKey("Id"); + + b.ToTable("ConversionUnits"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Currency"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("Name"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Donators"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("EightBallResponses"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildConfigId"); + + b.Property("GuildConfigId1"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.HasIndex("GuildConfigId1"); + + b.ToTable("FilterChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildConfigId"); + + b.Property("Word"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FilteredWord"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("LastStatus"); + + b.Property("Type"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FollowedStream"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoAssignRoleId"); + + b.Property("AutoDeleteByeMessages"); + + b.Property("AutoDeleteGreetMessages"); + + b.Property("AutoDeleteGreetMessagesTimer"); + + b.Property("AutoDeleteSelfAssignedRoleMessages"); + + b.Property("ByeMessageChannelId"); + + b.Property("ChannelByeMessageText"); + + b.Property("ChannelGreetMessageText"); + + b.Property("DefaultMusicVolume"); + + b.Property("DeleteMessageOnCommand"); + + b.Property("DmGreetMessageText"); + + b.Property("ExclusiveSelfAssignedRoles"); + + b.Property("FilterInvites"); + + b.Property("FilterWords"); + + b.Property("GenerateCurrencyChannelId"); + + b.Property("GreetMessageChannelId"); + + b.Property("GuildId"); + + b.Property("LogSettingId"); + + b.Property("PermissionRole"); + + b.Property("RootPermissionId"); + + b.Property("SendChannelByeMessage"); + + b.Property("SendChannelGreetMessage"); + + b.Property("SendDmGreetMessage"); + + b.Property("VerbosePermissions"); + + b.Property("VoicePlusTextEnabled"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.HasIndex("LogSettingId"); + + b.HasIndex("RootPermissionId"); + + b.ToTable("GuildConfigs"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredLogChannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredVoicePresenceCHannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelCreated"); + + b.Property("ChannelDestroyed"); + + b.Property("ChannelId"); + + b.Property("ChannelUpdated"); + + b.Property("IsLogging"); + + b.Property("LogUserPresence"); + + b.Property("LogVoicePresence"); + + b.Property("MessageDeleted"); + + b.Property("MessageUpdated"); + + b.Property("UserBanned"); + + b.Property("UserJoined"); + + b.Property("UserLeft"); + + b.Property("UserPresenceChannelId"); + + b.Property("UserUnbanned"); + + b.Property("UserUpdated"); + + b.Property("VoicePresenceChannelId"); + + b.HasKey("Id"); + + b.ToTable("LogSettings"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ModuleName"); + + b.Property("Prefix"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("ModulePrefixes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("AuthorId"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.ToTable("MusicPlaylists"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + 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.Services.Database.Models.PlayingStatus", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Status"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("PlayingStatus"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + 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.Services.Database.Models.Quote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("AuthorName") + .IsRequired(); + + b.Property("GuildId"); + + b.Property("Keyword") + .IsRequired(); + + b.Property("Text") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("Quotes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Icon"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("RaceAnimals"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("IsPrivate"); + + b.Property("Message"); + + b.Property("ServerId"); + + b.Property("UserId"); + + b.Property("When"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildId"); + + b.Property("Interval"); + + b.Property("Message"); + + b.HasKey("Id"); + + b.HasIndex("ChannelId") + .IsUnique(); + + b.ToTable("Repeaters"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildId", "RoleId") + .IsUnique(); + + b.ToTable("SelfAssignableRoles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.ToTable("TypingArticles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("Blacklist") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + { + b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + .WithMany("Bases") + .HasForeignKey("ClashWarId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("CommandCooldowns") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("EightBallResponses") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FilterInvitesChannelIds") + .HasForeignKey("GuildConfigId"); + + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FilterWordsChannelIds") + .HasForeignKey("GuildConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FilteredWords") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FollowedStreams") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany() + .HasForeignKey("LogSettingId"); + + b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + .WithMany() + .HasForeignKey("RootPermissionId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredVoicePresenceChannelIds") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig", "BotConfig") + .WithMany("ModulePrefixes") + .HasForeignKey("BotConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + .WithOne("Previous") + .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RotatingStatusMessages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + { + b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + .WithMany("Songs") + .HasForeignKey("MusicPlaylistId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RaceAnimals") + .HasForeignKey("BotConfigId"); + }); + } + } +} diff --git a/src/NadekoBot/Migrations/20161007210034_cmdcds.cs b/src/NadekoBot/Migrations/20161007210034_cmdcds.cs new file mode 100644 index 00000000..cbed2902 --- /dev/null +++ b/src/NadekoBot/Migrations/20161007210034_cmdcds.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace NadekoBot.Migrations +{ + public partial class cmdcds : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "CommandCooldown", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + CommandName = table.Column(nullable: true), + GuildConfigId = table.Column(nullable: true), + Seconds = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CommandCooldown", x => x.Id); + table.ForeignKey( + name: "FK_CommandCooldown_GuildConfigs_GuildConfigId", + column: x => x.GuildConfigId, + principalTable: "GuildConfigs", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateIndex( + name: "IX_CommandCooldown_GuildConfigId", + table: "CommandCooldown", + column: "GuildConfigId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "CommandCooldown"); + } + } +} diff --git a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs index 050244e0..c74958b8 100644 --- a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs +++ b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs @@ -115,6 +115,24 @@ namespace NadekoBot.Migrations b.ToTable("ClashOfClans"); }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CommandName"); + + b.Property("GuildConfigId"); + + b.Property("Seconds"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("CommandCooldown"); + }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => { b.Property("Id") @@ -613,6 +631,13 @@ namespace NadekoBot.Migrations .OnDelete(DeleteBehavior.Cascade); }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("CommandCooldowns") + .HasForeignKey("GuildConfigId"); + }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => { b.HasOne("NadekoBot.Services.Database.Models.BotConfig") diff --git a/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaQuestionPool.cs b/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaQuestionPool.cs index 9682bbef..cc9db53a 100644 --- a/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaQuestionPool.cs +++ b/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaQuestionPool.cs @@ -30,7 +30,7 @@ namespace NadekoBot.Modules.Games.Trivia public void Reload() { - var arr = JArray.Parse(File.ReadAllText("data/triviaquestions.json")); + var arr = JArray.Parse(File.ReadAllText("data/questions.json")); foreach (var item in arr) { diff --git a/src/NadekoBot/Modules/Permissions/Commands/CmdCdsCommands.cs b/src/NadekoBot/Modules/Permissions/Commands/CmdCdsCommands.cs new file mode 100644 index 00000000..b14fd452 --- /dev/null +++ b/src/NadekoBot/Modules/Permissions/Commands/CmdCdsCommands.cs @@ -0,0 +1,122 @@ +using Discord; +using Discord.Commands; +using NadekoBot.Attributes; +using NadekoBot.Extensions; +using NadekoBot.Services; +using NadekoBot.Services.Database; +using NadekoBot.Services.Database.Models; +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NadekoBot.Modules.Permissions +{ + public partial class Permissions + { + + public class ActiveCooldown + { + public string Command { get; set; } + public ulong UserId { get; set; } + } + + [Group] + public class CmdCdsCommands + { + public static ConcurrentDictionary> commandCooldowns { get; } + private static ConcurrentDictionary> activeCooldowns = new ConcurrentDictionary>(); + + static CmdCdsCommands() + { + using (var uow = DbHandler.UnitOfWork()) + { + var configs = uow.GuildConfigs.GetAll(); + commandCooldowns = new ConcurrentDictionary>(configs.ToDictionary(k => k.GuildId, v => v.CommandCooldowns)); + } + } + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + public async Task CmdCooldown(IUserMessage imsg, Command command, int secs) + { + var channel = (ITextChannel)imsg.Channel; + if (secs < 0 || secs > 3600) + { + await channel.SendMessageAsync("Invalid second parameter. (Must be a number between 0 and 3600)").ConfigureAwait(false); + return; + } + + using (var uow = DbHandler.UnitOfWork()) + { + var config = uow.GuildConfigs.For(channel.Guild.Id); + var localSet = commandCooldowns.GetOrAdd(channel.Guild.Id, new HashSet()); + + config.CommandCooldowns.RemoveWhere(cc => cc.CommandName == command.Text.ToLowerInvariant()); + localSet.RemoveWhere(cc => cc.CommandName == command.Text.ToLowerInvariant()); + if (secs != 0) + { + var cc = new CommandCooldown() + { + CommandName = command.Text.ToLowerInvariant(), + Seconds = secs, + }; + config.CommandCooldowns.Add(cc); + localSet.Add(cc); + } + await uow.CompleteAsync().ConfigureAwait(false); + } + if (secs == 0) + { + var activeCds = activeCooldowns.GetOrAdd(channel.Guild.Id, new HashSet()); + activeCds.RemoveWhere(ac => ac.Command == command.Text.ToLowerInvariant()); + await channel.SendMessageAsync($"Command **{command}** has no coooldown now and all existing cooldowns have been cleared.").ConfigureAwait(false); + } + else + await channel.SendMessageAsync($"Command **{command}** now has a **{secs} {(secs == 1 ? "second" : "seconds")}** cooldown.").ConfigureAwait(false); + } + + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + public async Task AllCmdCooldowns(IUserMessage imsg) + { + var channel = (ITextChannel)imsg.Channel; + var localSet = commandCooldowns.GetOrAdd(channel.Guild.Id, new HashSet()); + + if (!localSet.Any()) + await channel.SendMessageAsync("`No command cooldowns set.`").ConfigureAwait(false); + else + await channel.SendTableAsync("", localSet.Select(c => c.CommandName + ": " + c.Seconds + " secs"), s => $"{s,-30}", 2).ConfigureAwait(false); + } + + public static bool HasCooldown(Command cmd, IGuild guild, IUser user) + { + var cmdcds = CmdCdsCommands.commandCooldowns.GetOrAdd(guild.Id, new HashSet()); + CommandCooldown cdRule; + if ((cdRule = cmdcds.FirstOrDefault(cc => cc.CommandName == cmd.Text.ToLowerInvariant())) != null) + { + var activeCdsForGuild = activeCooldowns.GetOrAdd(guild.Id, new HashSet()); + if (activeCdsForGuild.FirstOrDefault(ac => ac.UserId == user.Id && ac.Command == cmd.Text.ToLowerInvariant()) != null) + { + return true; + } + else + { + activeCdsForGuild.Add(new ActiveCooldown() + { + UserId = user.Id, + Command = cmd.Text.ToLowerInvariant(), + }); + var t = Task.Run(async () => + { + await Task.Delay(cdRule.Seconds * 1000); + activeCdsForGuild.RemoveWhere(ac => ac.Command == cmd.Text.ToLowerInvariant() && ac.UserId == user.Id); + }); + } + } + return false; + } + } + } +} diff --git a/src/NadekoBot/Services/CommandHandler.cs b/src/NadekoBot/Services/CommandHandler.cs index 6a9ac026..15c7c752 100644 --- a/src/NadekoBot/Services/CommandHandler.cs +++ b/src/NadekoBot/Services/CommandHandler.cs @@ -14,6 +14,8 @@ using NadekoBot.Modules.Permissions; using Microsoft.Data.Sqlite; using Discord.Net; using NadekoBot.Extensions; +using static NadekoBot.Modules.Permissions.Permissions; +using System.Collections.Concurrent; namespace NadekoBot.Services { @@ -90,6 +92,8 @@ namespace NadekoBot.Services } } + + try { bool verbose = false; @@ -235,6 +239,10 @@ namespace NadekoBot.Services } } + + if (CmdCdsCommands.HasCooldown(cmd, guild, user)) + return new Tuple(cmd, SearchResult.FromError(CommandError.Exception, $"That command is on cooldown for you.")); + return new Tuple(commands[i], await commands[i].Execute(message, parseResult)); } diff --git a/src/NadekoBot/Services/Database/Models/CommandCooldown.cs b/src/NadekoBot/Services/Database/Models/CommandCooldown.cs new file mode 100644 index 00000000..e5048f70 --- /dev/null +++ b/src/NadekoBot/Services/Database/Models/CommandCooldown.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NadekoBot.Services.Database.Models +{ + public class CommandCooldown : DbEntity + { + public int Seconds { get; set; } + public string CommandName { get; set; } + } +} diff --git a/src/NadekoBot/Services/Database/Models/GuildConfig.cs b/src/NadekoBot/Services/Database/Models/GuildConfig.cs index 3ef24e35..9dc7a57d 100644 --- a/src/NadekoBot/Services/Database/Models/GuildConfig.cs +++ b/src/NadekoBot/Services/Database/Models/GuildConfig.cs @@ -47,6 +47,8 @@ namespace NadekoBot.Services.Database.Models public bool VerbosePermissions { get; set; } public string PermissionRole { get; set; } = "Nadeko"; + public HashSet CommandCooldowns { get; set; } = new HashSet(); + //filtering public bool FilterInvites { get; set; } public HashSet FilterInvitesChannelIds { get; set; } diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs b/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs index fe336c0a..b15d8ab8 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs +++ b/src/NadekoBot/Services/Database/Repositories/Impl/GuildConfigRepository.cs @@ -27,6 +27,7 @@ namespace NadekoBot.Services.Database.Repositories.Impl .Include(gc => gc.FilterInvitesChannelIds) .Include(gc => gc.FilterWordsChannelIds) .Include(gc => gc.FilteredWords) + .Include(gc => gc.CommandCooldowns) .ToList(); /// @@ -44,6 +45,7 @@ namespace NadekoBot.Services.Database.Repositories.Impl .Include(gc => gc.FilterInvitesChannelIds) .Include(gc => gc.FilterWordsChannelIds) .Include(gc => gc.FilteredWords) + .Include(gc => gc.CommandCooldowns) .FirstOrDefault(c => c.GuildId == guildId); if (config == null) diff --git a/src/NadekoBot/data/magicitems.json b/src/NadekoBot/data/magicitems.json new file mode 100644 index 00000000..6cf69b83 --- /dev/null +++ b/src/NadekoBot/data/magicitems.json @@ -0,0 +1,314 @@ +[ + { + "Name": "Ace of Spades", + "Description": "An ace of spades from a standard card deck. No matter where you store it on your body, you will always be able to find it in your right sleeve afterwards." + }, + { + "Name": "Arrow of Euarere", + "Description": "A silver arrow, suspended on a string. It always points to the person holding the string." + }, + { + "Name": "Amulet of Extra Amulet Slot", + "Description": "This amulet allows you to gain the benefit from two magical amulets rather than one. It cannot be further enchanted." + }, + { + "Name": "Amulet of Feather Fall", + "Description": "When worn, this amulet turns into a feather and falls to the ground." + }, + { + "Name": "Anti-Matches", + "Description": "A box of matches. Striking one will make it begin to drip water from the tip while the match shrivels away. The amount of water a match releases is about enough to fill a tablespoon." + }, + { + "Name": "The Artist's Bludgeon", + "Description": "Inanimate objects hit with this bludgeon will receive no damage; they will however change color." + }, + { + "Name": "Attentive Guardsman's Pike", + "Description": "These ornate and deadly-looking ceremonial pikes are reach weapons and appear to weigh at least 20 lbs, not counting the weight of the fluttering banners that can be unfurled for parade use. Constructed of shadowstuff, they weigh one pound, and inflict only a single point of damage on an attack, being almost entirely for show, although they also have the unique property of remaining in place when set (although unable to support more than 20 lbs), allowing a 'resting his eyes' guardsman to prop it up and leave it standing under its own power, while his hand sags off of it." + }, + { + "Name": "Attentive Guardsman's Tabard", + "Description": "A dozen of these tabards were fashioned for palace guardsmen in the Empire of Sard, 250 miles from the nearest enemy. The bearer is placed under a glamour that causes him to appear alert and awake, even if his eyes are closed and he is snoring lightly." + }, + { + "Name": "Axe of Big Numbers", + "Description": "This axe shouts \"Big numbers baby, come on!\" whenever it is swung, but always deals 1 damage or less." + }, + { + "Name": "Axe of Empathy", + "Description": "Every time you hit something with this +5 greataxe, you get dealt an equal amount of damage. Both you and the thing you hit are then healed the amount of damage dealt by the axe, even if either are dead. The Axe hopes you have learned your lesson." + }, + { + "Name": "Axe of Pain", + "Description": "The axe is always moaning and groaning with pain." + }, + { + "Name": "Baby Oil", + "Description": "An aphrodisiac made from the finest mashed babies. Strangely unpopular in the upper planes, the judgmental prudes." + }, + { + "Name": "Bag of Faerie Gold", + "Description": "This sack appears to be full of gold coins and jewels. When one attempts to spend them, however, the glamour on them soon vanishes, revealing them to be nothing but leaves and pebbles. Obviously, most shopkeepers will not be happy about this, and no amount of 'we didn't know, I swear!' will change their mind." + }, + { + "Name": "Bag of Holding", + "Description": "This item functions as a normal backpack, however when attempting to retrieve an item, a calm female voice tells them there is a wait time of 4d10 minutes before they can retrieve their item (actual time is stated time plus 6d6 additional minutes). During this wait, the bag plays either annoying muzak or advertisements for the bag's creator's other products/services. Upon attempting to retrieve an item, there is a chance that the wrong item is retrieved, or that the intended item is simply missing. Obtaining the original item requires an additional 4d10+6d6 minutes and has only a 5% chance of success." + }, + { + "Name": "Bag of Holding (Alternate)", + "Description": "This sack needs a hug!" + }, + { + "Name": "Bag of Trading", + "Description": "You can take one thing out of the bag for each object you put in the bag. However, you have no control over what you get, and there are no trade-backs. Past research seems to imply there's some sort of correlation to what gets you what, but it's extremely convoluted and far from understood." + }, + { + "Name": "Bag of Trick", + "Description": "This bag operates like a Bag of Tricks, except it only works once a week and produces a rat each time itis used." + }, + { + "Name": "Bag of Unholding", + "Description": "Quite a large backpack but even the smallest item doesn't fit." + }, + { + "Name": "Bagpipe of Stealth", + "Description": "Grants the user invisibility as long as it is being played." + }, + { + "Name": "Ball of Eyes", + "Description": "A snow-globe filled with miniature eyeballs. When shaken, it grants the user a blurry, jittery vision of some future event." + }, + { + "Name": "Banana Walkie-Talkies", + "Description": "There exist two, and only two, of these items in the world. One of which is possessed by a cranky and lonely half-orc. It appears to be an innocuous wooden banana with a coat of faded yellow paint. When an end (doesn't matter which one) is placed against your ear, you can hear a ringing followed by a *click* and a half-orc yelling at you for waking him up at this ungodly hour. If you drop the banana or \"hang up,\" the call ends. If you stay and listen, the half-orc will yell at you, call out obscenities, and start going on about his daily problems and mishaps in his love life. Every so often (2% chance/day), the banana will ring while you are sleeping and the half-orc will want to talk to you about his problems." + }, + { + "Name": "Barrel of Holding", + "Description": "This large wooden barrel measuring √(12/π) feet in diameter and 5 feet in height can hold up to 15 cubic feet of matter." + }, + { + "Name": "Beam Sword of Severed Nerves", + "Description": "A beam sword. It cannot cut anything but nerve strings. Will pass through any other material leaving no harm." + }, + { + "Name": "Belt of Pants", + "Description": "This belt creates illusory pants on the wearer. The wearer can suppress the illusion at will" + }, + { + "Name": "Belt of Tightening", + "Description": "Every time you put this belt on, all of your clothes permanently shrink a fraction of a millimeter. The effect is compound." + }, + { + "Name": "Belt of Unbathed Breath", + "Description": "When worn around the waist, allows the user to breathe underwater. Does not function when wet." + }, + { + "Name": "Boogie Skeleton", + "Description": "This pile of bones is small, such as one that might be obtained from a bird or a toad, though it can look as though it came from any creature. When a song is sung or played in the vicinity of the skeleton, it begins to dance appropriately. As soon as the music stops, it collapses into the pile of bones again. The skeleton, when dancing, can be no larger than Diminutive." + }, + { + "Name": "Book of Canon", + "Description": "A book that automatically transforms into a copy of the sacred text of any religion, translated into the language the user is most familiar with." + }, + { + "Name": "Book of Confusion", + "Description": "The letters in this book always appear to be upside down, even if viewed from different directions at the same time. The book is a bad novel about zombies." + }, + { + "Name": "Book of Curses", + "Description": "When opened, the book verbally berates anyone in the immediate vicinity, calling into question their combat ability, intellect, personal hygiene, lineage and profession of their mothers, and other delightful insults. Once closed the book continues shouting (although it is muffled) until placed inside a bag or some other similar container for 1d4+1 minutes and ignored. Replying to the book in any other way causes the insults to get louder and more childish the more time you spend replying to it." + }, + { + "Name": "Book of Exalted Deeds", + "Description": "Contains a listing of some of the finest houses ever sold and the specifics of the titles to the properties." + }, + { + "Name": "Boots of Levitation", + "Description": "These boots levitate a few inches off the ground when not worn." + }, + { + "Name": "Boots of Stylishness", + "Description": "Knee high black boots that are always clean and shiny. They never take in water, thus feet are always dry." + }, + { + "Name": "Boots of Walking", + "Description": "The wearer of the boots cannot run, nor can he take a double move action, and takes a -5 to Tumble checks. These boots are made for walkin', and that's just what they'll do." + }, + { + "Name": "Bottle of Air", + "Description": "It's a bottle. Full of air. Congratulations." + }, + { + "Name": "Bottomless Beer Mug", + "Description": "Any liquid poured into this mug treats the bottom as incorporeal, but solid objects don't" + }, + { + "Name": "Bowl of Comfortable Warmth", + "Description": "Any liquid in the bowl will feel comfortably warm, so icy cold water will feel like it's a bit over room temperature. Do note, however, that it's still icy cold water, it just feels warmer." + }, + { + "Name": "Breastplate of Secret Detection", + "Description": "If the wearer of this breastplate gains a piece of information that is somehow connected to the concealment of a hidden conspiracy or plot, a live and still wet red herring forms on the inside of the armor." + }, + { + "Name": "Bullying Gloves", + "Description": "At random intervals, these gloves instil the wearer with a near-irresistible urge to hit themselves." + }, + { + "Name": "Bunyan’s Belt", + "Description": "When worn, causes an enormous, bushy black beard to appear on the wearer’s face." + }, + { + "Name": "Cape of Resistance", + "Description": "When this item is placed on any living thing it somehow manages to fall off, untie itself, slip past the owner’s neck entirely, or otherwise avoid being worn." + }, + { + "Name": "Case of the Litigator", + "Description": "Translates any document placed in the case into legal jargon; non-reversible. Does not confer the ability to understand legal jargon." + }, + { + "Name": "Cat of Schrodinger", + "Description": "When this cat is not being observed in any way it is both dead and alive. When something observes it, it suddenly becomes either dead or alive with a 50% chance of either." + }, + { + "Name": "Chair of Steadiness", + "Description": "This chair can be moved but cannot be tipped over by anything less than a DC 35 Strength check." + }, + { + "Name": "Charles", + "Description": "This small, unremarkable figurine of a gnome refuses to be called anything but Charles. No other name will leave the lips of the speaker. It has no other powers." + }, + { + "Name": "Chime of Interruption", + "Description": "This instrument can be struck once every round, which takes a standard action. On any round the chime is activated the user may ready one action without spending an action to do so." + }, + { + "Name": "Chime of Opening", + "Description": "Commonly affixed to or near doors, when pressed it emits a sound on the interior of the owner’s home to let them know guests have arrived." + }, + { + "Name": "Chime of Opening (Alternate)", + "Description": "When struck against a solid surface, this chime emits a loud click, and opens along its length, to reveal a tiny compartment adequate to conceal a single 'smoke' worth of pipeweed or a blowgun needle. When the compartment is closed, it is seamless and can be detected only with a DC 20 Search check. If hit with an instrument such as a small mallet, it chimes." + }, + { + "Name": "Cloak of Billowing", + "Description": "This black and silver cloak will always billow dramatically behind the wearer, it has no other effects." + }, + { + "Name": "Cloak of Displacement, Minor", + "Description": "This item appears to be a normal cloak, but when worn by a character its magical properties distort and warp reality. When any attack is made against the wearer the cloak has a 20% chance of falling off, no matter how it is secured." + }, + { + "Name": "Compacting hammer", + "Description": "The force imparted by it is multiplied, but is spread around the surface of a struck object facing inward." + }, + { + "Name": "Cymbal of Symbols", + "Description": "This musical instrument enables the user to comprehend dead languages, but only while they are deafened by noise." + }, + { + "Name": "Dagger of Told Secrets", + "Description": "A simple-looking dagger. If used to backstab someone to death, it will whisper your most embarrassing secret to that person." + }, + { + "Name": "Dagger of Untold Secrets", + "Description": "A simple looking dagger. If used to backstab someone to death, it will whisper the most embarrassing secret of that person to you." + }, + { + "Name": "Decanter of Endless Sorrow", + "Description": "A pewter flask that produces limitless alcohol when held to their lips by someone who is troubled. It gets them drunk but they never feel any better." + }, + { + "Name": "Diadem of Brothaurity", + "Description": "When wearing this headpiece, you are as elegant and well-spoken as a famous diplomat or regent, but you can't stop calling everyone bro." + }, + { + "Name": "Enchanted Book of Collected Stories", + "Description": "Opening this will cause miniature creatures/people to pour out and preform a chapter from the book much like a theater." + }, + { + "Name": "Fade to Black Belt", + "Description": "The wearer of this belt will be unable to remember any sexual encounter begun while they were wearing the belt." + }, + { + "Name": "Focusing Ring", + "Description": "The digit on which this ring is worn can be viewed in extremely high definition from a great distance." + }, + { + "Name": "Gloves of Tinkering", + "Description": "Wearing the gloves will make you able to almost repair any broken item. However, you will always end up with pieces from the item that don't seem to fit anywhere." + }, + { + "Name": "Greater Staff of Random Summoning", + "Description": "Summons a random creature at a random place. You could be summoning a giant Ogre on the other side of the globe for all you know." + }, + { + "Name": "Hoarder's Wand", + "Description": "Does nothing but for some reason you think it might be important later in your quest." + }, + { + "Name": "Hood of Offensive Facades", + "Description": "This hood will change your identity in the eyes of others to the appearance of the person they most personally dislike." + }, + { + "Name": "Hood Of Worrisome Facades", + "Description": "This hood will change your identity in the eyes of others, however the identity used will be random." + }, + { + "Name": "Indestructible Notebook of Memories", + "Description": "This otherwise normal notepad of normal notepad size cannot be damaged or destroyed, and anything written in it cannot be obscured or defaced. It also has unlimited pages despite its finite size. However, the data it holds only lasts as long as the writer independently remembers it, and decays in exact proportion to the relevant memories. Remember who and when, but not where? Then the words describing the location in that particular entry are the only ones gone." + }, + { + "Name": "Intransigent Rod", + "Description": "When the button on this artifact is pressed in, the holder's opinions solidify and they become impossible to convince." + }, + { + "Name": "Lunchbox of Delicious Unfulfillment", + "Description": "This lunchbox will hold whatever food you desire. However you will never get full and the food will deliver no nourishment." + }, + { + "Name": "The Mattress of Poverty", + "Description": "No matter how you fluff this gorgeous, thick, mattress, you will always sleep on the thin part of it." + }, + { + "Name": "Mug O' Dissatisfaction", + "Description": "A mug that always produces a steaming hot cup of coffee or tea when tapped on the bottom. It conjures the opposite of what the tapper prefers, so if you like tea you get coffee and vice versa. Handing the full mug to another person will make the drink in it transform to the opposite of that persons preferences." + }, + { + "Name": "Murder Dagger", + "Description": "All damage it would deal is instead replaced by the target being harassed by crows for that many hours." + }, + { + "Name": "Needle Of Learned Compromise", + "Description": "This needle will create beautiful tattoos of any design, however they hurt a tiny bit more. When used to sew it is entirely normal." + }, + { + "Name": "Portable Dark Tavern Corner", + "Description": "Consisting of two wooden boards connected by a hinge, this artifact draws those nearby into assuming it is a perfect spot to conduct seedy business." + }, + { + "Name": "Ring of First Impression", + "Description": "Wearing the ring will make you able to perform a perfect handshake with the hand wearing it." + }, + { + "Name": "Sack of Hive Eggs", + "Description": "Crushing one of the numerous tiny eggs will cause the thoughts of everybody in the proximity to merge. Everybody can hear what you think and you can hear everybody." + }, + { + "Name": "Shoes of the Restless Traveler", + "Description": "These shoes allow their user to run for miles without feeling fatigue, but if they try to do anything else with it (walk, sit down, jump), they will instantly trip" + }, + { + "Name": "Sword of Parrying", + "Description": "Parries every attack, swinging it yourself will force it to \"parry\" your opponents weapon/attack even though he/she/it is defenseless." + }, + { + "Name": "Vorpal Grindstone", + "Description": "It can \"sharpen\" any object to become vorpal. Any object." + }, + { + "Name": "The Water Hat", + "Description": "A small red hat, when worn, causes water to pour from the wearer's fingers at the speed " + } +] diff --git a/src/NadekoBot/data/pokemon/LICENSE b/src/NadekoBot/data/pokemon/LICENSE new file mode 100644 index 00000000..283bf7a1 --- /dev/null +++ b/src/NadekoBot/data/pokemon/LICENSE @@ -0,0 +1,21 @@ +Copyright (c) 2011-2016 Guangcong Luo and other contributors +http://pokemonshowdown.com/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/NadekoBot/data/pokemon/pokemon_abilities.json b/src/NadekoBot/data/pokemon/pokemon_abilities.json new file mode 100644 index 00000000..7cfde85f --- /dev/null +++ b/src/NadekoBot/data/pokemon/pokemon_abilities.json @@ -0,0 +1,1596 @@ +{ + "adaptability": { + "desc": "This Pokemon's moves that match one of its types have a same-type attack bonus (STAB) of 2 instead of 1.5.", + "shortDesc": "This Pokemon's same-type attack bonus (STAB) is 2 instead of 1.5.", + "id": "adaptability", + "name": "Adaptability", + "rating": 3.5, + "num": 91 + }, + "aftermath": { + "desc": "If this Pokemon is knocked out with a contact move, that move's user loses 1/4 of its maximum HP, rounded down. If any active Pokemon has the Ability Damp, this effect is prevented.", + "shortDesc": "If this Pokemon is KOed with a contact move, that move's user loses 1/4 its max HP.", + "id": "aftermath", + "name": "Aftermath", + "onAfterDamageOrder": 1, + "rating": 2.5, + "num": 106 + }, + "aerilate": { + "desc": "This Pokemon's Normal-type moves become Flying-type moves and have their power multiplied by 1.3. This effect comes after other effects that change a move's type, but before Ion Deluge and Electrify's effects.", + "shortDesc": "This Pokemon's Normal-type moves become Flying type and have 1.3x power.", + "onModifyMovePriority": -1, + "effect": { + "duration": 1, + "onBasePowerPriority": 8 + }, + "id": "aerilate", + "name": "Aerilate", + "rating": 4, + "num": 185 + }, + "airlock": { + "shortDesc": "While this Pokemon is active, the effects of weather conditions are disabled.", + "suppressWeather": true, + "id": "airlock", + "name": "Air Lock", + "rating": 3, + "num": 76 + }, + "analytic": { + "desc": "The power of this Pokemon's move is multiplied by 1.3 if it is the last to move in a turn. Does not affect Doom Desire and Future Sight.", + "shortDesc": "This Pokemon's attacks have 1.3x power if it is the last to move in a turn.", + "onBasePowerPriority": 8, + "id": "analytic", + "name": "Analytic", + "rating": 2, + "num": 148 + }, + "angerpoint": { + "desc": "If this Pokemon, but not its substitute, is struck by a critical hit, its Attack is raised by 12 stages.", + "shortDesc": "If this Pokemon (not its substitute) takes a critical hit, its Attack is raised 12 stages.", + "id": "angerpoint", + "name": "Anger Point", + "rating": 2, + "num": 83 + }, + "anticipation": { + "desc": "On switch-in, this Pokemon is alerted if any opposing Pokemon has an attack that is super effective on this Pokemon, or an OHKO move. Counter, Metal Burst, and Mirror Coat count as attacking moves of their respective types, while Hidden Power, Judgment, Natural Gift, Techno Blast, and Weather Ball are considered Normal-type moves.", + "shortDesc": "On switch-in, this Pokemon shudders if any foe has a supereffective or OHKO move.", + "id": "anticipation", + "name": "Anticipation", + "rating": 1, + "num": 107 + }, + "arenatrap": { + "desc": "Prevents adjacent opposing Pokemon from choosing to switch out unless they are immune to trapping or are airborne.", + "shortDesc": "Prevents adjacent foes from choosing to switch unless they are airborne.", + "id": "arenatrap", + "name": "Arena Trap", + "rating": 4.5, + "num": 71 + }, + "aromaveil": { + "desc": "This Pokemon and its allies cannot be affected by Attract, Disable, Encore, Heal Block, Taunt, or Torment.", + "shortDesc": "Protects user/allies from Attract, Disable, Encore, Heal Block, Taunt, and Torment.", + "id": "aromaveil", + "name": "Aroma Veil", + "rating": 1.5, + "num": 165 + }, + "aurabreak": { + "desc": "While this Pokemon is active, the effects of the Abilities Dark Aura and Fairy Aura are reversed, multiplying the power of Dark- and Fairy-type moves, respectively, by 3/4 instead of 1.33.", + "shortDesc": "While this Pokemon is active, the Dark Aura and Fairy Aura power modifier is 0.75x.", + "effect": { + "duration": 1 + }, + "id": "aurabreak", + "name": "Aura Break", + "rating": 2, + "num": 188 + }, + "baddreams": { + "desc": "Causes adjacent opposing Pokemon to lose 1/8 of their maximum HP, rounded down, at the end of each turn if they are asleep.", + "shortDesc": "Causes sleeping adjacent foes to lose 1/8 of their max HP at the end of each turn.", + "onResidualOrder": 26, + "onResidualSubOrder": 1, + "id": "baddreams", + "name": "Bad Dreams", + "rating": 2, + "num": 123 + }, + "battlearmor": { + "shortDesc": "This Pokemon cannot be struck by a critical hit.", + "onCriticalHit": false, + "id": "battlearmor", + "name": "Battle Armor", + "rating": 1, + "num": 4 + }, + "bigpecks": { + "shortDesc": "Prevents other Pokemon from lowering this Pokemon's Defense stat stage.", + "id": "bigpecks", + "name": "Big Pecks", + "rating": 0.5, + "num": 145 + }, + "blaze": { + "desc": "When this Pokemon has 1/3 or less of its maximum HP, rounded down, its attacking stat is multiplied by 1.5 while using a Fire-type attack.", + "shortDesc": "When this Pokemon has 1/3 or less of its max HP, its Fire attacks do 1.5x damage.", + "onModifyAtkPriority": 5, + "onModifySpAPriority": 5, + "id": "blaze", + "name": "Blaze", + "rating": 2, + "num": 66 + }, + "bulletproof": { + "desc": "This Pokemon is immune to ballistic moves. Ballistic moves include BulvarSeed, Octazooka, Barrage, Rock Wrecker, Zap Cannon, Acid Spray, Aura Sphere, Focus Blast, and all moves with Ball or Bomb in their name.", + "shortDesc": "Makes user immune to ballistic moves (Shadow Ball, Sludge Bomb, Focus Blast, etc).", + "id": "bulletproof", + "name": "Bulletproof", + "rating": 3, + "num": 171 + }, + "cheekpouch": { + "desc": "If this Pokemon eats a Berry, it restores 1/3 of its maximum HP, rounded down, in addition to the Berry's effect.", + "shortDesc": "If this Pokemon eats a Berry, it restores 1/3 of its max HP after the Berry's effect.", + "id": "cheekpouch", + "name": "Cheek Pouch", + "rating": 2, + "num": 167 + }, + "chlorophyll": { + "shortDesc": "If Sunny Day is active, this Pokemon's Speed is doubled.", + "id": "chlorophyll", + "name": "Chlorophyll", + "rating": 2.5, + "num": 34 + }, + "clearbody": { + "shortDesc": "Prevents other Pokemon from lowering this Pokemon's stat stages.", + "id": "clearbody", + "name": "Clear Body", + "rating": 2, + "num": 29 + }, + "cloudnine": { + "shortDesc": "While this Pokemon is active, the effects of weather conditions are disabled.", + "suppressWeather": true, + "id": "cloudnine", + "name": "Cloud Nine", + "rating": 3, + "num": 13 + }, + "colorchange": { + "desc": "This Pokemon's type changes to match the type of the last move that hit it, unless that type is already one of its types. This effect applies after all hits from a multi-hit move; Sheer Force prevents it from activating if the move has a secondary effect.", + "shortDesc": "This Pokemon's type changes to the type of a move it's hit by, unless it has the type.", + "id": "colorchange", + "name": "Color Change", + "rating": 1, + "num": 16 + }, + "competitive": { + "desc": "This Pokemon's Special Attack is raised by 2 stages for each of its stat stages that is lowered by an opposing Pokemon.", + "shortDesc": "This Pokemon's Sp. Atk is raised by 2 for each of its stats that is lowered by a foe.", + "id": "competitive", + "name": "Competitive", + "rating": 2.5, + "num": 172 + }, + "compoundeyes": { + "shortDesc": "This Pokemon's moves have their accuracy multiplied by 1.3.", + "id": "compoundeyes", + "name": "Compound Eyes", + "rating": 3.5, + "num": 14 + }, + "contrary": { + "shortDesc": "If this Pokemon has a stat stage raised it is lowered instead, and vice versa.", + "id": "contrary", + "name": "Contrary", + "rating": 4, + "num": 126 + }, + "cursedbody": { + "desc": "If this Pokemon is hit by an attack, there is a 30% chance that move gets disabled unless one of the attacker's moves is already disabled.", + "shortDesc": "If this Pokemon is hit by an attack, there is a 30% chance that move gets disabled.", + "id": "cursedbody", + "name": "Cursed Body", + "rating": 2, + "num": 130 + }, + "cutecharm": { + "desc": "There is a 30% chance a Pokemon making contact with this Pokemon will become infatuated if it is of the opposite gender.", + "shortDesc": "30% chance of infatuating Pokemon of the opposite gender if they make contact.", + "id": "cutecharm", + "name": "Cute Charm", + "rating": 1, + "num": 56 + }, + "damp": { + "desc": "While this Pokemon is active, Self-Destruct, Explosion, and the Ability Aftermath are prevented from having an effect.", + "shortDesc": "While this Pokemon is active, Self-Destruct, Explosion, and Aftermath have no effect.", + "id": "damp", + "name": "Damp", + "rating": 1, + "num": 6 + }, + "darkaura": { + "desc": "While this Pokemon is active, the power of Dark-type moves used by active Pokemon is multiplied by 1.33.", + "shortDesc": "While this Pokemon is active, a Dark move used by any Pokemon has 1.33x power.", + "id": "darkaura", + "name": "Dark Aura", + "rating": 3, + "num": 186 + }, + "defeatist": { + "desc": "While this Pokemon has 1/2 or less of its maximum HP, its Attack and Special Attack are halved.", + "shortDesc": "While this Pokemon has 1/2 or less of its max HP, its Attack and Sp. Atk are halved.", + "onModifyAtkPriority": 5, + "onModifySpAPriority": 5, + "id": "defeatist", + "name": "Defeatist", + "rating": -1, + "num": 129 + }, + "defiant": { + "desc": "This Pokemon's Attack is raised by 2 stages for each of its stat stages that is lowered by an opposing Pokemon.", + "shortDesc": "This Pokemon's Attack is raised by 2 for each of its stats that is lowered by a foe.", + "id": "defiant", + "name": "Defiant", + "rating": 2.5, + "num": 128 + }, + "deltastream": { + "desc": "On switch-in, the weather becomes strong winds that remove the weaknesses of the Flying type from Flying-type Pokemon. This weather remains in effect until this Ability is no longer active for any Pokemon, or the weather is changed by Desolate Land or Primordial Sea.", + "shortDesc": "On switch-in, strong winds begin until this Ability is not active in battle.", + "id": "deltastream", + "name": "Delta Stream", + "rating": 5, + "num": 191 + }, + "desolateland": { + "desc": "On switch-in, the weather becomes extremely harsh sunlight that prevents damaging Water-type moves from executing, in addition to all the effects of Sunny Day. This weather remains in effect until this Ability is no longer active for any Pokemon, or the weather is changed by Delta Stream or Primordial Sea.", + "shortDesc": "On switch-in, extremely harsh sunlight begins until this Ability is not active in battle.", + "id": "desolateland", + "name": "Desolate Land", + "rating": 5, + "num": 190 + }, + "download": { + "desc": "On switch-in, this Pokemon's Attack or Special Attack is raised by 1 stage based on the weaker combined defensive stat of all opposing Pokemon. Attack is raised if their Defense is lower, and Special Attack is raised if their Special Defense is the same or lower.", + "shortDesc": "On switch-in, Attack or Sp. Atk is raised 1 stage based on the foes' weaker Defense.", + "id": "download", + "name": "Download", + "rating": 4, + "num": 88 + }, + "drizzle": { + "shortDesc": "On switch-in, this Pokemon summons Rain Dance.", + "id": "drizzle", + "name": "Drizzle", + "rating": 4.5, + "num": 2 + }, + "drought": { + "shortDesc": "On switch-in, this Pokemon summons Sunny Day.", + "id": "drought", + "name": "Drought", + "rating": 4.5, + "num": 70 + }, + "dryskin": { + "desc": "This Pokemon is immune to Water-type moves and restores 1/4 of its maximum HP, rounded down, when hit by a Water-type move. The power of Fire-type moves is multiplied by 1.25 when used on this Pokemon. At the end of each turn, this Pokemon restores 1/8 of its maximum HP, rounded down, if the weather is Rain Dance, and loses 1/8 of its maximum HP, rounded down, if the weather is Sunny Day.", + "shortDesc": "This Pokemon is healed 1/4 by Water, 1/8 by Rain; is hurt 1.25x by Fire, 1/8 by Sun.", + "onBasePowerPriority": 7, + "id": "dryskin", + "name": "Dry Skin", + "rating": 3.5, + "num": 87 + }, + "earlybird": { + "shortDesc": "This Pokemon's sleep counter drops by 2 instead of 1.", + "id": "earlybird", + "name": "Early Bird", + "rating": 2.5, + "num": 48 + }, + "effectspore": { + "desc": "30% chance a Pokemon making contact with this Pokemon will be poisoned, paralyzed, or fall asleep.", + "shortDesc": "30% chance of poison/paralysis/sleep on others making contact with this Pokemon.", + "id": "effectspore", + "name": "Effect Spore", + "rating": 2, + "num": 27 + }, + "fairyaura": { + "desc": "While this Pokemon is active, the power of Fairy-type moves used by active Pokemon is multiplied by 1.33.", + "shortDesc": "While this Pokemon is active, a Fairy move used by any Pokemon has 1.33x power.", + "id": "fairyaura", + "name": "Fairy Aura", + "rating": 3, + "num": 187 + }, + "filter": { + "shortDesc": "This Pokemon receives 3/4 damage from supereffective attacks.", + "id": "filter", + "name": "Filter", + "rating": 3, + "num": 111 + }, + "flamebody": { + "shortDesc": "30% chance a Pokemon making contact with this Pokemon will be burned.", + "id": "flamebody", + "name": "Flame Body", + "rating": 2, + "num": 49 + }, + "flareboost": { + "desc": "While this Pokemon is burned, the power of its special attacks is multiplied by 1.5.", + "shortDesc": "While this Pokemon is burned, its special attacks have 1.5x power.", + "onBasePowerPriority": 8, + "id": "flareboost", + "name": "Flare Boost", + "rating": 2.5, + "num": 138 + }, + "flashfire": { + "desc": "This Pokemon is immune to Fire-type moves. The first time it is hit by a Fire-type move, its attacking stat is multiplied by 1.5 while using a Fire-type attack as long as it remains active and has this Ability. If this Pokemon is frozen, it cannot be defrosted by Fire-type attacks.", + "shortDesc": "This Pokemon's Fire attacks do 1.5x damage if hit by one Fire move; Fire immunity.", + "effect": { + "noCopy": true, + "onModifyAtkPriority": 5, + "onModifySpAPriority": 5 + }, + "id": "flashfire", + "name": "Flash Fire", + "rating": 3, + "num": 18 + }, + "flowergift": { + "desc": "If this Pokemon is a Cherrim and Sunny Day is active, it changes to Sunshine Form and the Attack and Special Defense of it and its allies are multiplied by 1.5.", + "shortDesc": "If user is Cherrim and Sunny Day is active, it and allies' Attack and Sp. Def are 1.5x.", + "onModifyAtkPriority": 3, + "onModifySpDPriority": 4, + "id": "flowergift", + "name": "Flower Gift", + "rating": 2.5, + "num": 122 + }, + "flowerveil": { + "desc": "Grass-type Pokemon on this Pokemon's side cannot have their stat stages lowered by other Pokemon or have a major status condition inflicted on them by other Pokemon.", + "shortDesc": "This side's Grass types can't have stats lowered or status inflicted by other Pokemon.", + "id": "flowerveil", + "name": "Flower Veil", + "rating": 0, + "num": 166 + }, + "forecast": { + "desc": "If this Pokemon is a Castform, its type changes to the current weather condition's type, except Sandstorm.", + "shortDesc": "Castform's type changes to the current weather condition's type, except Sandstorm.", + "id": "forecast", + "name": "Forecast", + "rating": 3, + "num": 59 + }, + "forewarn": { + "desc": "On switch-in, this Pokemon is alerted to the move with the highest power, at random, known by an opposing Pokemon.", + "shortDesc": "On switch-in, this Pokemon is alerted to the foes' move with the highest power.", + "id": "forewarn", + "name": "Forewarn", + "rating": 1, + "num": 108 + }, + "friendguard": { + "shortDesc": "This Pokemon's allies receive 3/4 damage from other Pokemon's attacks.", + "id": "friendguard", + "name": "Friend Guard", + "rating": 0, + "num": 132 + }, + "frisk": { + "shortDesc": "On switch-in, this Pokemon identifies the held items of all opposing Pokemon.", + "id": "frisk", + "name": "Frisk", + "rating": 1.5, + "num": 119 + }, + "furcoat": { + "shortDesc": "This Pokemon's Defense is doubled.", + "onModifyDefPriority": 6, + "id": "furcoat", + "name": "Fur Coat", + "rating": 3.5, + "num": 169 + }, + "galewings": { + "shortDesc": "This Pokemon's Flying-type moves have their priority increased by 1.", + "id": "galewings", + "name": "Gale Wings", + "rating": 4.5, + "num": 177 + }, + "gluttony": { + "shortDesc": "When this Pokemon has 1/2 or less of its maximum HP, it uses certain Berries early.", + "id": "gluttony", + "name": "Gluttony", + "rating": 1, + "num": 82 + }, + "gooey": { + "shortDesc": "Pokemon making contact with this Pokemon have their Speed lowered by 1 stage.", + "id": "gooey", + "name": "Gooey", + "rating": 2.5, + "num": 183 + }, + "grasspelt": { + "shortDesc": "If Grassy Terrain is active, this Pokemon's Defense is multiplied by 1.5.", + "onModifyDefPriority": 6, + "id": "grasspelt", + "name": "Grass Pelt", + "rating": 0.5, + "num": 179 + }, + "guts": { + "desc": "If this Pokemon has a major status condition, its Attack is multiplied by 1.5; burn's physical damage halving is ignored.", + "shortDesc": "If this Pokemon is statused, its Attack is 1.5x; ignores burn halving physical damage.", + "onModifyAtkPriority": 5, + "id": "guts", + "name": "Guts", + "rating": 3, + "num": 62 + }, + "harvest": { + "desc": "If the last item this Pokemon used is a Berry, there is a 50% chance it gets restored at the end of each turn. If Sunny Day is active, this chance is 100%.", + "shortDesc": "If last item used is a Berry, 50% chance to restore it each end of turn. 100% in Sun.", + "id": "harvest", + "name": "Harvest", + "onResidualOrder": 26, + "onResidualSubOrder": 1, + "rating": 2.5, + "num": 139 + }, + "healer": { + "desc": "There is a 30% chance of curing an adjacent ally's major status condition at the end of each turn.", + "shortDesc": "30% chance of curing an adjacent ally's status at the end of each turn.", + "id": "healer", + "name": "Healer", + "onResidualOrder": 5, + "onResidualSubOrder": 1, + "rating": 0, + "num": 131 + }, + "heatproof": { + "desc": "The power of Fire-type attacks against this Pokemon is halved, and any burn damage taken is 1/16 of its maximum HP, rounded down.", + "shortDesc": "The power of Fire-type attacks against this Pokemon is halved; burn damage halved.", + "onBasePowerPriority": 7, + "id": "heatproof", + "name": "Heatproof", + "rating": 2.5, + "num": 85 + }, + "heavymetal": { + "shortDesc": "This Pokemon's weight is doubled.", + "id": "heavymetal", + "name": "Heavy Metal", + "rating": -1, + "num": 134 + }, + "honeygather": { + "shortDesc": "No competitive use.", + "id": "honeygather", + "name": "Honey Gather", + "rating": 0, + "num": 118 + }, + "hugepower": { + "shortDesc": "This Pokemon's Attack is doubled.", + "onModifyAtkPriority": 5, + "id": "hugepower", + "name": "Huge Power", + "rating": 5, + "num": 37 + }, + "hustle": { + "desc": "This Pokemon's Attack is multiplied by 1.5 and the accuracy of its physical attacks is multiplied by 0.8.", + "shortDesc": "This Pokemon's Attack is 1.5x and accuracy of its physical attacks is 0.8x.", + "onModifyAtkPriority": 5, + "id": "hustle", + "name": "Hustle", + "rating": 3, + "num": 55 + }, + "hydration": { + "desc": "This Pokemon has its major status condition cured at the end of each turn if Rain Dance is active.", + "shortDesc": "This Pokemon has its status cured at the end of each turn if Rain Dance is active.", + "onResidualOrder": 5, + "onResidualSubOrder": 1, + "id": "hydration", + "name": "Hydration", + "rating": 2, + "num": 93 + }, + "hypercutter": { + "shortDesc": "Prevents other Pokemon from lowering this Pokemon's Attack stat stage.", + "id": "hypercutter", + "name": "Hyper Cutter", + "rating": 1.5, + "num": 52 + }, + "icebody": { + "desc": "If Hail is active, this Pokemon restores 1/16 of its maximum HP, rounded down, at the end of each turn. This Pokemon takes no damage from Hail.", + "shortDesc": "If Hail is active, this Pokemon heals 1/16 of its max HP each turn; immunity to Hail.", + "id": "icebody", + "name": "Ice Body", + "rating": 1.5, + "num": 115 + }, + "illuminate": { + "shortDesc": "No competitive use.", + "id": "illuminate", + "name": "Illuminate", + "rating": 0, + "num": 35 + }, + "illusion": { + "desc": "When this Pokemon switches in, it appears as the last unfainted Pokemon in its party until it takes direct damage from another Pokemon's attack. This Pokemon's actual level and HP are displayed instead of those of the mimicked Pokemon.", + "shortDesc": "This Pokemon appears as the last Pokemon in the party until it takes direct damage.", + "id": "illusion", + "name": "Illusion", + "rating": 4.5, + "num": 149 + }, + "immunity": { + "shortDesc": "This Pokemon cannot be poisoned. Gaining this Ability while poisoned cures it.", + "id": "immunity", + "name": "Immunity", + "rating": 2, + "num": 17 + }, + "imposter": { + "desc": "On switch-in, this Pokemon Transforms into the opposing Pokemon that is facing it. If there is no Pokemon at that position, this Pokemon does not Transform.", + "shortDesc": "On switch-in, this Pokemon Transforms into the opposing Pokemon that is facing it.", + "id": "imposter", + "name": "Imposter", + "rating": 4.5, + "num": 150 + }, + "infiltrator": { + "desc": "This Pokemon's moves ignore substitutes and the opposing side's Reflect, Light Screen, Safeguard, and Mist.", + "shortDesc": "Moves ignore substitutes and opposing Reflect, Light Screen, Safeguard, and Mist.", + "id": "infiltrator", + "name": "Infiltrator", + "rating": 3, + "num": 151 + }, + "innerfocus": { + "shortDesc": "This Pokemon cannot be made to flinch.", + "onFlinch": false, + "id": "innerfocus", + "name": "Inner Focus", + "rating": 1.5, + "num": 39 + }, + "insomnia": { + "shortDesc": "This Pokemon cannot fall asleep. Gaining this Ability while asleep cures it.", + "id": "insomnia", + "name": "Insomnia", + "rating": 2, + "num": 15 + }, + "intimidate": { + "desc": "On switch-in, this Pokemon lowers the Attack of adjacent opposing Pokemon by 1 stage. Pokemon behind a substitute are immune.", + "shortDesc": "On switch-in, this Pokemon lowers the Attack of adjacent opponents by 1 stage.", + "id": "intimidate", + "name": "Intimidate", + "rating": 3.5, + "num": 22 + }, + "ironbarbs": { + "desc": "Pokemon making contact with this Pokemon lose 1/8 of their maximum HP, rounded down.", + "shortDesc": "Pokemon making contact with this Pokemon lose 1/8 of their max HP.", + "onAfterDamageOrder": 1, + "id": "ironbarbs", + "name": "Iron Barbs", + "rating": 3, + "num": 160 + }, + "ironfist": { + "desc": "This Pokemon's punch-based attacks have their power multiplied by 1.2.", + "shortDesc": "This Pokemon's punch-based attacks have 1.2x power. Sucker Punch is not boosted.", + "onBasePowerPriority": 8, + "id": "ironfist", + "name": "Iron Fist", + "rating": 3, + "num": 89 + }, + "justified": { + "shortDesc": "This Pokemon's Attack is raised by 1 stage after it is damaged by a Dark-type move.", + "id": "justified", + "name": "Justified", + "rating": 2, + "num": 154 + }, + "keeneye": { + "desc": "Prevents other Pokemon from lowering this Pokemon's accuracy stat stage. This Pokemon ignores a target's evasiveness stat stage.", + "shortDesc": "This Pokemon's accuracy can't be lowered by others; ignores their evasiveness stat.", + "id": "keeneye", + "name": "Keen Eye", + "rating": 1, + "num": 51 + }, + "klutz": { + "desc": "This Pokemon's held item has no effect. This Pokemon cannot use Fling successfully. Macho Brace, Power Anklet, Power Band, Power Belt, Power Bracer, Power Lens, and Power Weight still have their effects.", + "shortDesc": "This Pokemon's held item has no effect, except Macho Brace. Fling cannot be used.", + "id": "klutz", + "name": "Klutz", + "rating": -1, + "num": 103 + }, + "leafguard": { + "desc": "If Sunny Day is active, this Pokemon cannot gain a major status condition and Rest will fail for it.", + "shortDesc": "If Sunny Day is active, this Pokemon cannot be statused and Rest will fail for it.", + "id": "leafguard", + "name": "Leaf Guard", + "rating": 1, + "num": 102 + }, + "levitate": { + "desc": "This Pokemon is immune to Ground. Gravity, Ingrain, Smack Down, Thousand Arrows, and Iron Ball nullify the immunity.", + "shortDesc": "This Pokemon is immune to Ground; Gravity/Ingrain/Smack Down/Iron Ball nullify it.", + "id": "levitate", + "name": "Levitate", + "rating": 3.5, + "num": 26 + }, + "lightmetal": { + "shortDesc": "This Pokemon's weight is halved.", + "id": "lightmetal", + "name": "Light Metal", + "rating": 1, + "num": 135 + }, + "lightningrod": { + "desc": "This Pokemon is immune to Electric-type moves and raises its Special Attack by 1 stage when hit by an Electric-type move. If this Pokemon is not the target of a single-target Electric-type move used by another Pokemon, this Pokemon redirects that move to itself if it is within the range of that move.", + "shortDesc": "This Pokemon draws Electric moves to itself to raise Sp. Atk by 1; Electric immunity.", + "id": "lightningrod", + "name": "Lightning Rod", + "rating": 3.5, + "num": 32 + }, + "limber": { + "shortDesc": "This Pokemon cannot be paralyzed. Gaining this Ability while paralyzed cures it.", + "id": "limber", + "name": "Limber", + "rating": 1.5, + "num": 7 + }, + "liquidooze": { + "shortDesc": "This Pokemon damages those draining HP from it for as much as they would heal.", + "id": "liquidooze", + "name": "Liquid Ooze", + "rating": 1.5, + "num": 64 + }, + "magicbounce": { + "desc": "This Pokemon blocks certain status moves and instead uses the move against the original user.", + "shortDesc": "This Pokemon blocks certain status moves and bounces them back to the user.", + "id": "magicbounce", + "name": "Magic Bounce", + "onTryHitPriority": 1, + "effect": { + "duration": 1 + }, + "rating": 4.5, + "num": 156 + }, + "magicguard": { + "desc": "This Pokemon can only be damaged by direct attacks. Curse and Substitute on use, Belly Drum, Pain Split, Struggle recoil, and confusion damage are considered direct damage.", + "shortDesc": "This Pokemon can only be damaged by direct attacks.", + "id": "magicguard", + "name": "Magic Guard", + "rating": 4.5, + "num": 98 + }, + "magician": { + "desc": "If this Pokemon has no item, it steals the item off a Pokemon it hits with an attack. Does not affect Doom Desire and Future Sight.", + "shortDesc": "If this Pokemon has no item, it steals the item off a Pokemon it hits with an attack.", + "id": "magician", + "name": "Magician", + "rating": 1.5, + "num": 170 + }, + "magmaarmor": { + "shortDesc": "This Pokemon cannot be frozen. Gaining this Ability while frozen cures it.", + "id": "magmaarmor", + "name": "Magma Armor", + "rating": 0.5, + "num": 40 + }, + "magnetpull": { + "desc": "Prevents adjacent opposing Steel-type Pokemon from choosing to switch out unless they are immune to trapping.", + "shortDesc": "Prevents adjacent Steel-type foes from choosing to switch.", + "id": "magnetpull", + "name": "Magnet Pull", + "rating": 4.5, + "num": 42 + }, + "marvelscale": { + "desc": "If this Pokemon has a major status condition, its Defense is multiplied by 1.5.", + "shortDesc": "If this Pokemon is statused, its Defense is 1.5x.", + "onModifyDefPriority": 6, + "id": "marvelscale", + "name": "Marvel Scale", + "rating": 2.5, + "num": 63 + }, + "megalauncher": { + "desc": "This Pokemon's pulse moves have their power multiplied by 1.5. Heal Pulse restores 3/4 of a target's maximum HP, rounded half down.", + "shortDesc": "This Pokemon's pulse moves have 1.5x power. Heal Pulse heals 3/4 target's max HP.", + "onBasePowerPriority": 8, + "id": "megalauncher", + "name": "Mega Launcher", + "rating": 3.5, + "num": 178 + }, + "minus": { + "desc": "If an active ally has this Ability or the Ability Plus, this Pokemon's Special Attack is multiplied by 1.5.", + "shortDesc": "If an active ally has this Ability or the Ability Plus, this Pokemon's Sp. Atk is 1.5x.", + "onModifySpAPriority": 5, + "id": "minus", + "name": "Minus", + "rating": 0, + "num": 58 + }, + "moldbreaker": { + "shortDesc": "This Pokemon's moves and their effects ignore the Abilities of other Pokemon.", + "stopAttackEvents": true, + "id": "moldbreaker", + "name": "Mold Breaker", + "rating": 3.5, + "num": 104 + }, + "moody": { + "desc": "This Pokemon has a random stat raised by 2 stages and another stat lowered by 1 stage at the end of each turn.", + "shortDesc": "Raises a random stat by 2 and lowers another stat by 1 at the end of each turn.", + "onResidualOrder": 26, + "onResidualSubOrder": 1, + "id": "moody", + "name": "Moody", + "rating": 5, + "num": 141 + }, + "motordrive": { + "desc": "This Pokemon is immune to Electric-type moves and raises its Speed by 1 stage when hit by an Electric-type move.", + "shortDesc": "This Pokemon's Speed is raised 1 stage if hit by an Electric move; Electric immunity.", + "id": "motordrive", + "name": "Motor Drive", + "rating": 3, + "num": 78 + }, + "moxie": { + "desc": "This Pokemon's Attack is raised by 1 stage if it attacks and knocks out another Pokemon.", + "shortDesc": "This Pokemon's Attack is raised by 1 stage if it attacks and KOes another Pokemon.", + "id": "moxie", + "name": "Moxie", + "rating": 3.5, + "num": 153 + }, + "multiscale": { + "shortDesc": "If this Pokemon is at full HP, damage taken from attacks is halved.", + "id": "multiscale", + "name": "Multiscale", + "rating": 4, + "num": 136 + }, + "multitype": { + "shortDesc": "If this Pokemon is an Arceus, its type changes to match its held Plate.", + "id": "multitype", + "name": "Multitype", + "rating": 4, + "num": 121 + }, + "mummy": { + "desc": "Pokemon making contact with this Pokemon have their Ability changed to Mummy. Does not affect the Abilities Multitype or Stance Change.", + "shortDesc": "Pokemon making contact with this Pokemon have their Ability changed to Mummy.", + "id": "mummy", + "name": "Mummy", + "rating": 2, + "num": 152 + }, + "naturalcure": { + "shortDesc": "This Pokemon has its major status condition cured when it switches out.", + "id": "naturalcure", + "name": "Natural Cure", + "rating": 3.5, + "num": 30 + }, + "noguard": { + "shortDesc": "Every move used by or against this Pokemon will always hit.", + "id": "noguard", + "name": "No Guard", + "rating": 4, + "num": 99 + }, + "normalize": { + "desc": "This Pokemon's moves are changed to be Normal type. This effect comes before other effects that change a move's type.", + "shortDesc": "This Pokemon's moves are changed to be Normal type.", + "onModifyMovePriority": 1, + "id": "normalize", + "name": "Normalize", + "rating": -1, + "num": 96 + }, + "oblivious": { + "desc": "This Pokemon cannot be infatuated or taunted. Gaining this Ability while affected cures it.", + "shortDesc": "This Pokemon cannot be infatuated or taunted. Gaining this Ability cures it.", + "id": "oblivious", + "name": "Oblivious", + "rating": 1, + "num": 12 + }, + "overcoat": { + "shortDesc": "This Pokemon is immune to powder moves and damage from Sandstorm or Hail.", + "id": "overcoat", + "name": "Overcoat", + "rating": 2.5, + "num": 142 + }, + "overgrow": { + "desc": "When this Pokemon has 1/3 or less of its maximum HP, its attacking stat is multiplied by 1.5 while using a Grass-type attack.", + "shortDesc": "When this Pokemon has 1/3 or less of its max HP, its Grass attacks do 1.5x damage.", + "onModifyAtkPriority": 5, + "onModifySpAPriority": 5, + "id": "overgrow", + "name": "Overgrow", + "rating": 2, + "num": 65 + }, + "owntempo": { + "shortDesc": "This Pokemon cannot be confused. Gaining this Ability while confused cures it.", + "id": "owntempo", + "name": "Own Tempo", + "rating": 1, + "num": 20 + }, + "parentalbond": { + "desc": "This Pokemon's damaging moves become multi-hit moves that hit twice. The second hit has its damage halved. Does not affect multi-hit moves or moves that have multiple targets.", + "shortDesc": "This Pokemon's damaging moves hit twice. The second hit has its damage halved.", + "effect": { + "duration": 1, + "onBasePowerPriority": 8 + }, + "id": "parentalbond", + "name": "Parental Bond", + "rating": 5, + "num": 184 + }, + "pickup": { + "shortDesc": "If this Pokemon has no item, it finds one used by an adjacent Pokemon this turn.", + "onResidualOrder": 26, + "onResidualSubOrder": 1, + "id": "pickup", + "name": "Pickup", + "rating": 0.5, + "num": 53 + }, + "pickpocket": { + "desc": "If this Pokemon has no item, it steals the item off a Pokemon that makes contact with it. This effect applies after all hits from a multi-hit move; Sheer Force prevents it from activating if the move has a secondary effect.", + "shortDesc": "If this Pokemon has no item, it steals the item off a Pokemon making contact with it.", + "id": "pickpocket", + "name": "Pickpocket", + "rating": 1, + "num": 124 + }, + "pixilate": { + "desc": "This Pokemon's Normal-type moves become Fairy-type moves and have their power multiplied by 1.3. This effect comes after other effects that change a move's type, but before Ion Deluge and Electrify's effects.", + "shortDesc": "This Pokemon's Normal-type moves become Fairy type and have 1.3x power.", + "onModifyMovePriority": -1, + "effect": { + "duration": 1, + "onBasePowerPriority": 8 + }, + "id": "pixilate", + "name": "Pixilate", + "rating": 4, + "num": 182 + }, + "plus": { + "desc": "If an active ally has this Ability or the Ability Minus, this Pokemon's Special Attack is multiplied by 1.5.", + "shortDesc": "If an active ally has this Ability or the Ability Minus, this Pokemon's Sp. Atk is 1.5x.", + "onModifySpAPriority": 5, + "id": "plus", + "name": "Plus", + "rating": 0, + "num": 57 + }, + "poisonheal": { + "desc": "If this Pokemon is poisoned, it restores 1/8 of its maximum HP, rounded down, at the end of each turn instead of losing HP.", + "shortDesc": "This Pokemon is healed by 1/8 of its max HP each turn when poisoned; no HP loss.", + "id": "poisonheal", + "name": "Poison Heal", + "rating": 4, + "num": 90 + }, + "poisonpoint": { + "shortDesc": "30% chance a Pokemon making contact with this Pokemon will be poisoned.", + "id": "poisonpoint", + "name": "Poison Point", + "rating": 2, + "num": 38 + }, + "poisontouch": { + "shortDesc": "This Pokemon's contact moves have a 30% chance of poisoning.", + "id": "poisontouch", + "name": "Poison Touch", + "rating": 2, + "num": 143 + }, + "prankster": { + "shortDesc": "This Pokemon's non-damaging moves have their priority increased by 1.", + "id": "prankster", + "name": "Prankster", + "rating": 4.5, + "num": 158 + }, + "pressure": { + "desc": "If this Pokemon is the target of an opposing Pokemon's move, that move loses one additional PP.", + "shortDesc": "If this Pokemon is the target of a foe's move, that move loses one additional PP.", + "id": "pressure", + "name": "Pressure", + "rating": 1.5, + "num": 46 + }, + "primordialsea": { + "desc": "On switch-in, the weather becomes heavy rain that prevents damaging Fire-type moves from executing, in addition to all the effects of Rain Dance. This weather remains in effect until this Ability is no longer active for any Pokemon, or the weather is changed by Delta Stream or Desolate Land.", + "shortDesc": "On switch-in, heavy rain begins until this Ability is not active in battle.", + "id": "primordialsea", + "name": "Primordial Sea", + "rating": 5, + "num": 189 + }, + "protean": { + "desc": "This Pokemon's type changes to match the type of the move it is about to use. This effect comes after all effects that change a move's type.", + "shortDesc": "This Pokemon's type changes to match the type of the move it is about to use.", + "id": "protean", + "name": "Protean", + "rating": 4, + "num": 168 + }, + "purepower": { + "shortDesc": "This Pokemon's Attack is doubled.", + "onModifyAtkPriority": 5, + "id": "purepower", + "name": "Pure Power", + "rating": 5, + "num": 74 + }, + "quickfeet": { + "desc": "If this Pokemon has a major status condition, its Speed is multiplied by 1.5; the Speed drop from paralysis is ignored.", + "shortDesc": "If this Pokemon is statused, its Speed is 1.5x; ignores Speed drop from paralysis.", + "id": "quickfeet", + "name": "Quick Feet", + "rating": 2.5, + "num": 95 + }, + "raindish": { + "desc": "If Rain Dance is active, this Pokemon restores 1/16 of its maximum HP, rounded down, at the end of each turn.", + "shortDesc": "If Rain Dance is active, this Pokemon heals 1/16 of its max HP each turn.", + "id": "raindish", + "name": "Rain Dish", + "rating": 1.5, + "num": 44 + }, + "rattled": { + "desc": "This Pokemon's Speed is raised by 1 stage if hit by a Bug-, Dark-, or Ghost-type attack.", + "shortDesc": "This Pokemon's Speed is raised 1 stage if hit by a Bug-, Dark-, or Ghost-type attack.", + "id": "rattled", + "name": "Rattled", + "rating": 1.5, + "num": 155 + }, + "reckless": { + "desc": "This Pokemon's attacks with recoil or crash damage have their power multiplied by 1.2. Does not affect Struggle.", + "shortDesc": "This Pokemon's attacks with recoil or crash damage have 1.2x power; not Struggle.", + "onBasePowerPriority": 8, + "id": "reckless", + "name": "Reckless", + "rating": 3, + "num": 120 + }, + "refrigerate": { + "desc": "This Pokemon's Normal-type moves become Ice-type moves and have their power multiplied by 1.3. This effect comes after other effects that change a move's type, but before Ion Deluge and Electrify's effects.", + "shortDesc": "This Pokemon's Normal-type moves become Ice type and have 1.3x power.", + "onModifyMovePriority": -1, + "effect": { + "duration": 1, + "onBasePowerPriority": 8 + }, + "id": "refrigerate", + "name": "Refrigerate", + "rating": 4, + "num": 174 + }, + "regenerator": { + "shortDesc": "This Pokemon restores 1/3 of its maximum HP, rounded down, when it switches out.", + "id": "regenerator", + "name": "Regenerator", + "rating": 4, + "num": 144 + }, + "rivalry": { + "desc": "This Pokemon's attacks have their power multiplied by 1.25 against targets of the same gender or multiplied by 0.75 against targets of the opposite gender. There is no modifier if either this Pokemon or the target is genderless.", + "shortDesc": "This Pokemon's attacks do 1.25x on same gender targets; 0.75x on opposite gender.", + "onBasePowerPriority": 8, + "id": "rivalry", + "name": "Rivalry", + "rating": 0.5, + "num": 79 + }, + "rockhead": { + "desc": "This Pokemon does not take recoil damage besides Struggle, Life Orb, and crash damage.", + "shortDesc": "This Pokemon does not take recoil damage besides Struggle/Life Orb/crash damage.", + "id": "rockhead", + "name": "Rock Head", + "rating": 3, + "num": 69 + }, + "roughskin": { + "desc": "Pokemon making contact with this Pokemon lose 1/8 of their maximum HP, rounded down.", + "shortDesc": "Pokemon making contact with this Pokemon lose 1/8 of their max HP.", + "onAfterDamageOrder": 1, + "id": "roughskin", + "name": "Rough Skin", + "rating": 3, + "num": 24 + }, + "runaway": { + "shortDesc": "No competitive use.", + "id": "runaway", + "name": "Run Away", + "rating": 0, + "num": 50 + }, + "sandforce": { + "desc": "If Sandstorm is active, this Pokemon's Ground-, Rock-, and Steel-type attacks have their power multiplied by 1.3. This Pokemon takes no damage from Sandstorm.", + "shortDesc": "This Pokemon's Ground/Rock/Steel attacks do 1.3x in Sandstorm; immunity to it.", + "onBasePowerPriority": 8, + "id": "sandforce", + "name": "Sand Force", + "rating": 2, + "num": 159 + }, + "sandrush": { + "desc": "If Sandstorm is active, this Pokemon's Speed is doubled. This Pokemon takes no damage from Sandstorm.", + "shortDesc": "If Sandstorm is active, this Pokemon's Speed is doubled; immunity to Sandstorm.", + "id": "sandrush", + "name": "Sand Rush", + "rating": 2.5, + "num": 146 + }, + "sandstream": { + "shortDesc": "On switch-in, this Pokemon summons Sandstorm.", + "id": "sandstream", + "name": "Sand Stream", + "rating": 4.5, + "num": 45 + }, + "sandveil": { + "desc": "If Sandstorm is active, this Pokemon's evasiveness is multiplied by 1.25. This Pokemon takes no damage from Sandstorm.", + "shortDesc": "If Sandstorm is active, this Pokemon's evasiveness is 1.25x; immunity to Sandstorm.", + "id": "sandveil", + "name": "Sand Veil", + "rating": 1.5, + "num": 8 + }, + "sapsipper": { + "desc": "This Pokemon is immune to Grass-type moves and raises its Attack by 1 stage when hit by a Grass-type move.", + "shortDesc": "This Pokemon's Attack is raised 1 stage if hit by a Grass move; Grass immunity.", + "id": "sapsipper", + "name": "Sap Sipper", + "rating": 3.5, + "num": 157 + }, + "scrappy": { + "shortDesc": "This Pokemon can hit Ghost types with Normal- and Fighting-type moves.", + "onModifyMovePriority": -5, + "id": "scrappy", + "name": "Scrappy", + "rating": 3, + "num": 113 + }, + "serenegrace": { + "shortDesc": "This Pokemon's moves have their secondary effect chance doubled.", + "onModifyMovePriority": -2, + "id": "serenegrace", + "name": "Serene Grace", + "rating": 4, + "num": 32 + }, + "shadowtag": { + "desc": "Prevents adjacent opposing Pokemon from choosing to switch out unless they are immune to trapping or also have this Ability.", + "shortDesc": "Prevents adjacent foes from choosing to switch unless they also have this Ability.", + "id": "shadowtag", + "name": "Shadow Tag", + "rating": 5, + "num": 23 + }, + "shedskin": { + "desc": "This Pokemon has a 33% chance to have its major status condition cured at the end of each turn.", + "shortDesc": "This Pokemon has a 33% chance to have its status cured at the end of each turn.", + "onResidualOrder": 5, + "onResidualSubOrder": 1, + "id": "shedskin", + "name": "Shed Skin", + "rating": 3.5, + "num": 61 + }, + "sheerforce": { + "desc": "This Pokemon's attacks with secondary effects have their power multiplied by 1.3, but the secondary effects are removed.", + "shortDesc": "This Pokemon's attacks with secondary effects have 1.3x power; nullifies the effects.", + "effect": { + "duration": 1, + "onBasePowerPriority": 8 + }, + "id": "sheerforce", + "name": "Sheer Force", + "rating": 4, + "num": 125 + }, + "shellarmor": { + "shortDesc": "This Pokemon cannot be struck by a critical hit.", + "onCriticalHit": false, + "id": "shellarmor", + "name": "Shell Armor", + "rating": 1, + "num": 75 + }, + "shielddust": { + "shortDesc": "This Pokemon is not affected by the secondary effect of another Pokemon's attack.", + "id": "shielddust", + "name": "Shield Dust", + "rating": 2.5, + "num": 19 + }, + "simple": { + "shortDesc": "If this Pokemon's stat stages are raised or lowered, the effect is doubled instead.", + "id": "simple", + "name": "Simple", + "rating": 4, + "num": 86 + }, + "skilllink": { + "shortDesc": "This Pokemon's multi-hit attacks always hit the maximum number of times.", + "id": "skilllink", + "name": "Skill Link", + "rating": 4, + "num": 92 + }, + "slowstart": { + "shortDesc": "On switch-in, this Pokemon's Attack and Speed are halved for 5 turns.", + "effect": { + "duration": 5, + "onModifyAtkPriority": 5 + }, + "id": "slowstart", + "name": "Slow Start", + "rating": -2, + "num": 112 + }, + "sniper": { + "shortDesc": "If this Pokemon strikes with a critical hit, the damage is multiplied by 1.5.", + "id": "sniper", + "name": "Sniper", + "rating": 1, + "num": 97 + }, + "snowcloak": { + "desc": "If Hail is active, this Pokemon's evasiveness is multiplied by 1.25. This Pokemon takes no damage from Hail.", + "shortDesc": "If Hail is active, this Pokemon's evasiveness is 1.25x; immunity to Hail.", + "id": "snowcloak", + "name": "Snow Cloak", + "rating": 1.5, + "num": 81 + }, + "snowwarning": { + "shortDesc": "On switch-in, this Pokemon summons Hail.", + "id": "snowwarning", + "name": "Snow Warning", + "rating": 4, + "num": 117 + }, + "solarpower": { + "desc": "If Sunny Day is active, this Pokemon's Special Attack is multiplied by 1.5 and it loses 1/8 of its maximum HP, rounded down, at the end of each turn.", + "shortDesc": "If Sunny Day is active, this Pokemon's Sp. Atk is 1.5x; loses 1/8 max HP per turn.", + "onModifySpAPriority": 5, + "id": "solarpower", + "name": "Solar Power", + "rating": 1.5, + "num": 94 + }, + "solidrock": { + "shortDesc": "This Pokemon receives 3/4 damage from supereffective attacks.", + "id": "solidrock", + "name": "Solid Rock", + "rating": 3, + "num": 116 + }, + "soundproof": { + "shortDesc": "This Pokemon is immune to sound-based moves, including Heal Bell.", + "id": "soundproof", + "name": "Soundproof", + "rating": 2, + "num": 43 + }, + "speedboost": { + "desc": "This Pokemon's Speed is raised by 1 stage at the end of each full turn it has been on the field.", + "shortDesc": "This Pokemon's Speed is raised 1 stage at the end of each full turn on the field.", + "onResidualOrder": 26, + "onResidualSubOrder": 1, + "id": "speedboost", + "name": "Speed Boost", + "rating": 4.5, + "num": 3 + }, + "stall": { + "shortDesc": "This Pokemon moves last among Pokemon using the same or greater priority moves.", + "id": "stall", + "name": "Stall", + "rating": -1, + "num": 100 + }, + "stancechange": { + "desc": "If this Pokemon is an Aegislash, it changes to Blade Forme before attempting to use an attacking move, and changes to Shield Forme before attempting to use King's Shield.", + "shortDesc": "If Aegislash, changes Forme to Blade before attacks and Shield before King's Shield.", + "onBeforeMovePriority": 11, + "id": "stancechange", + "name": "Stance Change", + "rating": 5, + "num": 176 + }, + "static": { + "shortDesc": "30% chance a Pokemon making contact with this Pokemon will be paralyzed.", + "id": "static", + "name": "Static", + "rating": 2, + "num": 9 + }, + "steadfast": { + "shortDesc": "If this Pokemon flinches, its Speed is raised by 1 stage.", + "id": "steadfast", + "name": "Steadfast", + "rating": 1, + "num": 80 + }, + "stench": { + "shortDesc": "This Pokemon's attacks without a chance to flinch have a 10% chance to flinch.", + "id": "stench", + "name": "Stench", + "rating": 0.5, + "num": 1 + }, + "stickyhold": { + "shortDesc": "This Pokemon cannot lose its held item due to another Pokemon's attack.", + "id": "stickyhold", + "name": "Sticky Hold", + "rating": 1.5, + "num": 60 + }, + "stormdrain": { + "desc": "This Pokemon is immune to Water-type moves and raises its Special Attack by 1 stage when hit by a Water-type move. If this Pokemon is not the target of a single-target Water-type move used by another Pokemon, this Pokemon redirects that move to itself if it is within the range of that move.", + "shortDesc": "This Pokemon draws Water moves to itself to raise Sp. Atk by 1; Water immunity.", + "id": "stormdrain", + "name": "Storm Drain", + "rating": 3.5, + "num": 114 + }, + "strongjaw": { + "desc": "This Pokemon's bite-based attacks have their power multiplied by 1.5.", + "shortDesc": "This Pokemon's bite-based attacks have 1.5x power. Bug Bite is not boosted.", + "onBasePowerPriority": 8, + "id": "strongjaw", + "name": "Strong Jaw", + "rating": 3, + "num": 173 + }, + "sturdy": { + "desc": "If this Pokemon is at full HP, it survives one hit with at least 1 HP. OHKO moves fail when used against this Pokemon.", + "shortDesc": "If this Pokemon is at full HP, it survives one hit with at least 1 HP. Immune to OHKO.", + "onDamagePriority": -100, + "id": "sturdy", + "name": "Sturdy", + "rating": 3, + "num": 5 + }, + "suctioncups": { + "shortDesc": "This Pokemon cannot be forced to switch out by another Pokemon's attack or item.", + "onDragOutPriority": 1, + "id": "suctioncups", + "name": "Suction Cups", + "rating": 2, + "num": 21 + }, + "superluck": { + "shortDesc": "This Pokemon's critical hit ratio is raised by 1 stage.", + "id": "superluck", + "name": "Super Luck", + "rating": 1.5, + "num": 105 + }, + "swarm": { + "desc": "When this Pokemon has 1/3 or less of its maximum HP, rounded down, its attacking stat is multiplied by 1.5 while using a Bug-type attack.", + "shortDesc": "When this Pokemon has 1/3 or less of its max HP, its Bug attacks do 1.5x damage.", + "onModifyAtkPriority": 5, + "onModifySpAPriority": 5, + "id": "swarm", + "name": "Swarm", + "rating": 2, + "num": 68 + }, + "sweetveil": { + "shortDesc": "This Pokemon and its allies cannot fall asleep.", + "id": "sweetveil", + "name": "Sweet Veil", + "rating": 2, + "num": 175 + }, + "swiftswim": { + "shortDesc": "If Rain Dance is active, this Pokemon's Speed is doubled.", + "id": "swiftswim", + "name": "Swift Swim", + "rating": 2.5, + "num": 33 + }, + "symbiosis": { + "desc": "If an ally uses its item, this Pokemon gives its item to that ally immediately. Does not activate if the ally's item was stolen or knocked off.", + "shortDesc": "If an ally uses its item, this Pokemon gives its item to that ally immediately.", + "id": "symbiosis", + "name": "Symbiosis", + "rating": 0, + "num": 180 + }, + "synchronize": { + "desc": "If another Pokemon burns, paralyzes, poisons, or badly poisons this Pokemon, that Pokemon receives the same major status condition.", + "shortDesc": "If another Pokemon burns/poisons/paralyzes this Pokemon, it also gets that status.", + "id": "synchronize", + "name": "Synchronize", + "rating": 2.5, + "num": 28 + }, + "tangledfeet": { + "shortDesc": "This Pokemon's evasiveness is doubled as long as it is confused.", + "id": "tangledfeet", + "name": "Tangled Feet", + "rating": 1, + "num": 77 + }, + "technician": { + "desc": "This Pokemon's moves of 60 power or less have their power multiplied by 1.5. Does affect Struggle.", + "shortDesc": "This Pokemon's moves of 60 power or less have 1.5x power. Includes Struggle.", + "onBasePowerPriority": 8, + "id": "technician", + "name": "Technician", + "rating": 4, + "num": 101 + }, + "telepathy": { + "shortDesc": "This Pokemon does not take damage from attacks made by its allies.", + "id": "telepathy", + "name": "Telepathy", + "rating": 0, + "num": 140 + }, + "teravolt": { + "shortDesc": "This Pokemon's moves and their effects ignore the Abilities of other Pokemon.", + "stopAttackEvents": true, + "id": "teravolt", + "name": "Teravolt", + "rating": 3.5, + "num": 164 + }, + "thickfat": { + "desc": "If a Pokemon uses a Fire- or Ice-type attack against this Pokemon, that Pokemon's attacking stat is halved when calculating the damage to this Pokemon.", + "shortDesc": "Fire/Ice-type moves against this Pokemon deal damage with a halved attacking stat.", + "onModifyAtkPriority": 6, + "onModifySpAPriority": 5, + "id": "thickfat", + "name": "Thick Fat", + "rating": 3.5, + "num": 47 + }, + "tintedlens": { + "shortDesc": "This Pokemon's attacks that are not very effective on a target deal double damage.", + "id": "tintedlens", + "name": "Tinted Lens", + "rating": 3.5, + "num": 110 + }, + "torrent": { + "desc": "When this Pokemon has 1/3 or less of its maximum HP, rounded down, its attacking stat is multiplied by 1.5 while using a Water-type attack.", + "shortDesc": "When this Pokemon has 1/3 or less of its max HP, its Water attacks do 1.5x damage.", + "onModifyAtkPriority": 5, + "onModifySpAPriority": 5, + "id": "torrent", + "name": "Torrent", + "rating": 2, + "num": 67 + }, + "toxicboost": { + "desc": "While this Pokemon is poisoned, the power of its physical attacks is multiplied by 1.5.", + "shortDesc": "While this Pokemon is poisoned, its physical attacks have 1.5x power.", + "onBasePowerPriority": 8, + "id": "toxicboost", + "name": "Toxic Boost", + "rating": 3, + "num": 137 + }, + "toughclaws": { + "shortDesc": "This Pokemon's contact moves have their power multiplied by 1.3.", + "onBasePowerPriority": 8, + "id": "toughclaws", + "name": "Tough Claws", + "rating": 3.5, + "num": 181 + }, + "trace": { + "desc": "On switch-in, this Pokemon copies a random adjacent opposing Pokemon's Ability. If there is no Ability that can be copied at that time, this Ability will activate as soon as an Ability can be copied. Abilities that cannot be copied are Flower Gift, Forecast, Illusion, Imposter, Multitype, Stance Change, Trace, and Zen Mode.", + "shortDesc": "On switch-in, or when it can, this Pokemon copies a random adjacent foe's Ability.", + "id": "trace", + "name": "Trace", + "rating": 3, + "num": 36 + }, + "truant": { + "shortDesc": "This Pokemon skips every other turn instead of using a move.", + "onBeforeMovePriority": 9, + "effect": { + "duration": 2 + }, + "id": "truant", + "name": "Truant", + "rating": -2, + "num": 54 + }, + "turboblaze": { + "shortDesc": "This Pokemon's moves and their effects ignore the Abilities of other Pokemon.", + "stopAttackEvents": true, + "id": "turboblaze", + "name": "Turboblaze", + "rating": 3.5, + "num": 163 + }, + "unaware": { + "desc": "This Pokemon ignores other Pokemon's Attack, Special Attack, and accuracy stat stages when taking damage, and ignores other Pokemon's Defense, Special Defense, and evasiveness stat stages when dealing damage.", + "shortDesc": "This Pokemon ignores other Pokemon's stat stages when taking or doing damage.", + "id": "unaware", + "name": "Unaware", + "rating": 3, + "num": 109 + }, + "unburden": { + "desc": "If this Pokemon loses its held item for any reason, its Speed is doubled. This boost is lost if it switches out or gains a new item or Ability.", + "shortDesc": "Speed is doubled on held item loss; boost is lost if it switches, gets new item/Ability.", + "effect": {}, + "id": "unburden", + "name": "Unburden", + "rating": 3.5, + "num": 84 + }, + "unnerve": { + "shortDesc": "While this Pokemon is active, it prevents opposing Pokemon from using their Berries.", + "onFoeTryEatItem": false, + "id": "unnerve", + "name": "Unnerve", + "rating": 1.5, + "num": 127 + }, + "victorystar": { + "shortDesc": "This Pokemon and its allies' moves have their accuracy multiplied by 1.1.", + "id": "victorystar", + "name": "Victory Star", + "rating": 2.5, + "num": 162 + }, + "vitalspirit": { + "shortDesc": "This Pokemon cannot fall asleep. Gaining this Ability while asleep cures it.", + "id": "vitalspirit", + "name": "Vital Spirit", + "rating": 2, + "num": 72 + }, + "voltabsorb": { + "desc": "This Pokemon is immune to Electric-type moves and restores 1/4 of its maximum HP, rounded down, when hit by an Electric-type move.", + "shortDesc": "This Pokemon heals 1/4 of its max HP when hit by Electric moves; Electric immunity.", + "id": "voltabsorb", + "name": "Volt Absorb", + "rating": 3.5, + "num": 10 + }, + "waterabsorb": { + "desc": "This Pokemon is immune to Water-type moves and restores 1/4 of its maximum HP, rounded down, when hit by a Water-type move.", + "shortDesc": "This Pokemon heals 1/4 of its max HP when hit by Water moves; Water immunity.", + "id": "waterabsorb", + "name": "Water Absorb", + "rating": 3.5, + "num": 11 + }, + "waterveil": { + "shortDesc": "This Pokemon cannot be burned. Gaining this Ability while burned cures it.", + "id": "waterveil", + "name": "Water Veil", + "rating": 2, + "num": 41 + }, + "weakarmor": { + "desc": "If a physical attack hits this Pokemon, its Defense is lowered by 1 stage and its Speed is raised by 1 stage.", + "shortDesc": "If a physical attack hits this Pokemon, Defense is lowered by 1, Speed is raised by 1.", + "id": "weakarmor", + "name": "Weak Armor", + "rating": 0.5, + "num": 133 + }, + "whitesmoke": { + "shortDesc": "Prevents other Pokemon from lowering this Pokemon's stat stages.", + "id": "whitesmoke", + "name": "White Smoke", + "rating": 2, + "num": 73 + }, + "wonderguard": { + "shortDesc": "This Pokemon can only be damaged by supereffective moves and indirect damage.", + "id": "wonderguard", + "name": "Wonder Guard", + "rating": 5, + "num": 25 + }, + "wonderskin": { + "desc": "All non-damaging moves that check accuracy have their accuracy changed to 50% when used on this Pokemon. This change is done before any other accuracy modifying effects.", + "shortDesc": "Status moves with accuracy checks are 50% accurate when used on this Pokemon.", + "onModifyAccuracyPriority": 10, + "id": "wonderskin", + "name": "Wonder Skin", + "rating": 2, + "num": 147 + }, + "zenmode": { + "desc": "If this Pokemon is a Darmanitan, it changes to Zen Mode if it has 1/2 or less of its maximum HP at the end of a turn. If Darmanitan's HP is above 1/2 of its maximum HP at the end of a turn, it changes back to Standard Mode. If Darmanitan loses this Ability while in Zen Mode it reverts to Standard Mode immediately.", + "shortDesc": "If Darmanitan, at end of turn changes Mode to Standard if > 1/2 max HP, else Zen.", + "onResidualOrder": 27, + "effect": {}, + "id": "zenmode", + "name": "Zen Mode", + "rating": -1, + "num": 161 + }, + "mountaineer": { + "shortDesc": "On switch-in, this Pokemon avoids all Rock-type attacks and Stealth Rock.", + "id": "mountaineer", + "isNonstandard": true, + "name": "Mountaineer", + "rating": 3.5, + "num": -2 + }, + "rebound": { + "desc": "On switch-in, this Pokemon blocks certain status moves and instead uses the move against the original user.", + "shortDesc": "On switch-in, blocks certain status moves and bounces them back to the user.", + "id": "rebound", + "isNonstandard": true, + "name": "Rebound", + "onTryHitPriority": 1, + "effect": { + "duration": 1 + }, + "rating": 3.5, + "num": -3 + }, + "persistent": { + "shortDesc": "The duration of certain field effects is increased by 2 turns if used by this Pokemon.", + "id": "persistent", + "isNonstandard": true, + "name": "Persistent", + "rating": 3.5, + "num": -4 + } +} \ No newline at end of file diff --git a/src/NadekoBot/data/pokemon/pokemon_list.json b/src/NadekoBot/data/pokemon/pokemon_list.json new file mode 100644 index 00000000..d93b3557 --- /dev/null +++ b/src/NadekoBot/data/pokemon/pokemon_list.json @@ -0,0 +1,25607 @@ +{ + "bulbasaur": { + "num": 1, + "species": "Bulbasaur", + "types": [ + "Grass", + "Poison" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 45, + "atk": 49, + "def": 49, + "spa": 65, + "spd": 65, + "spe": 45 + }, + "abilities": { + "0": "Overgrow", + "H": "Chlorophyll" + }, + "heightm": 0.7, + "weightkg": 6.9, + "color": "Green", + "evos": [ + "ivysaur" + ], + "eggGroups": [ + "Monster", + "Grass" + ] + }, + "ivysaur": { + "num": 2, + "species": "Ivysaur", + "types": [ + "Grass", + "Poison" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 60, + "atk": 62, + "def": 63, + "spa": 80, + "spd": 80, + "spe": 60 + }, + "abilities": { + "0": "Overgrow", + "H": "Chlorophyll" + }, + "heightm": 1, + "weightkg": 13, + "color": "Green", + "prevo": "bulbasaur", + "evos": [ + "venusaur" + ], + "evoLevel": 16, + "eggGroups": [ + "Monster", + "Grass" + ] + }, + "venusaur": { + "num": 3, + "species": "Venusaur", + "types": [ + "Grass", + "Poison" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 80, + "atk": 82, + "def": 83, + "spa": 100, + "spd": 100, + "spe": 80 + }, + "abilities": { + "0": "Overgrow", + "H": "Chlorophyll" + }, + "heightm": 2, + "weightkg": 100, + "color": "Green", + "prevo": "ivysaur", + "evoLevel": 32, + "eggGroups": [ + "Monster", + "Grass" + ], + "otherFormes": [ + "venusaurmega" + ] + }, + "venusaurmega": { + "num": 3, + "species": "Venusaur-Mega", + "baseSpecies": "Venusaur", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Grass", + "Poison" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 80, + "atk": 100, + "def": 123, + "spa": 122, + "spd": 120, + "spe": 80 + }, + "abilities": { + "0": "Thick Fat" + }, + "heightm": 2.4, + "weightkg": 155.5, + "color": "Green", + "eggGroups": [ + "Monster", + "Grass" + ] + }, + "charmander": { + "num": 4, + "species": "Charmander", + "types": [ + "Fire" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 39, + "atk": 52, + "def": 43, + "spa": 60, + "spd": 50, + "spe": 65 + }, + "abilities": { + "0": "Blaze", + "H": "Solar Power" + }, + "heightm": 0.6, + "weightkg": 8.5, + "color": "Red", + "evos": [ + "charmeleon" + ], + "eggGroups": [ + "Monster", + "Dragon" + ] + }, + "charmeleon": { + "num": 5, + "species": "Charmeleon", + "types": [ + "Fire" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 58, + "atk": 64, + "def": 58, + "spa": 80, + "spd": 65, + "spe": 80 + }, + "abilities": { + "0": "Blaze", + "H": "Solar Power" + }, + "heightm": 1.1, + "weightkg": 19, + "color": "Red", + "prevo": "charmander", + "evos": [ + "charizard" + ], + "evoLevel": 16, + "eggGroups": [ + "Monster", + "Dragon" + ] + }, + "charizard": { + "num": 6, + "species": "Charizard", + "types": [ + "Fire", + "Flying" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 78, + "atk": 84, + "def": 78, + "spa": 109, + "spd": 85, + "spe": 100 + }, + "abilities": { + "0": "Blaze", + "H": "Solar Power" + }, + "heightm": 1.7, + "weightkg": 90.5, + "color": "Red", + "prevo": "charmeleon", + "evoLevel": 36, + "eggGroups": [ + "Monster", + "Dragon" + ], + "otherFormes": [ + "charizardmegax", + "charizardmegay" + ] + }, + "charizardmegax": { + "num": 6, + "species": "Charizard-Mega-X", + "baseSpecies": "Charizard", + "forme": "Mega-X", + "formeLetter": "M", + "types": [ + "Fire", + "Dragon" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 78, + "atk": 130, + "def": 111, + "spa": 130, + "spd": 85, + "spe": 100 + }, + "abilities": { + "0": "Tough Claws" + }, + "heightm": 1.7, + "weightkg": 110.5, + "color": "Red", + "eggGroups": [ + "Monster", + "Dragon" + ] + }, + "charizardmegay": { + "num": 6, + "species": "Charizard-Mega-Y", + "baseSpecies": "Charizard", + "forme": "Mega-Y", + "formeLetter": "M", + "types": [ + "Fire", + "Flying" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 78, + "atk": 104, + "def": 78, + "spa": 159, + "spd": 115, + "spe": 100 + }, + "abilities": { + "0": "Drought" + }, + "heightm": 1.7, + "weightkg": 100.5, + "color": "Red", + "eggGroups": [ + "Monster", + "Dragon" + ] + }, + "squirtle": { + "num": 7, + "species": "Squirtle", + "types": [ + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 44, + "atk": 48, + "def": 65, + "spa": 50, + "spd": 64, + "spe": 43 + }, + "abilities": { + "0": "Torrent", + "H": "Rain Dish" + }, + "heightm": 0.5, + "weightkg": 9, + "color": "Blue", + "evos": [ + "wartortle" + ], + "eggGroups": [ + "Monster", + "Water 1" + ] + }, + "wartortle": { + "num": 8, + "species": "Wartortle", + "types": [ + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 59, + "atk": 63, + "def": 80, + "spa": 65, + "spd": 80, + "spe": 58 + }, + "abilities": { + "0": "Torrent", + "H": "Rain Dish" + }, + "heightm": 1, + "weightkg": 22.5, + "color": "Blue", + "prevo": "squirtle", + "evos": [ + "blastoise" + ], + "evoLevel": 16, + "eggGroups": [ + "Monster", + "Water 1" + ] + }, + "blastoise": { + "num": 9, + "species": "Blastoise", + "types": [ + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 79, + "atk": 83, + "def": 100, + "spa": 85, + "spd": 105, + "spe": 78 + }, + "abilities": { + "0": "Torrent", + "H": "Rain Dish" + }, + "heightm": 1.6, + "weightkg": 85.5, + "color": "Blue", + "prevo": "wartortle", + "evoLevel": 36, + "eggGroups": [ + "Monster", + "Water 1" + ], + "otherFormes": [ + "blastoisemega" + ] + }, + "blastoisemega": { + "num": 9, + "species": "Blastoise-Mega", + "baseSpecies": "Blastoise", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 79, + "atk": 103, + "def": 120, + "spa": 135, + "spd": 115, + "spe": 78 + }, + "abilities": { + "0": "Mega Launcher" + }, + "heightm": 1.6, + "weightkg": 101.1, + "color": "Blue", + "eggGroups": [ + "Monster", + "Water 1" + ] + }, + "caterpie": { + "num": 10, + "species": "Caterpie", + "types": [ + "Bug" + ], + "baseStats": { + "hp": 45, + "atk": 30, + "def": 35, + "spa": 20, + "spd": 20, + "spe": 45 + }, + "abilities": { + "0": "Shield Dust", + "H": "Run Away" + }, + "heightm": 0.3, + "weightkg": 2.9, + "color": "Green", + "evos": [ + "metapod" + ], + "eggGroups": [ + "Bug" + ] + }, + "metapod": { + "num": 11, + "species": "Metapod", + "types": [ + "Bug" + ], + "baseStats": { + "hp": 50, + "atk": 20, + "def": 55, + "spa": 25, + "spd": 25, + "spe": 30 + }, + "abilities": { + "0": "Shed Skin" + }, + "heightm": 0.7, + "weightkg": 9.9, + "color": "Green", + "prevo": "caterpie", + "evos": [ + "butterfree" + ], + "evoLevel": 7, + "eggGroups": [ + "Bug" + ] + }, + "butterfree": { + "num": 12, + "species": "Butterfree", + "types": [ + "Bug", + "Flying" + ], + "baseStats": { + "hp": 60, + "atk": 45, + "def": 50, + "spa": 90, + "spd": 80, + "spe": 70 + }, + "abilities": { + "0": "Compound Eyes", + "H": "Tinted Lens" + }, + "heightm": 1.1, + "weightkg": 32, + "color": "White", + "prevo": "metapod", + "evoLevel": 10, + "eggGroups": [ + "Bug" + ] + }, + "weedle": { + "num": 13, + "species": "Weedle", + "types": [ + "Bug", + "Poison" + ], + "baseStats": { + "hp": 40, + "atk": 35, + "def": 30, + "spa": 20, + "spd": 20, + "spe": 50 + }, + "abilities": { + "0": "Shield Dust", + "H": "Run Away" + }, + "heightm": 0.3, + "weightkg": 3.2, + "color": "Brown", + "evos": [ + "kakuna" + ], + "eggGroups": [ + "Bug" + ] + }, + "kakuna": { + "num": 14, + "species": "Kakuna", + "types": [ + "Bug", + "Poison" + ], + "baseStats": { + "hp": 45, + "atk": 25, + "def": 50, + "spa": 25, + "spd": 25, + "spe": 35 + }, + "abilities": { + "0": "Shed Skin" + }, + "heightm": 0.6, + "weightkg": 10, + "color": "Yellow", + "prevo": "weedle", + "evos": [ + "beedrill" + ], + "evoLevel": 7, + "eggGroups": [ + "Bug" + ] + }, + "beedrill": { + "num": 15, + "species": "Beedrill", + "types": [ + "Bug", + "Poison" + ], + "baseStats": { + "hp": 65, + "atk": 90, + "def": 40, + "spa": 45, + "spd": 80, + "spe": 75 + }, + "abilities": { + "0": "Swarm", + "H": "Sniper" + }, + "heightm": 1, + "weightkg": 29.5, + "color": "Yellow", + "prevo": "kakuna", + "evoLevel": 10, + "eggGroups": [ + "Bug" + ], + "otherFormes": [ + "beedrillmega" + ] + }, + "beedrillmega": { + "num": 15, + "species": "Beedrill-Mega", + "baseSpecies": "Beedrill", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Bug", + "Poison" + ], + "baseStats": { + "hp": 65, + "atk": 150, + "def": 40, + "spa": 15, + "spd": 80, + "spe": 145 + }, + "abilities": { + "0": "Adaptability" + }, + "heightm": 1.4, + "weightkg": 40.5, + "color": "Yellow", + "eggGroups": [ + "Bug" + ] + }, + "pidgey": { + "num": 16, + "species": "Pidgey", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 40, + "atk": 45, + "def": 40, + "spa": 35, + "spd": 35, + "spe": 56 + }, + "abilities": { + "0": "Keen Eye", + "1": "Tangled Feet", + "H": "Big Pecks" + }, + "heightm": 0.3, + "weightkg": 1.8, + "color": "Brown", + "evos": [ + "pidgeotto" + ], + "eggGroups": [ + "Flying" + ] + }, + "pidgeotto": { + "num": 17, + "species": "Pidgeotto", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 63, + "atk": 60, + "def": 55, + "spa": 50, + "spd": 50, + "spe": 71 + }, + "abilities": { + "0": "Keen Eye", + "1": "Tangled Feet", + "H": "Big Pecks" + }, + "heightm": 1.1, + "weightkg": 30, + "color": "Brown", + "prevo": "pidgey", + "evos": [ + "pidgeot" + ], + "evoLevel": 18, + "eggGroups": [ + "Flying" + ] + }, + "pidgeot": { + "num": 18, + "species": "Pidgeot", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 83, + "atk": 80, + "def": 75, + "spa": 70, + "spd": 70, + "spe": 101 + }, + "abilities": { + "0": "Keen Eye", + "1": "Tangled Feet", + "H": "Big Pecks" + }, + "heightm": 1.5, + "weightkg": 39.5, + "color": "Brown", + "prevo": "pidgeotto", + "evoLevel": 36, + "eggGroups": [ + "Flying" + ], + "otherFormes": [ + "pidgeotmega" + ] + }, + "pidgeotmega": { + "num": 18, + "species": "Pidgeot-Mega", + "baseSpecies": "Pidgeot", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 83, + "atk": 80, + "def": 80, + "spa": 135, + "spd": 80, + "spe": 121 + }, + "abilities": { + "0": "No Guard" + }, + "heightm": 2.2, + "weightkg": 50.5, + "color": "Brown", + "eggGroups": [ + "Flying" + ] + }, + "rattata": { + "num": 19, + "species": "Rattata", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 30, + "atk": 56, + "def": 35, + "spa": 25, + "spd": 35, + "spe": 72 + }, + "abilities": { + "0": "Run Away", + "1": "Guts", + "H": "Hustle" + }, + "heightm": 0.3, + "weightkg": 3.5, + "color": "Purple", + "evos": [ + "raticate" + ], + "eggGroups": [ + "Field" + ] + }, + "raticate": { + "num": 20, + "species": "Raticate", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 55, + "atk": 81, + "def": 60, + "spa": 50, + "spd": 70, + "spe": 97 + }, + "abilities": { + "0": "Run Away", + "1": "Guts", + "H": "Hustle" + }, + "heightm": 0.7, + "weightkg": 18.5, + "color": "Brown", + "prevo": "rattata", + "evoLevel": 20, + "eggGroups": [ + "Field" + ] + }, + "spearow": { + "num": 21, + "species": "Spearow", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 40, + "atk": 60, + "def": 30, + "spa": 31, + "spd": 31, + "spe": 70 + }, + "abilities": { + "0": "Keen Eye", + "H": "Sniper" + }, + "heightm": 0.3, + "weightkg": 2, + "color": "Brown", + "evos": [ + "fearow" + ], + "eggGroups": [ + "Flying" + ] + }, + "fearow": { + "num": 22, + "species": "Fearow", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 65, + "atk": 90, + "def": 65, + "spa": 61, + "spd": 61, + "spe": 100 + }, + "abilities": { + "0": "Keen Eye", + "H": "Sniper" + }, + "heightm": 1.2, + "weightkg": 38, + "color": "Brown", + "prevo": "spearow", + "evoLevel": 20, + "eggGroups": [ + "Flying" + ] + }, + "ekans": { + "num": 23, + "species": "Ekans", + "types": [ + "Poison" + ], + "baseStats": { + "hp": 35, + "atk": 60, + "def": 44, + "spa": 40, + "spd": 54, + "spe": 55 + }, + "abilities": { + "0": "Intimidate", + "1": "Shed Skin", + "H": "Unnerve" + }, + "heightm": 2, + "weightkg": 6.9, + "color": "Purple", + "evos": [ + "arbok" + ], + "eggGroups": [ + "Field", + "Dragon" + ] + }, + "arbok": { + "num": 24, + "species": "Arbok", + "types": [ + "Poison" + ], + "baseStats": { + "hp": 60, + "atk": 85, + "def": 69, + "spa": 65, + "spd": 79, + "spe": 80 + }, + "abilities": { + "0": "Intimidate", + "1": "Shed Skin", + "H": "Unnerve" + }, + "heightm": 3.5, + "weightkg": 65, + "color": "Purple", + "prevo": "ekans", + "evoLevel": 22, + "eggGroups": [ + "Field", + "Dragon" + ] + }, + "pikachu": { + "num": 25, + "species": "Pikachu", + "types": [ + "Electric" + ], + "baseStats": { + "hp": 35, + "atk": 55, + "def": 40, + "spa": 50, + "spd": 50, + "spe": 90 + }, + "abilities": { + "0": "Static", + "H": "Lightning Rod" + }, + "heightm": 0.4, + "weightkg": 6, + "color": "Yellow", + "prevo": "pichu", + "evos": [ + "raichu" + ], + "evoLevel": 1, + "eggGroups": [ + "Field", + "Fairy" + ], + "otherFormes": [ + "pikachucosplay", + "pikachurockstar", + "pikachubelle", + "pikachupopstar", + "pikachuphd", + "pikachulibre" + ] + }, + "pikachucosplay": { + "num": 25, + "species": "Pikachu-Cosplay", + "baseSpecies": "Pikachu", + "forme": "Cosplay", + "formeLetter": "C", + "types": [ + "Electric" + ], + "gender": "F", + "baseStats": { + "hp": 35, + "atk": 55, + "def": 40, + "spa": 50, + "spd": 50, + "spe": 90 + }, + "abilities": { + "0": "Lightning Rod" + }, + "heightm": 0.4, + "weightkg": 6, + "color": "Yellow", + "eggGroups": [ + "Undiscovered" + ] + }, + "pikachurockstar": { + "num": 25, + "species": "Pikachu-Rock-Star", + "baseSpecies": "Pikachu", + "forme": "Rock-Star", + "formeLetter": "R", + "types": [ + "Electric" + ], + "gender": "F", + "baseStats": { + "hp": 35, + "atk": 55, + "def": 40, + "spa": 50, + "spd": 50, + "spe": 90 + }, + "abilities": { + "0": "Lightning Rod" + }, + "heightm": 0.4, + "weightkg": 6, + "color": "Yellow", + "eggGroups": [ + "Undiscovered" + ] + }, + "pikachubelle": { + "num": 25, + "species": "Pikachu-Belle", + "baseSpecies": "Pikachu", + "forme": "Belle", + "formeLetter": "B", + "types": [ + "Electric" + ], + "gender": "F", + "baseStats": { + "hp": 35, + "atk": 55, + "def": 40, + "spa": 50, + "spd": 50, + "spe": 90 + }, + "abilities": { + "0": "Lightning Rod" + }, + "heightm": 0.4, + "weightkg": 6, + "color": "Yellow", + "eggGroups": [ + "Undiscovered" + ] + }, + "pikachupopstar": { + "num": 25, + "species": "Pikachu-Pop-Star", + "baseSpecies": "Pikachu", + "forme": "Pop-Star", + "formeLetter": "P", + "types": [ + "Electric" + ], + "gender": "F", + "baseStats": { + "hp": 35, + "atk": 55, + "def": 40, + "spa": 50, + "spd": 50, + "spe": 90 + }, + "abilities": { + "0": "Lightning Rod" + }, + "heightm": 0.4, + "weightkg": 6, + "color": "Yellow", + "eggGroups": [ + "Undiscovered" + ] + }, + "pikachuphd": { + "num": 25, + "species": "Pikachu-PhD", + "baseSpecies": "Pikachu", + "forme": "PhD", + "formeLetter": "D", + "types": [ + "Electric" + ], + "gender": "F", + "baseStats": { + "hp": 35, + "atk": 55, + "def": 40, + "spa": 50, + "spd": 50, + "spe": 90 + }, + "abilities": { + "0": "Lightning Rod" + }, + "heightm": 0.4, + "weightkg": 6, + "color": "Yellow", + "eggGroups": [ + "Undiscovered" + ] + }, + "pikachulibre": { + "num": 25, + "species": "Pikachu-Libre", + "baseSpecies": "Pikachu", + "forme": "Libre", + "formeLetter": "L", + "types": [ + "Electric" + ], + "gender": "F", + "baseStats": { + "hp": 35, + "atk": 55, + "def": 40, + "spa": 50, + "spd": 50, + "spe": 90 + }, + "abilities": { + "0": "Lightning Rod" + }, + "heightm": 0.4, + "weightkg": 6, + "color": "Yellow", + "eggGroups": [ + "Undiscovered" + ] + }, + "raichu": { + "num": 26, + "species": "Raichu", + "types": [ + "Electric" + ], + "baseStats": { + "hp": 60, + "atk": 90, + "def": 55, + "spa": 90, + "spd": 80, + "spe": 110 + }, + "abilities": { + "0": "Static", + "H": "Lightning Rod" + }, + "heightm": 0.8, + "weightkg": 30, + "color": "Yellow", + "prevo": "pikachu", + "evoLevel": 1, + "eggGroups": [ + "Field", + "Fairy" + ] + }, + "sandshrew": { + "num": 27, + "species": "Sandshrew", + "types": [ + "Ground" + ], + "baseStats": { + "hp": 50, + "atk": 75, + "def": 85, + "spa": 20, + "spd": 30, + "spe": 40 + }, + "abilities": { + "0": "Sand Veil", + "H": "Sand Rush" + }, + "heightm": 0.6, + "weightkg": 12, + "color": "Yellow", + "evos": [ + "sandslash" + ], + "eggGroups": [ + "Field" + ] + }, + "sandslash": { + "num": 28, + "species": "Sandslash", + "types": [ + "Ground" + ], + "baseStats": { + "hp": 75, + "atk": 100, + "def": 110, + "spa": 45, + "spd": 55, + "spe": 65 + }, + "abilities": { + "0": "Sand Veil", + "H": "Sand Rush" + }, + "heightm": 1, + "weightkg": 29.5, + "color": "Yellow", + "prevo": "sandshrew", + "evoLevel": 22, + "eggGroups": [ + "Field" + ] + }, + "nidoranf": { + "num": 29, + "species": "Nidoran-F", + "types": [ + "Poison" + ], + "gender": "F", + "baseStats": { + "hp": 55, + "atk": 47, + "def": 52, + "spa": 40, + "spd": 40, + "spe": 41 + }, + "abilities": { + "0": "Poison Point", + "1": "Rivalry", + "H": "Hustle" + }, + "heightm": 0.4, + "weightkg": 7, + "color": "Blue", + "evos": [ + "nidorina" + ], + "eggGroups": [ + "Monster", + "Field" + ] + }, + "nidorina": { + "num": 30, + "species": "Nidorina", + "types": [ + "Poison" + ], + "gender": "F", + "baseStats": { + "hp": 70, + "atk": 62, + "def": 67, + "spa": 55, + "spd": 55, + "spe": 56 + }, + "abilities": { + "0": "Poison Point", + "1": "Rivalry", + "H": "Hustle" + }, + "heightm": 0.8, + "weightkg": 20, + "color": "Blue", + "prevo": "nidoranf", + "evos": [ + "nidoqueen" + ], + "evoLevel": 16, + "eggGroups": [ + "Undiscovered" + ] + }, + "nidoqueen": { + "num": 31, + "species": "Nidoqueen", + "types": [ + "Poison", + "Ground" + ], + "gender": "F", + "baseStats": { + "hp": 90, + "atk": 92, + "def": 87, + "spa": 75, + "spd": 85, + "spe": 76 + }, + "abilities": { + "0": "Poison Point", + "1": "Rivalry", + "H": "Sheer Force" + }, + "heightm": 1.3, + "weightkg": 60, + "color": "Blue", + "prevo": "nidorina", + "evoLevel": 16, + "eggGroups": [ + "Undiscovered" + ] + }, + "nidoranm": { + "num": 32, + "species": "Nidoran-M", + "types": [ + "Poison" + ], + "gender": "M", + "baseStats": { + "hp": 46, + "atk": 57, + "def": 40, + "spa": 40, + "spd": 40, + "spe": 50 + }, + "abilities": { + "0": "Poison Point", + "1": "Rivalry", + "H": "Hustle" + }, + "heightm": 0.5, + "weightkg": 9, + "color": "Purple", + "evos": [ + "nidorino" + ], + "eggGroups": [ + "Monster", + "Field" + ] + }, + "nidorino": { + "num": 33, + "species": "Nidorino", + "types": [ + "Poison" + ], + "gender": "M", + "baseStats": { + "hp": 61, + "atk": 72, + "def": 57, + "spa": 55, + "spd": 55, + "spe": 65 + }, + "abilities": { + "0": "Poison Point", + "1": "Rivalry", + "H": "Hustle" + }, + "heightm": 0.9, + "weightkg": 19.5, + "color": "Purple", + "prevo": "nidoranm", + "evos": [ + "nidoking" + ], + "evoLevel": 16, + "eggGroups": [ + "Monster", + "Field" + ] + }, + "nidoking": { + "num": 34, + "species": "Nidoking", + "types": [ + "Poison", + "Ground" + ], + "gender": "M", + "baseStats": { + "hp": 81, + "atk": 102, + "def": 77, + "spa": 85, + "spd": 75, + "spe": 85 + }, + "abilities": { + "0": "Poison Point", + "1": "Rivalry", + "H": "Sheer Force" + }, + "heightm": 1.4, + "weightkg": 62, + "color": "Purple", + "prevo": "nidorino", + "evoLevel": 16, + "eggGroups": [ + "Monster", + "Field" + ] + }, + "clefairy": { + "num": 35, + "species": "Clefairy", + "types": [ + "Fairy" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 70, + "atk": 45, + "def": 48, + "spa": 60, + "spd": 65, + "spe": 35 + }, + "abilities": { + "0": "Cute Charm", + "1": "Magic Guard", + "H": "Friend Guard" + }, + "heightm": 0.6, + "weightkg": 7.5, + "color": "Pink", + "prevo": "cleffa", + "evos": [ + "clefable" + ], + "evoLevel": 1, + "eggGroups": [ + "Fairy" + ] + }, + "clefable": { + "num": 36, + "species": "Clefable", + "types": [ + "Fairy" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 95, + "atk": 70, + "def": 73, + "spa": 95, + "spd": 90, + "spe": 60 + }, + "abilities": { + "0": "Cute Charm", + "1": "Magic Guard", + "H": "Unaware" + }, + "heightm": 1.3, + "weightkg": 40, + "color": "Pink", + "prevo": "clefairy", + "evoLevel": 1, + "eggGroups": [ + "Fairy" + ] + }, + "vulpix": { + "num": 37, + "species": "Vulpix", + "types": [ + "Fire" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 38, + "atk": 41, + "def": 40, + "spa": 50, + "spd": 65, + "spe": 65 + }, + "abilities": { + "0": "Flash Fire", + "H": "Drought" + }, + "heightm": 0.6, + "weightkg": 9.9, + "color": "Brown", + "evos": [ + "ninetales" + ], + "eggGroups": [ + "Field" + ] + }, + "ninetales": { + "num": 38, + "species": "Ninetales", + "types": [ + "Fire" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 73, + "atk": 76, + "def": 75, + "spa": 81, + "spd": 100, + "spe": 100 + }, + "abilities": { + "0": "Flash Fire", + "H": "Drought" + }, + "heightm": 1.1, + "weightkg": 19.9, + "color": "Yellow", + "prevo": "vulpix", + "evoLevel": 1, + "eggGroups": [ + "Field" + ] + }, + "jigglypuff": { + "num": 39, + "species": "Jigglypuff", + "types": [ + "Normal", + "Fairy" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 115, + "atk": 45, + "def": 20, + "spa": 45, + "spd": 25, + "spe": 20 + }, + "abilities": { + "0": "Cute Charm", + "1": "Competitive", + "H": "Friend Guard" + }, + "heightm": 0.5, + "weightkg": 5.5, + "color": "Pink", + "prevo": "igglybuff", + "evos": [ + "wigglytuff" + ], + "evoLevel": 1, + "eggGroups": [ + "Fairy" + ] + }, + "wigglytuff": { + "num": 40, + "species": "Wigglytuff", + "types": [ + "Normal", + "Fairy" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 140, + "atk": 70, + "def": 45, + "spa": 85, + "spd": 50, + "spe": 45 + }, + "abilities": { + "0": "Cute Charm", + "1": "Competitive", + "H": "Frisk" + }, + "heightm": 1, + "weightkg": 12, + "color": "Pink", + "prevo": "jigglypuff", + "evoLevel": 1, + "eggGroups": [ + "Fairy" + ] + }, + "zubat": { + "num": 41, + "species": "Zubat", + "types": [ + "Poison", + "Flying" + ], + "baseStats": { + "hp": 40, + "atk": 45, + "def": 35, + "spa": 30, + "spd": 40, + "spe": 55 + }, + "abilities": { + "0": "Inner Focus", + "H": "Infiltrator" + }, + "heightm": 0.8, + "weightkg": 7.5, + "color": "Purple", + "evos": [ + "golbat" + ], + "eggGroups": [ + "Flying" + ] + }, + "golbat": { + "num": 42, + "species": "Golbat", + "types": [ + "Poison", + "Flying" + ], + "baseStats": { + "hp": 75, + "atk": 80, + "def": 70, + "spa": 65, + "spd": 75, + "spe": 90 + }, + "abilities": { + "0": "Inner Focus", + "H": "Infiltrator" + }, + "heightm": 1.6, + "weightkg": 55, + "color": "Purple", + "prevo": "zubat", + "evos": [ + "crobat" + ], + "evoLevel": 22, + "eggGroups": [ + "Flying" + ] + }, + "oddish": { + "num": 43, + "species": "Oddish", + "types": [ + "Grass", + "Poison" + ], + "baseStats": { + "hp": 45, + "atk": 50, + "def": 55, + "spa": 75, + "spd": 65, + "spe": 30 + }, + "abilities": { + "0": "Chlorophyll", + "H": "Run Away" + }, + "heightm": 0.5, + "weightkg": 5.4, + "color": "Blue", + "evos": [ + "gloom" + ], + "eggGroups": [ + "Grass" + ] + }, + "gloom": { + "num": 44, + "species": "Gloom", + "types": [ + "Grass", + "Poison" + ], + "baseStats": { + "hp": 60, + "atk": 65, + "def": 70, + "spa": 85, + "spd": 75, + "spe": 40 + }, + "abilities": { + "0": "Chlorophyll", + "H": "Stench" + }, + "heightm": 0.8, + "weightkg": 8.6, + "color": "Blue", + "prevo": "oddish", + "evos": [ + "vileplume", + "bellossom" + ], + "evoLevel": 21, + "eggGroups": [ + "Grass" + ] + }, + "vileplume": { + "num": 45, + "species": "Vileplume", + "types": [ + "Grass", + "Poison" + ], + "baseStats": { + "hp": 75, + "atk": 80, + "def": 85, + "spa": 110, + "spd": 90, + "spe": 50 + }, + "abilities": { + "0": "Chlorophyll", + "H": "Effect Spore" + }, + "heightm": 1.2, + "weightkg": 18.6, + "color": "Red", + "prevo": "gloom", + "evoLevel": 21, + "eggGroups": [ + "Grass" + ] + }, + "paras": { + "num": 46, + "species": "Paras", + "types": [ + "Bug", + "Grass" + ], + "baseStats": { + "hp": 35, + "atk": 70, + "def": 55, + "spa": 45, + "spd": 55, + "spe": 25 + }, + "abilities": { + "0": "Effect Spore", + "1": "Dry Skin", + "H": "Damp" + }, + "heightm": 0.3, + "weightkg": 5.4, + "color": "Red", + "evos": [ + "parasect" + ], + "eggGroups": [ + "Bug", + "Grass" + ] + }, + "parasect": { + "num": 47, + "species": "Parasect", + "types": [ + "Bug", + "Grass" + ], + "baseStats": { + "hp": 60, + "atk": 95, + "def": 80, + "spa": 60, + "spd": 80, + "spe": 30 + }, + "abilities": { + "0": "Effect Spore", + "1": "Dry Skin", + "H": "Damp" + }, + "heightm": 1, + "weightkg": 29.5, + "color": "Red", + "prevo": "paras", + "evoLevel": 24, + "eggGroups": [ + "Bug", + "Grass" + ] + }, + "venonat": { + "num": 48, + "species": "Venonat", + "types": [ + "Bug", + "Poison" + ], + "baseStats": { + "hp": 60, + "atk": 55, + "def": 50, + "spa": 40, + "spd": 55, + "spe": 45 + }, + "abilities": { + "0": "Compound Eyes", + "1": "Tinted Lens", + "H": "Run Away" + }, + "heightm": 1, + "weightkg": 30, + "color": "Purple", + "evos": [ + "venomoth" + ], + "eggGroups": [ + "Bug" + ] + }, + "venomoth": { + "num": 49, + "species": "Venomoth", + "types": [ + "Bug", + "Poison" + ], + "baseStats": { + "hp": 70, + "atk": 65, + "def": 60, + "spa": 90, + "spd": 75, + "spe": 90 + }, + "abilities": { + "0": "Shield Dust", + "1": "Tinted Lens", + "H": "Wonder Skin" + }, + "heightm": 1.5, + "weightkg": 12.5, + "color": "Purple", + "prevo": "venonat", + "evoLevel": 31, + "eggGroups": [ + "Bug" + ] + }, + "diglett": { + "num": 50, + "species": "Diglett", + "types": [ + "Ground" + ], + "baseStats": { + "hp": 10, + "atk": 55, + "def": 25, + "spa": 35, + "spd": 45, + "spe": 95 + }, + "abilities": { + "0": "Sand Veil", + "1": "Arena Trap", + "H": "Sand Force" + }, + "heightm": 0.2, + "weightkg": 0.8, + "color": "Brown", + "evos": [ + "dugtrio" + ], + "eggGroups": [ + "Field" + ] + }, + "dugtrio": { + "num": 51, + "species": "Dugtrio", + "types": [ + "Ground" + ], + "baseStats": { + "hp": 35, + "atk": 80, + "def": 50, + "spa": 50, + "spd": 70, + "spe": 120 + }, + "abilities": { + "0": "Sand Veil", + "1": "Arena Trap", + "H": "Sand Force" + }, + "heightm": 0.7, + "weightkg": 33.3, + "color": "Brown", + "prevo": "diglett", + "evoLevel": 26, + "eggGroups": [ + "Field" + ] + }, + "meowth": { + "num": 52, + "species": "Meowth", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 40, + "atk": 45, + "def": 35, + "spa": 40, + "spd": 40, + "spe": 90 + }, + "abilities": { + "0": "Pickup", + "1": "Technician", + "H": "Unnerve" + }, + "heightm": 0.4, + "weightkg": 4.2, + "color": "Yellow", + "evos": [ + "persian" + ], + "eggGroups": [ + "Field" + ] + }, + "persian": { + "num": 53, + "species": "Persian", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 65, + "atk": 70, + "def": 60, + "spa": 65, + "spd": 65, + "spe": 115 + }, + "abilities": { + "0": "Limber", + "1": "Technician", + "H": "Unnerve" + }, + "heightm": 1, + "weightkg": 32, + "color": "Yellow", + "prevo": "meowth", + "evoLevel": 28, + "eggGroups": [ + "Field" + ] + }, + "psyduck": { + "num": 54, + "species": "Psyduck", + "types": [ + "Water" + ], + "baseStats": { + "hp": 50, + "atk": 52, + "def": 48, + "spa": 65, + "spd": 50, + "spe": 55 + }, + "abilities": { + "0": "Damp", + "1": "Cloud Nine", + "H": "Swift Swim" + }, + "heightm": 0.8, + "weightkg": 19.6, + "color": "Yellow", + "evos": [ + "golduck" + ], + "eggGroups": [ + "Water 1", + "Field" + ] + }, + "golduck": { + "num": 55, + "species": "Golduck", + "types": [ + "Water" + ], + "baseStats": { + "hp": 80, + "atk": 82, + "def": 78, + "spa": 95, + "spd": 80, + "spe": 85 + }, + "abilities": { + "0": "Damp", + "1": "Cloud Nine", + "H": "Swift Swim" + }, + "heightm": 1.7, + "weightkg": 76.6, + "color": "Blue", + "prevo": "psyduck", + "evoLevel": 33, + "eggGroups": [ + "Water 1", + "Field" + ] + }, + "mankey": { + "num": 56, + "species": "Mankey", + "types": [ + "Fighting" + ], + "baseStats": { + "hp": 40, + "atk": 80, + "def": 35, + "spa": 35, + "spd": 45, + "spe": 70 + }, + "abilities": { + "0": "Vital Spirit", + "1": "Anger Point", + "H": "Defiant" + }, + "heightm": 0.5, + "weightkg": 28, + "color": "Brown", + "evos": [ + "primeape" + ], + "eggGroups": [ + "Field" + ] + }, + "primeape": { + "num": 57, + "species": "Primeape", + "types": [ + "Fighting" + ], + "baseStats": { + "hp": 65, + "atk": 105, + "def": 60, + "spa": 60, + "spd": 70, + "spe": 95 + }, + "abilities": { + "0": "Vital Spirit", + "1": "Anger Point", + "H": "Defiant" + }, + "heightm": 1, + "weightkg": 32, + "color": "Brown", + "prevo": "mankey", + "evoLevel": 28, + "eggGroups": [ + "Field" + ] + }, + "growlithe": { + "num": 58, + "species": "Growlithe", + "types": [ + "Fire" + ], + "genderRatio": { + "M": 0.75, + "F": 0.25 + }, + "baseStats": { + "hp": 55, + "atk": 70, + "def": 45, + "spa": 70, + "spd": 50, + "spe": 60 + }, + "abilities": { + "0": "Intimidate", + "1": "Flash Fire", + "H": "Justified" + }, + "heightm": 0.7, + "weightkg": 19, + "color": "Brown", + "evos": [ + "arcanine" + ], + "eggGroups": [ + "Field" + ] + }, + "arcanine": { + "num": 59, + "species": "Arcanine", + "types": [ + "Fire" + ], + "genderRatio": { + "M": 0.75, + "F": 0.25 + }, + "baseStats": { + "hp": 90, + "atk": 110, + "def": 80, + "spa": 100, + "spd": 80, + "spe": 95 + }, + "abilities": { + "0": "Intimidate", + "1": "Flash Fire", + "H": "Justified" + }, + "heightm": 1.9, + "weightkg": 155, + "color": "Brown", + "prevo": "growlithe", + "evoLevel": 1, + "eggGroups": [ + "Field" + ] + }, + "poliwag": { + "num": 60, + "species": "Poliwag", + "types": [ + "Water" + ], + "baseStats": { + "hp": 40, + "atk": 50, + "def": 40, + "spa": 40, + "spd": 40, + "spe": 90 + }, + "abilities": { + "0": "Water Absorb", + "1": "Damp", + "H": "Swift Swim" + }, + "heightm": 0.6, + "weightkg": 12.4, + "color": "Blue", + "evos": [ + "poliwhirl" + ], + "eggGroups": [ + "Water 1" + ] + }, + "poliwhirl": { + "num": 61, + "species": "Poliwhirl", + "types": [ + "Water" + ], + "baseStats": { + "hp": 65, + "atk": 65, + "def": 65, + "spa": 50, + "spd": 50, + "spe": 90 + }, + "abilities": { + "0": "Water Absorb", + "1": "Damp", + "H": "Swift Swim" + }, + "heightm": 1, + "weightkg": 20, + "color": "Blue", + "prevo": "poliwag", + "evos": [ + "poliwrath", + "politoed" + ], + "evoLevel": 25, + "eggGroups": [ + "Water 1" + ] + }, + "poliwrath": { + "num": 62, + "species": "Poliwrath", + "types": [ + "Water", + "Fighting" + ], + "baseStats": { + "hp": 90, + "atk": 95, + "def": 95, + "spa": 70, + "spd": 90, + "spe": 70 + }, + "abilities": { + "0": "Water Absorb", + "1": "Damp", + "H": "Swift Swim" + }, + "heightm": 1.3, + "weightkg": 54, + "color": "Blue", + "prevo": "poliwhirl", + "evoLevel": 25, + "eggGroups": [ + "Water 1" + ] + }, + "abra": { + "num": 63, + "species": "Abra", + "types": [ + "Psychic" + ], + "genderRatio": { + "M": 0.75, + "F": 0.25 + }, + "baseStats": { + "hp": 25, + "atk": 20, + "def": 15, + "spa": 105, + "spd": 55, + "spe": 90 + }, + "abilities": { + "0": "Synchronize", + "1": "Inner Focus", + "H": "Magic Guard" + }, + "heightm": 0.9, + "weightkg": 19.5, + "color": "Brown", + "evos": [ + "kadabra" + ], + "eggGroups": [ + "Human-Like" + ] + }, + "kadabra": { + "num": 64, + "species": "Kadabra", + "types": [ + "Psychic" + ], + "genderRatio": { + "M": 0.75, + "F": 0.25 + }, + "baseStats": { + "hp": 40, + "atk": 35, + "def": 30, + "spa": 120, + "spd": 70, + "spe": 105 + }, + "abilities": { + "0": "Synchronize", + "1": "Inner Focus", + "H": "Magic Guard" + }, + "heightm": 1.3, + "weightkg": 56.5, + "color": "Brown", + "prevo": "abra", + "evos": [ + "alakazam" + ], + "evoLevel": 16, + "eggGroups": [ + "Human-Like" + ] + }, + "alakazam": { + "num": 65, + "species": "Alakazam", + "types": [ + "Psychic" + ], + "genderRatio": { + "M": 0.75, + "F": 0.25 + }, + "baseStats": { + "hp": 55, + "atk": 50, + "def": 45, + "spa": 135, + "spd": 95, + "spe": 120 + }, + "abilities": { + "0": "Synchronize", + "1": "Inner Focus", + "H": "Magic Guard" + }, + "heightm": 1.5, + "weightkg": 48, + "color": "Brown", + "prevo": "kadabra", + "evoLevel": 16, + "eggGroups": [ + "Human-Like" + ], + "otherFormes": [ + "alakazammega" + ] + }, + "alakazammega": { + "num": 65, + "species": "Alakazam-Mega", + "baseSpecies": "Alakazam", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Psychic" + ], + "genderRatio": { + "M": 0.75, + "F": 0.25 + }, + "baseStats": { + "hp": 55, + "atk": 50, + "def": 65, + "spa": 175, + "spd": 95, + "spe": 150 + }, + "abilities": { + "0": "Trace" + }, + "heightm": 1.2, + "weightkg": 48, + "color": "Brown", + "eggGroups": [ + "Human-Like" + ] + }, + "machop": { + "num": 66, + "species": "Machop", + "types": [ + "Fighting" + ], + "genderRatio": { + "M": 0.75, + "F": 0.25 + }, + "baseStats": { + "hp": 70, + "atk": 80, + "def": 50, + "spa": 35, + "spd": 35, + "spe": 35 + }, + "abilities": { + "0": "Guts", + "1": "No Guard", + "H": "Steadfast" + }, + "heightm": 0.8, + "weightkg": 19.5, + "color": "Gray", + "evos": [ + "machoke" + ], + "eggGroups": [ + "Human-Like" + ] + }, + "machoke": { + "num": 67, + "species": "Machoke", + "types": [ + "Fighting" + ], + "genderRatio": { + "M": 0.75, + "F": 0.25 + }, + "baseStats": { + "hp": 80, + "atk": 100, + "def": 70, + "spa": 50, + "spd": 60, + "spe": 45 + }, + "abilities": { + "0": "Guts", + "1": "No Guard", + "H": "Steadfast" + }, + "heightm": 1.5, + "weightkg": 70.5, + "color": "Gray", + "prevo": "machop", + "evos": [ + "machamp" + ], + "evoLevel": 28, + "eggGroups": [ + "Human-Like" + ] + }, + "machamp": { + "num": 68, + "species": "Machamp", + "types": [ + "Fighting" + ], + "genderRatio": { + "M": 0.75, + "F": 0.25 + }, + "baseStats": { + "hp": 90, + "atk": 130, + "def": 80, + "spa": 65, + "spd": 85, + "spe": 55 + }, + "abilities": { + "0": "Guts", + "1": "No Guard", + "H": "Steadfast" + }, + "heightm": 1.6, + "weightkg": 130, + "color": "Gray", + "prevo": "machoke", + "evoLevel": 28, + "eggGroups": [ + "Human-Like" + ] + }, + "bellsprout": { + "num": 69, + "species": "Bellsprout", + "types": [ + "Grass", + "Poison" + ], + "baseStats": { + "hp": 50, + "atk": 75, + "def": 35, + "spa": 70, + "spd": 30, + "spe": 40 + }, + "abilities": { + "0": "Chlorophyll", + "H": "Gluttony" + }, + "heightm": 0.7, + "weightkg": 4, + "color": "Green", + "evos": [ + "weepinbell" + ], + "eggGroups": [ + "Grass" + ] + }, + "weepinbell": { + "num": 70, + "species": "Weepinbell", + "types": [ + "Grass", + "Poison" + ], + "baseStats": { + "hp": 65, + "atk": 90, + "def": 50, + "spa": 85, + "spd": 45, + "spe": 55 + }, + "abilities": { + "0": "Chlorophyll", + "H": "Gluttony" + }, + "heightm": 1, + "weightkg": 6.4, + "color": "Green", + "prevo": "bellsprout", + "evos": [ + "victreebel" + ], + "evoLevel": 21, + "eggGroups": [ + "Grass" + ] + }, + "victreebel": { + "num": 71, + "species": "Victreebel", + "types": [ + "Grass", + "Poison" + ], + "baseStats": { + "hp": 80, + "atk": 105, + "def": 65, + "spa": 100, + "spd": 70, + "spe": 70 + }, + "abilities": { + "0": "Chlorophyll", + "H": "Gluttony" + }, + "heightm": 1.7, + "weightkg": 15.5, + "color": "Green", + "prevo": "weepinbell", + "evoLevel": 21, + "eggGroups": [ + "Grass" + ] + }, + "tentacool": { + "num": 72, + "species": "Tentacool", + "types": [ + "Water", + "Poison" + ], + "baseStats": { + "hp": 40, + "atk": 40, + "def": 35, + "spa": 50, + "spd": 100, + "spe": 70 + }, + "abilities": { + "0": "Clear Body", + "1": "Liquid Ooze", + "H": "Rain Dish" + }, + "heightm": 0.9, + "weightkg": 45.5, + "color": "Blue", + "evos": [ + "tentacruel" + ], + "eggGroups": [ + "Water 3" + ] + }, + "tentacruel": { + "num": 73, + "species": "Tentacruel", + "types": [ + "Water", + "Poison" + ], + "baseStats": { + "hp": 80, + "atk": 70, + "def": 65, + "spa": 80, + "spd": 120, + "spe": 100 + }, + "abilities": { + "0": "Clear Body", + "1": "Liquid Ooze", + "H": "Rain Dish" + }, + "heightm": 1.6, + "weightkg": 55, + "color": "Blue", + "prevo": "tentacool", + "evoLevel": 30, + "eggGroups": [ + "Water 3" + ] + }, + "geodude": { + "num": 74, + "species": "Geodude", + "types": [ + "Rock", + "Ground" + ], + "baseStats": { + "hp": 40, + "atk": 80, + "def": 100, + "spa": 30, + "spd": 30, + "spe": 20 + }, + "abilities": { + "0": "Rock Head", + "1": "Sturdy", + "H": "Sand Veil" + }, + "heightm": 0.4, + "weightkg": 20, + "color": "Brown", + "evos": [ + "graveler" + ], + "eggGroups": [ + "Mineral" + ] + }, + "graveler": { + "num": 75, + "species": "Graveler", + "types": [ + "Rock", + "Ground" + ], + "baseStats": { + "hp": 55, + "atk": 95, + "def": 115, + "spa": 45, + "spd": 45, + "spe": 35 + }, + "abilities": { + "0": "Rock Head", + "1": "Sturdy", + "H": "Sand Veil" + }, + "heightm": 1, + "weightkg": 105, + "color": "Brown", + "prevo": "geodude", + "evos": [ + "golem" + ], + "evoLevel": 25, + "eggGroups": [ + "Mineral" + ] + }, + "golem": { + "num": 76, + "species": "Golem", + "types": [ + "Rock", + "Ground" + ], + "baseStats": { + "hp": 80, + "atk": 120, + "def": 130, + "spa": 55, + "spd": 65, + "spe": 45 + }, + "abilities": { + "0": "Rock Head", + "1": "Sturdy", + "H": "Sand Veil" + }, + "heightm": 1.4, + "weightkg": 300, + "color": "Brown", + "prevo": "graveler", + "evoLevel": 25, + "eggGroups": [ + "Mineral" + ] + }, + "ponyta": { + "num": 77, + "species": "Ponyta", + "types": [ + "Fire" + ], + "baseStats": { + "hp": 50, + "atk": 85, + "def": 55, + "spa": 65, + "spd": 65, + "spe": 90 + }, + "abilities": { + "0": "Run Away", + "1": "Flash Fire", + "H": "Flame Body" + }, + "heightm": 1, + "weightkg": 30, + "color": "Yellow", + "evos": [ + "rapidash" + ], + "eggGroups": [ + "Field" + ] + }, + "rapidash": { + "num": 78, + "species": "Rapidash", + "types": [ + "Fire" + ], + "baseStats": { + "hp": 65, + "atk": 100, + "def": 70, + "spa": 80, + "spd": 80, + "spe": 105 + }, + "abilities": { + "0": "Run Away", + "1": "Flash Fire", + "H": "Flame Body" + }, + "heightm": 1.7, + "weightkg": 95, + "color": "Yellow", + "prevo": "ponyta", + "evoLevel": 40, + "eggGroups": [ + "Field" + ] + }, + "slowpoke": { + "num": 79, + "species": "Slowpoke", + "types": [ + "Water", + "Psychic" + ], + "baseStats": { + "hp": 90, + "atk": 65, + "def": 65, + "spa": 40, + "spd": 40, + "spe": 15 + }, + "abilities": { + "0": "Oblivious", + "1": "Own Tempo", + "H": "Regenerator" + }, + "heightm": 1.2, + "weightkg": 36, + "color": "Pink", + "evos": [ + "slowbro", + "slowking" + ], + "eggGroups": [ + "Monster", + "Water 1" + ] + }, + "slowbro": { + "num": 80, + "species": "Slowbro", + "types": [ + "Water", + "Psychic" + ], + "baseStats": { + "hp": 95, + "atk": 75, + "def": 110, + "spa": 100, + "spd": 80, + "spe": 30 + }, + "abilities": { + "0": "Oblivious", + "1": "Own Tempo", + "H": "Regenerator" + }, + "heightm": 1.6, + "weightkg": 78.5, + "color": "Pink", + "prevo": "slowpoke", + "evoLevel": 37, + "eggGroups": [ + "Monster", + "Water 1" + ], + "otherFormes": [ + "slowbromega" + ] + }, + "slowbromega": { + "num": 80, + "species": "Slowbro-Mega", + "baseSpecies": "Slowbro", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Water", + "Psychic" + ], + "baseStats": { + "hp": 95, + "atk": 75, + "def": 180, + "spa": 130, + "spd": 80, + "spe": 30 + }, + "abilities": { + "0": "Shell Armor" + }, + "heightm": 2, + "weightkg": 120, + "color": "Pink", + "eggGroups": [ + "Monster", + "Water 1" + ] + }, + "magnemite": { + "num": 81, + "species": "Magnemite", + "types": [ + "Electric", + "Steel" + ], + "gender": "N", + "baseStats": { + "hp": 25, + "atk": 35, + "def": 70, + "spa": 95, + "spd": 55, + "spe": 45 + }, + "abilities": { + "0": "Magnet Pull", + "1": "Sturdy", + "H": "Analytic" + }, + "heightm": 0.3, + "weightkg": 6, + "color": "Gray", + "evos": [ + "magneton" + ], + "eggGroups": [ + "Mineral" + ] + }, + "magneton": { + "num": 82, + "species": "Magneton", + "types": [ + "Electric", + "Steel" + ], + "gender": "N", + "baseStats": { + "hp": 50, + "atk": 60, + "def": 95, + "spa": 120, + "spd": 70, + "spe": 70 + }, + "abilities": { + "0": "Magnet Pull", + "1": "Sturdy", + "H": "Analytic" + }, + "heightm": 1, + "weightkg": 60, + "color": "Gray", + "prevo": "magnemite", + "evos": [ + "magnezone" + ], + "evoLevel": 30, + "eggGroups": [ + "Mineral" + ] + }, + "farfetchd": { + "num": 83, + "species": "Farfetch'd", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 52, + "atk": 65, + "def": 55, + "spa": 58, + "spd": 62, + "spe": 60 + }, + "abilities": { + "0": "Keen Eye", + "1": "Inner Focus", + "H": "Defiant" + }, + "heightm": 0.8, + "weightkg": 15, + "color": "Brown", + "eggGroups": [ + "Flying", + "Field" + ] + }, + "doduo": { + "num": 84, + "species": "Doduo", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 35, + "atk": 85, + "def": 45, + "spa": 35, + "spd": 35, + "spe": 75 + }, + "abilities": { + "0": "Run Away", + "1": "Early Bird", + "H": "Tangled Feet" + }, + "heightm": 1.4, + "weightkg": 39.2, + "color": "Brown", + "evos": [ + "dodrio" + ], + "eggGroups": [ + "Flying" + ] + }, + "dodrio": { + "num": 85, + "species": "Dodrio", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 60, + "atk": 110, + "def": 70, + "spa": 60, + "spd": 60, + "spe": 100 + }, + "abilities": { + "0": "Run Away", + "1": "Early Bird", + "H": "Tangled Feet" + }, + "heightm": 1.8, + "weightkg": 85.2, + "color": "Brown", + "prevo": "doduo", + "evoLevel": 31, + "eggGroups": [ + "Flying" + ] + }, + "seel": { + "num": 86, + "species": "Seel", + "types": [ + "Water" + ], + "baseStats": { + "hp": 65, + "atk": 45, + "def": 55, + "spa": 45, + "spd": 70, + "spe": 45 + }, + "abilities": { + "0": "Thick Fat", + "1": "Hydration", + "H": "Ice Body" + }, + "heightm": 1.1, + "weightkg": 90, + "color": "White", + "evos": [ + "dewgong" + ], + "eggGroups": [ + "Water 1", + "Field" + ] + }, + "dewgong": { + "num": 87, + "species": "Dewgong", + "types": [ + "Water", + "Ice" + ], + "baseStats": { + "hp": 90, + "atk": 70, + "def": 80, + "spa": 70, + "spd": 95, + "spe": 70 + }, + "abilities": { + "0": "Thick Fat", + "1": "Hydration", + "H": "Ice Body" + }, + "heightm": 1.7, + "weightkg": 120, + "color": "White", + "prevo": "seel", + "evoLevel": 34, + "eggGroups": [ + "Water 1", + "Field" + ] + }, + "grimer": { + "num": 88, + "species": "Grimer", + "types": [ + "Poison" + ], + "baseStats": { + "hp": 80, + "atk": 80, + "def": 50, + "spa": 40, + "spd": 50, + "spe": 25 + }, + "abilities": { + "0": "Stench", + "1": "Sticky Hold", + "H": "Poison Touch" + }, + "heightm": 0.9, + "weightkg": 30, + "color": "Purple", + "evos": [ + "muk" + ], + "eggGroups": [ + "Amorphous" + ] + }, + "muk": { + "num": 89, + "species": "Muk", + "types": [ + "Poison" + ], + "baseStats": { + "hp": 105, + "atk": 105, + "def": 75, + "spa": 65, + "spd": 100, + "spe": 50 + }, + "abilities": { + "0": "Stench", + "1": "Sticky Hold", + "H": "Poison Touch" + }, + "heightm": 1.2, + "weightkg": 30, + "color": "Purple", + "prevo": "grimer", + "evoLevel": 38, + "eggGroups": [ + "Amorphous" + ] + }, + "shellder": { + "num": 90, + "species": "Shellder", + "types": [ + "Water" + ], + "baseStats": { + "hp": 30, + "atk": 65, + "def": 100, + "spa": 45, + "spd": 25, + "spe": 40 + }, + "abilities": { + "0": "Shell Armor", + "1": "Skill Link", + "H": "Overcoat" + }, + "heightm": 0.3, + "weightkg": 4, + "color": "Purple", + "evos": [ + "cloyster" + ], + "eggGroups": [ + "Water 3" + ] + }, + "cloyster": { + "num": 91, + "species": "Cloyster", + "types": [ + "Water", + "Ice" + ], + "baseStats": { + "hp": 50, + "atk": 95, + "def": 180, + "spa": 85, + "spd": 45, + "spe": 70 + }, + "abilities": { + "0": "Shell Armor", + "1": "Skill Link", + "H": "Overcoat" + }, + "heightm": 1.5, + "weightkg": 132.5, + "color": "Purple", + "prevo": "shellder", + "evoLevel": 1, + "eggGroups": [ + "Water 3" + ] + }, + "gastly": { + "num": 92, + "species": "Gastly", + "types": [ + "Ghost", + "Poison" + ], + "baseStats": { + "hp": 30, + "atk": 35, + "def": 30, + "spa": 100, + "spd": 35, + "spe": 80 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 1.3, + "weightkg": 0.1, + "color": "Purple", + "evos": [ + "haunter" + ], + "eggGroups": [ + "Amorphous" + ] + }, + "haunter": { + "num": 93, + "species": "Haunter", + "types": [ + "Ghost", + "Poison" + ], + "baseStats": { + "hp": 45, + "atk": 50, + "def": 45, + "spa": 115, + "spd": 55, + "spe": 95 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 1.6, + "weightkg": 0.1, + "color": "Purple", + "prevo": "gastly", + "evos": [ + "gengar" + ], + "evoLevel": 25, + "eggGroups": [ + "Amorphous" + ] + }, + "gengar": { + "num": 94, + "species": "Gengar", + "types": [ + "Ghost", + "Poison" + ], + "baseStats": { + "hp": 60, + "atk": 65, + "def": 60, + "spa": 130, + "spd": 75, + "spe": 110 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 1.5, + "weightkg": 40.5, + "color": "Purple", + "prevo": "haunter", + "evoLevel": 25, + "eggGroups": [ + "Amorphous" + ], + "otherFormes": [ + "gengarmega" + ] + }, + "gengarmega": { + "num": 94, + "species": "Gengar-Mega", + "baseSpecies": "Gengar", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Ghost", + "Poison" + ], + "baseStats": { + "hp": 60, + "atk": 65, + "def": 80, + "spa": 170, + "spd": 95, + "spe": 130 + }, + "abilities": { + "0": "Shadow Tag" + }, + "heightm": 1.4, + "weightkg": 40.5, + "color": "Purple", + "eggGroups": [ + "Amorphous" + ] + }, + "onix": { + "num": 95, + "species": "Onix", + "types": [ + "Rock", + "Ground" + ], + "baseStats": { + "hp": 35, + "atk": 45, + "def": 160, + "spa": 30, + "spd": 45, + "spe": 70 + }, + "abilities": { + "0": "Rock Head", + "1": "Sturdy", + "H": "Weak Armor" + }, + "heightm": 8.8, + "weightkg": 210, + "color": "Gray", + "evos": [ + "steelix" + ], + "eggGroups": [ + "Mineral" + ] + }, + "drowzee": { + "num": 96, + "species": "Drowzee", + "types": [ + "Psychic" + ], + "baseStats": { + "hp": 60, + "atk": 48, + "def": 45, + "spa": 43, + "spd": 90, + "spe": 42 + }, + "abilities": { + "0": "Insomnia", + "1": "Forewarn", + "H": "Inner Focus" + }, + "heightm": 1, + "weightkg": 32.4, + "color": "Yellow", + "evos": [ + "hypno" + ], + "eggGroups": [ + "Human-Like" + ] + }, + "hypno": { + "num": 97, + "species": "Hypno", + "types": [ + "Psychic" + ], + "baseStats": { + "hp": 85, + "atk": 73, + "def": 70, + "spa": 73, + "spd": 115, + "spe": 67 + }, + "abilities": { + "0": "Insomnia", + "1": "Forewarn", + "H": "Inner Focus" + }, + "heightm": 1.6, + "weightkg": 75.6, + "color": "Yellow", + "prevo": "drowzee", + "evoLevel": 26, + "eggGroups": [ + "Human-Like" + ] + }, + "krabby": { + "num": 98, + "species": "Krabby", + "types": [ + "Water" + ], + "baseStats": { + "hp": 30, + "atk": 105, + "def": 90, + "spa": 25, + "spd": 25, + "spe": 50 + }, + "abilities": { + "0": "Hyper Cutter", + "1": "Shell Armor", + "H": "Sheer Force" + }, + "heightm": 0.4, + "weightkg": 6.5, + "color": "Red", + "evos": [ + "kingler" + ], + "eggGroups": [ + "Water 3" + ] + }, + "kingler": { + "num": 99, + "species": "Kingler", + "types": [ + "Water" + ], + "baseStats": { + "hp": 55, + "atk": 130, + "def": 115, + "spa": 50, + "spd": 50, + "spe": 75 + }, + "abilities": { + "0": "Hyper Cutter", + "1": "Shell Armor", + "H": "Sheer Force" + }, + "heightm": 1.3, + "weightkg": 60, + "color": "Red", + "prevo": "krabby", + "evoLevel": 28, + "eggGroups": [ + "Water 3" + ] + }, + "voltorb": { + "num": 100, + "species": "Voltorb", + "types": [ + "Electric" + ], + "gender": "N", + "baseStats": { + "hp": 40, + "atk": 30, + "def": 50, + "spa": 55, + "spd": 55, + "spe": 100 + }, + "abilities": { + "0": "Soundproof", + "1": "Static", + "H": "Aftermath" + }, + "heightm": 0.5, + "weightkg": 10.4, + "color": "Red", + "evos": [ + "electrode" + ], + "eggGroups": [ + "Mineral" + ] + }, + "electrode": { + "num": 101, + "species": "Electrode", + "types": [ + "Electric" + ], + "gender": "N", + "baseStats": { + "hp": 60, + "atk": 50, + "def": 70, + "spa": 80, + "spd": 80, + "spe": 140 + }, + "abilities": { + "0": "Soundproof", + "1": "Static", + "H": "Aftermath" + }, + "heightm": 1.2, + "weightkg": 66.6, + "color": "Red", + "prevo": "voltorb", + "evoLevel": 30, + "eggGroups": [ + "Mineral" + ] + }, + "exeggcute": { + "num": 102, + "species": "Exeggcute", + "types": [ + "Grass", + "Psychic" + ], + "baseStats": { + "hp": 60, + "atk": 40, + "def": 80, + "spa": 60, + "spd": 45, + "spe": 40 + }, + "abilities": { + "0": "Chlorophyll", + "H": "Harvest" + }, + "heightm": 0.4, + "weightkg": 2.5, + "color": "Pink", + "evos": [ + "exeggutor" + ], + "eggGroups": [ + "Grass" + ] + }, + "exeggutor": { + "num": 103, + "species": "Exeggutor", + "types": [ + "Grass", + "Psychic" + ], + "baseStats": { + "hp": 95, + "atk": 95, + "def": 85, + "spa": 125, + "spd": 65, + "spe": 55 + }, + "abilities": { + "0": "Chlorophyll", + "H": "Harvest" + }, + "heightm": 2, + "weightkg": 120, + "color": "Yellow", + "prevo": "exeggcute", + "evoLevel": 1, + "eggGroups": [ + "Grass" + ] + }, + "cubone": { + "num": 104, + "species": "Cubone", + "types": [ + "Ground" + ], + "baseStats": { + "hp": 50, + "atk": 50, + "def": 95, + "spa": 40, + "spd": 50, + "spe": 35 + }, + "abilities": { + "0": "Rock Head", + "1": "Lightning Rod", + "H": "Battle Armor" + }, + "heightm": 0.4, + "weightkg": 6.5, + "color": "Brown", + "evos": [ + "marowak" + ], + "eggGroups": [ + "Monster" + ] + }, + "marowak": { + "num": 105, + "species": "Marowak", + "types": [ + "Ground" + ], + "baseStats": { + "hp": 60, + "atk": 80, + "def": 110, + "spa": 50, + "spd": 80, + "spe": 45 + }, + "abilities": { + "0": "Rock Head", + "1": "Lightning Rod", + "H": "Battle Armor" + }, + "heightm": 1, + "weightkg": 45, + "color": "Brown", + "prevo": "cubone", + "evoLevel": 28, + "eggGroups": [ + "Monster" + ] + }, + "hitmonlee": { + "num": 106, + "species": "Hitmonlee", + "types": [ + "Fighting" + ], + "gender": "M", + "baseStats": { + "hp": 50, + "atk": 120, + "def": 53, + "spa": 35, + "spd": 110, + "spe": 87 + }, + "abilities": { + "0": "Limber", + "1": "Reckless", + "H": "Unburden" + }, + "heightm": 1.5, + "weightkg": 49.8, + "color": "Brown", + "prevo": "tyrogue", + "evoLevel": 20, + "eggGroups": [ + "Human-Like" + ] + }, + "hitmonchan": { + "num": 107, + "species": "Hitmonchan", + "types": [ + "Fighting" + ], + "gender": "M", + "baseStats": { + "hp": 50, + "atk": 105, + "def": 79, + "spa": 35, + "spd": 110, + "spe": 76 + }, + "abilities": { + "0": "Keen Eye", + "1": "Iron Fist", + "H": "Inner Focus" + }, + "heightm": 1.4, + "weightkg": 50.2, + "color": "Brown", + "prevo": "tyrogue", + "evoLevel": 20, + "eggGroups": [ + "Human-Like" + ] + }, + "lickitung": { + "num": 108, + "species": "Lickitung", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 90, + "atk": 55, + "def": 75, + "spa": 60, + "spd": 75, + "spe": 30 + }, + "abilities": { + "0": "Own Tempo", + "1": "Oblivious", + "H": "Cloud Nine" + }, + "heightm": 1.2, + "weightkg": 65.5, + "color": "Pink", + "evos": [ + "lickilicky" + ], + "eggGroups": [ + "Monster" + ] + }, + "koffing": { + "num": 109, + "species": "Koffing", + "types": [ + "Poison" + ], + "baseStats": { + "hp": 40, + "atk": 65, + "def": 95, + "spa": 60, + "spd": 45, + "spe": 35 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 0.6, + "weightkg": 1, + "color": "Purple", + "evos": [ + "weezing" + ], + "eggGroups": [ + "Amorphous" + ] + }, + "weezing": { + "num": 110, + "species": "Weezing", + "types": [ + "Poison" + ], + "baseStats": { + "hp": 65, + "atk": 90, + "def": 120, + "spa": 85, + "spd": 70, + "spe": 60 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 1.2, + "weightkg": 9.5, + "color": "Purple", + "prevo": "koffing", + "evoLevel": 35, + "eggGroups": [ + "Amorphous" + ] + }, + "rhyhorn": { + "num": 111, + "species": "Rhyhorn", + "types": [ + "Ground", + "Rock" + ], + "baseStats": { + "hp": 80, + "atk": 85, + "def": 95, + "spa": 30, + "spd": 30, + "spe": 25 + }, + "abilities": { + "0": "Lightning Rod", + "1": "Rock Head", + "H": "Reckless" + }, + "heightm": 1, + "weightkg": 115, + "color": "Gray", + "evos": [ + "rhydon" + ], + "eggGroups": [ + "Monster", + "Field" + ] + }, + "rhydon": { + "num": 112, + "species": "Rhydon", + "types": [ + "Ground", + "Rock" + ], + "baseStats": { + "hp": 105, + "atk": 130, + "def": 120, + "spa": 45, + "spd": 45, + "spe": 40 + }, + "abilities": { + "0": "Lightning Rod", + "1": "Rock Head", + "H": "Reckless" + }, + "heightm": 1.9, + "weightkg": 120, + "color": "Gray", + "prevo": "rhyhorn", + "evos": [ + "rhyperior" + ], + "evoLevel": 42, + "eggGroups": [ + "Monster", + "Field" + ] + }, + "chansey": { + "num": 113, + "species": "Chansey", + "types": [ + "Normal" + ], + "gender": "F", + "baseStats": { + "hp": 250, + "atk": 5, + "def": 5, + "spa": 35, + "spd": 105, + "spe": 50 + }, + "abilities": { + "0": "Natural Cure", + "1": "Serene Grace", + "H": "Healer" + }, + "heightm": 1.1, + "weightkg": 34.6, + "color": "Pink", + "prevo": "happiny", + "evos": [ + "blissey" + ], + "evoLevel": 1, + "eggGroups": [ + "Fairy" + ] + }, + "tangela": { + "num": 114, + "species": "Tangela", + "types": [ + "Grass" + ], + "baseStats": { + "hp": 65, + "atk": 55, + "def": 115, + "spa": 100, + "spd": 40, + "spe": 60 + }, + "abilities": { + "0": "Chlorophyll", + "1": "Leaf Guard", + "H": "Regenerator" + }, + "heightm": 1, + "weightkg": 35, + "color": "Blue", + "evos": [ + "tangrowth" + ], + "eggGroups": [ + "Grass" + ] + }, + "kangaskhan": { + "num": 115, + "species": "Kangaskhan", + "types": [ + "Normal" + ], + "gender": "F", + "baseStats": { + "hp": 105, + "atk": 95, + "def": 80, + "spa": 40, + "spd": 80, + "spe": 90 + }, + "abilities": { + "0": "Early Bird", + "1": "Scrappy", + "H": "Inner Focus" + }, + "heightm": 2.2, + "weightkg": 80, + "color": "Brown", + "eggGroups": [ + "Monster" + ], + "otherFormes": [ + "kangaskhanmega" + ] + }, + "kangaskhanmega": { + "num": 115, + "species": "Kangaskhan-Mega", + "baseSpecies": "Kangaskhan", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Normal" + ], + "gender": "F", + "baseStats": { + "hp": 105, + "atk": 125, + "def": 100, + "spa": 60, + "spd": 100, + "spe": 100 + }, + "abilities": { + "0": "Parental Bond" + }, + "heightm": 2.2, + "weightkg": 100, + "color": "Brown", + "eggGroups": [ + "Monster" + ] + }, + "horsea": { + "num": 116, + "species": "Horsea", + "types": [ + "Water" + ], + "baseStats": { + "hp": 30, + "atk": 40, + "def": 70, + "spa": 70, + "spd": 25, + "spe": 60 + }, + "abilities": { + "0": "Swift Swim", + "1": "Sniper", + "H": "Damp" + }, + "heightm": 0.4, + "weightkg": 8, + "color": "Blue", + "evos": [ + "seadra" + ], + "eggGroups": [ + "Water 1", + "Dragon" + ] + }, + "seadra": { + "num": 117, + "species": "Seadra", + "types": [ + "Water" + ], + "baseStats": { + "hp": 55, + "atk": 65, + "def": 95, + "spa": 95, + "spd": 45, + "spe": 85 + }, + "abilities": { + "0": "Poison Point", + "1": "Sniper", + "H": "Damp" + }, + "heightm": 1.2, + "weightkg": 25, + "color": "Blue", + "prevo": "horsea", + "evos": [ + "kingdra" + ], + "evoLevel": 32, + "eggGroups": [ + "Water 1", + "Dragon" + ] + }, + "goldeen": { + "num": 118, + "species": "Goldeen", + "types": [ + "Water" + ], + "baseStats": { + "hp": 45, + "atk": 67, + "def": 60, + "spa": 35, + "spd": 50, + "spe": 63 + }, + "abilities": { + "0": "Swift Swim", + "1": "Water Veil", + "H": "Lightning Rod" + }, + "heightm": 0.6, + "weightkg": 15, + "color": "Red", + "evos": [ + "seaking" + ], + "eggGroups": [ + "Water 2" + ] + }, + "seaking": { + "num": 119, + "species": "Seaking", + "types": [ + "Water" + ], + "baseStats": { + "hp": 80, + "atk": 92, + "def": 65, + "spa": 65, + "spd": 80, + "spe": 68 + }, + "abilities": { + "0": "Swift Swim", + "1": "Water Veil", + "H": "Lightning Rod" + }, + "heightm": 1.3, + "weightkg": 39, + "color": "Red", + "prevo": "goldeen", + "evoLevel": 33, + "eggGroups": [ + "Water 2" + ] + }, + "staryu": { + "num": 120, + "species": "Staryu", + "types": [ + "Water" + ], + "gender": "N", + "baseStats": { + "hp": 30, + "atk": 45, + "def": 55, + "spa": 70, + "spd": 55, + "spe": 85 + }, + "abilities": { + "0": "Illuminate", + "1": "Natural Cure", + "H": "Analytic" + }, + "heightm": 0.8, + "weightkg": 34.5, + "color": "Brown", + "evos": [ + "starmie" + ], + "eggGroups": [ + "Water 3" + ] + }, + "starmie": { + "num": 121, + "species": "Starmie", + "types": [ + "Water", + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 60, + "atk": 75, + "def": 85, + "spa": 100, + "spd": 85, + "spe": 115 + }, + "abilities": { + "0": "Illuminate", + "1": "Natural Cure", + "H": "Analytic" + }, + "heightm": 1.1, + "weightkg": 80, + "color": "Purple", + "prevo": "staryu", + "evoLevel": 1, + "eggGroups": [ + "Water 3" + ] + }, + "mrmime": { + "num": 122, + "species": "Mr. Mime", + "types": [ + "Psychic", + "Fairy" + ], + "baseStats": { + "hp": 40, + "atk": 45, + "def": 65, + "spa": 100, + "spd": 120, + "spe": 90 + }, + "abilities": { + "0": "Soundproof", + "1": "Filter", + "H": "Technician" + }, + "heightm": 1.3, + "weightkg": 54.5, + "color": "Pink", + "prevo": "mimejr", + "evoLevel": 1, + "evoMove": "Mimic", + "eggGroups": [ + "Human-Like" + ] + }, + "scyther": { + "num": 123, + "species": "Scyther", + "types": [ + "Bug", + "Flying" + ], + "baseStats": { + "hp": 70, + "atk": 110, + "def": 80, + "spa": 55, + "spd": 80, + "spe": 105 + }, + "abilities": { + "0": "Swarm", + "1": "Technician", + "H": "Steadfast" + }, + "heightm": 1.5, + "weightkg": 56, + "color": "Green", + "evos": [ + "scizor" + ], + "eggGroups": [ + "Bug" + ] + }, + "jynx": { + "num": 124, + "species": "Jynx", + "types": [ + "Ice", + "Psychic" + ], + "gender": "F", + "baseStats": { + "hp": 65, + "atk": 50, + "def": 35, + "spa": 115, + "spd": 95, + "spe": 95 + }, + "abilities": { + "0": "Oblivious", + "1": "Forewarn", + "H": "Dry Skin" + }, + "heightm": 1.4, + "weightkg": 40.6, + "color": "Red", + "prevo": "smoochum", + "evoLevel": 30, + "eggGroups": [ + "Human-Like" + ] + }, + "electabuzz": { + "num": 125, + "species": "Electabuzz", + "types": [ + "Electric" + ], + "genderRatio": { + "M": 0.75, + "F": 0.25 + }, + "baseStats": { + "hp": 65, + "atk": 83, + "def": 57, + "spa": 95, + "spd": 85, + "spe": 105 + }, + "abilities": { + "0": "Static", + "H": "Vital Spirit" + }, + "heightm": 1.1, + "weightkg": 30, + "color": "Yellow", + "prevo": "elekid", + "evos": [ + "electivire" + ], + "evoLevel": 30, + "eggGroups": [ + "Human-Like" + ] + }, + "magmar": { + "num": 126, + "species": "Magmar", + "types": [ + "Fire" + ], + "genderRatio": { + "M": 0.75, + "F": 0.25 + }, + "baseStats": { + "hp": 65, + "atk": 95, + "def": 57, + "spa": 100, + "spd": 85, + "spe": 93 + }, + "abilities": { + "0": "Flame Body", + "H": "Vital Spirit" + }, + "heightm": 1.3, + "weightkg": 44.5, + "color": "Red", + "prevo": "magby", + "evos": [ + "magmortar" + ], + "evoLevel": 30, + "eggGroups": [ + "Human-Like" + ] + }, + "pinsir": { + "num": 127, + "species": "Pinsir", + "types": [ + "Bug" + ], + "baseStats": { + "hp": 65, + "atk": 125, + "def": 100, + "spa": 55, + "spd": 70, + "spe": 85 + }, + "abilities": { + "0": "Hyper Cutter", + "1": "Mold Breaker", + "H": "Moxie" + }, + "heightm": 1.5, + "weightkg": 55, + "color": "Brown", + "eggGroups": [ + "Bug" + ], + "otherFormes": [ + "pinsirmega" + ] + }, + "pinsirmega": { + "num": 127, + "species": "Pinsir-Mega", + "baseSpecies": "Pinsir", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Bug", + "Flying" + ], + "baseStats": { + "hp": 65, + "atk": 155, + "def": 120, + "spa": 65, + "spd": 90, + "spe": 105 + }, + "abilities": { + "0": "Aerilate" + }, + "heightm": 1.7, + "weightkg": 59, + "color": "Brown", + "eggGroups": [ + "Bug" + ] + }, + "tauros": { + "num": 128, + "species": "Tauros", + "types": [ + "Normal" + ], + "gender": "M", + "baseStats": { + "hp": 75, + "atk": 100, + "def": 95, + "spa": 40, + "spd": 70, + "spe": 110 + }, + "abilities": { + "0": "Intimidate", + "1": "Anger Point", + "H": "Sheer Force" + }, + "heightm": 1.4, + "weightkg": 88.4, + "color": "Brown", + "eggGroups": [ + "Field" + ] + }, + "magikarp": { + "num": 129, + "species": "Magikarp", + "types": [ + "Water" + ], + "baseStats": { + "hp": 20, + "atk": 10, + "def": 55, + "spa": 15, + "spd": 20, + "spe": 80 + }, + "abilities": { + "0": "Swift Swim", + "H": "Rattled" + }, + "heightm": 0.9, + "weightkg": 10, + "color": "Red", + "evos": [ + "gyarados" + ], + "eggGroups": [ + "Water 2", + "Dragon" + ] + }, + "gyarados": { + "num": 130, + "species": "Gyarados", + "types": [ + "Water", + "Flying" + ], + "baseStats": { + "hp": 95, + "atk": 125, + "def": 79, + "spa": 60, + "spd": 100, + "spe": 81 + }, + "abilities": { + "0": "Intimidate", + "H": "Moxie" + }, + "heightm": 6.5, + "weightkg": 235, + "color": "Blue", + "prevo": "magikarp", + "evoLevel": 20, + "eggGroups": [ + "Water 2", + "Dragon" + ], + "otherFormes": [ + "gyaradosmega" + ] + }, + "gyaradosmega": { + "num": 130, + "species": "Gyarados-Mega", + "baseSpecies": "Gyarados", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Water", + "Dark" + ], + "baseStats": { + "hp": 95, + "atk": 155, + "def": 109, + "spa": 70, + "spd": 130, + "spe": 81 + }, + "abilities": { + "0": "Mold Breaker" + }, + "heightm": 6.5, + "weightkg": 305, + "color": "Blue", + "eggGroups": [ + "Water 2", + "Dragon" + ] + }, + "lapras": { + "num": 131, + "species": "Lapras", + "types": [ + "Water", + "Ice" + ], + "baseStats": { + "hp": 130, + "atk": 85, + "def": 80, + "spa": 85, + "spd": 95, + "spe": 60 + }, + "abilities": { + "0": "Water Absorb", + "1": "Shell Armor", + "H": "Hydration" + }, + "heightm": 2.5, + "weightkg": 220, + "color": "Blue", + "eggGroups": [ + "Monster", + "Water 1" + ] + }, + "ditto": { + "num": 132, + "species": "Ditto", + "types": [ + "Normal" + ], + "gender": "N", + "baseStats": { + "hp": 48, + "atk": 48, + "def": 48, + "spa": 48, + "spd": 48, + "spe": 48 + }, + "abilities": { + "0": "Limber", + "H": "Imposter" + }, + "heightm": 0.3, + "weightkg": 4, + "color": "Purple", + "eggGroups": [ + "Ditto" + ] + }, + "eevee": { + "num": 133, + "species": "Eevee", + "types": [ + "Normal" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 55, + "atk": 55, + "def": 50, + "spa": 45, + "spd": 65, + "spe": 55 + }, + "abilities": { + "0": "Run Away", + "1": "Adaptability", + "H": "Anticipation" + }, + "heightm": 0.3, + "weightkg": 6.5, + "color": "Brown", + "evos": [ + "vaporeon", + "jolteon", + "flareon", + "espeon", + "umbreon", + "leafeon", + "glaceon", + "sylveon" + ], + "eggGroups": [ + "Field" + ] + }, + "vaporeon": { + "num": 134, + "species": "Vaporeon", + "types": [ + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 130, + "atk": 65, + "def": 60, + "spa": 110, + "spd": 95, + "spe": 65 + }, + "abilities": { + "0": "Water Absorb", + "H": "Hydration" + }, + "heightm": 1, + "weightkg": 29, + "color": "Blue", + "prevo": "eevee", + "evoLevel": 1, + "eggGroups": [ + "Field" + ] + }, + "jolteon": { + "num": 135, + "species": "Jolteon", + "types": [ + "Electric" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 65, + "atk": 65, + "def": 60, + "spa": 110, + "spd": 95, + "spe": 130 + }, + "abilities": { + "0": "Volt Absorb", + "H": "Quick Feet" + }, + "heightm": 0.8, + "weightkg": 24.5, + "color": "Yellow", + "prevo": "eevee", + "evoLevel": 1, + "eggGroups": [ + "Field" + ] + }, + "flareon": { + "num": 136, + "species": "Flareon", + "types": [ + "Fire" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 65, + "atk": 130, + "def": 60, + "spa": 95, + "spd": 110, + "spe": 65 + }, + "abilities": { + "0": "Flash Fire", + "H": "Guts" + }, + "heightm": 0.9, + "weightkg": 25, + "color": "Red", + "prevo": "eevee", + "evoLevel": 1, + "eggGroups": [ + "Field" + ] + }, + "porygon": { + "num": 137, + "species": "Porygon", + "types": [ + "Normal" + ], + "gender": "N", + "baseStats": { + "hp": 65, + "atk": 60, + "def": 70, + "spa": 85, + "spd": 75, + "spe": 40 + }, + "abilities": { + "0": "Trace", + "1": "Download", + "H": "Analytic" + }, + "heightm": 0.8, + "weightkg": 36.5, + "color": "Pink", + "evos": [ + "porygon2" + ], + "eggGroups": [ + "Mineral" + ] + }, + "omanyte": { + "num": 138, + "species": "Omanyte", + "types": [ + "Rock", + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 35, + "atk": 40, + "def": 100, + "spa": 90, + "spd": 55, + "spe": 35 + }, + "abilities": { + "0": "Swift Swim", + "1": "Shell Armor", + "H": "Weak Armor" + }, + "heightm": 0.4, + "weightkg": 7.5, + "color": "Blue", + "evos": [ + "omastar" + ], + "eggGroups": [ + "Water 1", + "Water 3" + ] + }, + "omastar": { + "num": 139, + "species": "Omastar", + "types": [ + "Rock", + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 70, + "atk": 60, + "def": 125, + "spa": 115, + "spd": 70, + "spe": 55 + }, + "abilities": { + "0": "Swift Swim", + "1": "Shell Armor", + "H": "Weak Armor" + }, + "heightm": 1, + "weightkg": 35, + "color": "Blue", + "prevo": "omanyte", + "evoLevel": 40, + "eggGroups": [ + "Water 1", + "Water 3" + ] + }, + "kabuto": { + "num": 140, + "species": "Kabuto", + "types": [ + "Rock", + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 30, + "atk": 80, + "def": 90, + "spa": 55, + "spd": 45, + "spe": 55 + }, + "abilities": { + "0": "Swift Swim", + "1": "Battle Armor", + "H": "Weak Armor" + }, + "heightm": 0.5, + "weightkg": 11.5, + "color": "Brown", + "evos": [ + "kabutops" + ], + "eggGroups": [ + "Water 1", + "Water 3" + ] + }, + "kabutops": { + "num": 141, + "species": "Kabutops", + "types": [ + "Rock", + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 60, + "atk": 115, + "def": 105, + "spa": 65, + "spd": 70, + "spe": 80 + }, + "abilities": { + "0": "Swift Swim", + "1": "Battle Armor", + "H": "Weak Armor" + }, + "heightm": 1.3, + "weightkg": 40.5, + "color": "Brown", + "prevo": "kabuto", + "evoLevel": 40, + "eggGroups": [ + "Water 1", + "Water 3" + ] + }, + "aerodactyl": { + "num": 142, + "species": "Aerodactyl", + "types": [ + "Rock", + "Flying" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 80, + "atk": 105, + "def": 65, + "spa": 60, + "spd": 75, + "spe": 130 + }, + "abilities": { + "0": "Rock Head", + "1": "Pressure", + "H": "Unnerve" + }, + "heightm": 1.8, + "weightkg": 59, + "color": "Purple", + "eggGroups": [ + "Flying" + ], + "otherFormes": [ + "aerodactylmega" + ] + }, + "aerodactylmega": { + "num": 142, + "species": "Aerodactyl-Mega", + "baseSpecies": "Aerodactyl", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Rock", + "Flying" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 80, + "atk": 135, + "def": 85, + "spa": 70, + "spd": 95, + "spe": 150 + }, + "abilities": { + "0": "Tough Claws" + }, + "heightm": 2.1, + "weightkg": 79, + "color": "Purple", + "eggGroups": [ + "Flying" + ] + }, + "snorlax": { + "num": 143, + "species": "Snorlax", + "types": [ + "Normal" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 160, + "atk": 110, + "def": 65, + "spa": 65, + "spd": 110, + "spe": 30 + }, + "abilities": { + "0": "Immunity", + "1": "Thick Fat", + "H": "Gluttony" + }, + "heightm": 2.1, + "weightkg": 460, + "color": "Black", + "prevo": "munchlax", + "evoLevel": 1, + "eggGroups": [ + "Monster" + ] + }, + "articuno": { + "num": 144, + "species": "Articuno", + "types": [ + "Ice", + "Flying" + ], + "gender": "N", + "baseStats": { + "hp": 90, + "atk": 85, + "def": 100, + "spa": 95, + "spd": 125, + "spe": 85 + }, + "abilities": { + "0": "Pressure", + "H": "Snow Cloak" + }, + "heightm": 1.7, + "weightkg": 55.4, + "color": "Blue", + "eggGroups": [ + "Undiscovered" + ] + }, + "zapdos": { + "num": 145, + "species": "Zapdos", + "types": [ + "Electric", + "Flying" + ], + "gender": "N", + "baseStats": { + "hp": 90, + "atk": 90, + "def": 85, + "spa": 125, + "spd": 90, + "spe": 100 + }, + "abilities": { + "0": "Pressure", + "H": "Static" + }, + "heightm": 1.6, + "weightkg": 52.6, + "color": "Yellow", + "eggGroups": [ + "Undiscovered" + ] + }, + "moltres": { + "num": 146, + "species": "Moltres", + "types": [ + "Fire", + "Flying" + ], + "gender": "N", + "baseStats": { + "hp": 90, + "atk": 100, + "def": 90, + "spa": 125, + "spd": 85, + "spe": 90 + }, + "abilities": { + "0": "Pressure", + "H": "Flame Body" + }, + "heightm": 2, + "weightkg": 60, + "color": "Yellow", + "eggGroups": [ + "Undiscovered" + ] + }, + "dratini": { + "num": 147, + "species": "Dratini", + "types": [ + "Dragon" + ], + "baseStats": { + "hp": 41, + "atk": 64, + "def": 45, + "spa": 50, + "spd": 50, + "spe": 50 + }, + "abilities": { + "0": "Shed Skin", + "H": "Marvel Scale" + }, + "heightm": 1.8, + "weightkg": 3.3, + "color": "Blue", + "evos": [ + "dragonair" + ], + "eggGroups": [ + "Water 1", + "Dragon" + ] + }, + "dragonair": { + "num": 148, + "species": "Dragonair", + "types": [ + "Dragon" + ], + "baseStats": { + "hp": 61, + "atk": 84, + "def": 65, + "spa": 70, + "spd": 70, + "spe": 70 + }, + "abilities": { + "0": "Shed Skin", + "H": "Marvel Scale" + }, + "heightm": 4, + "weightkg": 16.5, + "color": "Blue", + "prevo": "dratini", + "evos": [ + "dragonite" + ], + "evoLevel": 30, + "eggGroups": [ + "Water 1", + "Dragon" + ] + }, + "dragonite": { + "num": 149, + "species": "Dragonite", + "types": [ + "Dragon", + "Flying" + ], + "baseStats": { + "hp": 91, + "atk": 134, + "def": 95, + "spa": 100, + "spd": 100, + "spe": 80 + }, + "abilities": { + "0": "Inner Focus", + "H": "Multiscale" + }, + "heightm": 2.2, + "weightkg": 210, + "color": "Brown", + "prevo": "dragonair", + "evoLevel": 55, + "eggGroups": [ + "Water 1", + "Dragon" + ] + }, + "mewtwo": { + "num": 150, + "species": "Mewtwo", + "types": [ + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 106, + "atk": 110, + "def": 90, + "spa": 154, + "spd": 90, + "spe": 130 + }, + "abilities": { + "0": "Pressure", + "H": "Unnerve" + }, + "heightm": 2, + "weightkg": 122, + "color": "Purple", + "eggGroups": [ + "Undiscovered" + ], + "otherFormes": [ + "mewtwomegax", + "mewtwomegay" + ] + }, + "mewtwomegax": { + "num": 150, + "species": "Mewtwo-Mega-X", + "baseSpecies": "Mewtwo", + "forme": "Mega-X", + "formeLetter": "M", + "types": [ + "Psychic", + "Fighting" + ], + "gender": "N", + "baseStats": { + "hp": 106, + "atk": 190, + "def": 100, + "spa": 154, + "spd": 100, + "spe": 130 + }, + "abilities": { + "0": "Steadfast" + }, + "heightm": 2.3, + "weightkg": 127, + "color": "Purple", + "eggGroups": [ + "Undiscovered" + ] + }, + "mewtwomegay": { + "num": 150, + "species": "Mewtwo-Mega-Y", + "baseSpecies": "Mewtwo", + "forme": "Mega-Y", + "formeLetter": "M", + "types": [ + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 106, + "atk": 150, + "def": 70, + "spa": 194, + "spd": 120, + "spe": 140 + }, + "abilities": { + "0": "Insomnia" + }, + "heightm": 1.5, + "weightkg": 33, + "color": "Purple", + "eggGroups": [ + "Undiscovered" + ] + }, + "mew": { + "num": 151, + "species": "Mew", + "types": [ + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 100, + "atk": 100, + "def": 100, + "spa": 100, + "spd": 100, + "spe": 100 + }, + "abilities": { + "0": "Synchronize" + }, + "heightm": 0.4, + "weightkg": 4, + "color": "Pink", + "eggGroups": [ + "Undiscovered" + ] + }, + "chikorita": { + "num": 152, + "species": "Chikorita", + "types": [ + "Grass" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 45, + "atk": 49, + "def": 65, + "spa": 49, + "spd": 65, + "spe": 45 + }, + "abilities": { + "0": "Overgrow", + "H": "Leaf Guard" + }, + "heightm": 0.9, + "weightkg": 6.4, + "color": "Green", + "evos": [ + "bayleef" + ], + "eggGroups": [ + "Monster", + "Grass" + ] + }, + "bayleef": { + "num": 153, + "species": "Bayleef", + "types": [ + "Grass" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 60, + "atk": 62, + "def": 80, + "spa": 63, + "spd": 80, + "spe": 60 + }, + "abilities": { + "0": "Overgrow", + "H": "Leaf Guard" + }, + "heightm": 1.2, + "weightkg": 15.8, + "color": "Green", + "prevo": "chikorita", + "evos": [ + "meganium" + ], + "evoLevel": 16, + "eggGroups": [ + "Monster", + "Grass" + ] + }, + "meganium": { + "num": 154, + "species": "Meganium", + "types": [ + "Grass" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 80, + "atk": 82, + "def": 100, + "spa": 83, + "spd": 100, + "spe": 80 + }, + "abilities": { + "0": "Overgrow", + "H": "Leaf Guard" + }, + "heightm": 1.8, + "weightkg": 100.5, + "color": "Green", + "prevo": "bayleef", + "evoLevel": 32, + "eggGroups": [ + "Monster", + "Grass" + ] + }, + "cyndaquil": { + "num": 155, + "species": "Cyndaquil", + "types": [ + "Fire" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 39, + "atk": 52, + "def": 43, + "spa": 60, + "spd": 50, + "spe": 65 + }, + "abilities": { + "0": "Blaze", + "H": "Flash Fire" + }, + "heightm": 0.5, + "weightkg": 7.9, + "color": "Yellow", + "evos": [ + "quilava" + ], + "eggGroups": [ + "Field" + ] + }, + "quilava": { + "num": 156, + "species": "Quilava", + "types": [ + "Fire" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 58, + "atk": 64, + "def": 58, + "spa": 80, + "spd": 65, + "spe": 80 + }, + "abilities": { + "0": "Blaze", + "H": "Flash Fire" + }, + "heightm": 0.9, + "weightkg": 19, + "color": "Yellow", + "prevo": "cyndaquil", + "evos": [ + "typhlosion" + ], + "evoLevel": 14, + "eggGroups": [ + "Field" + ] + }, + "typhlosion": { + "num": 157, + "species": "Typhlosion", + "types": [ + "Fire" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 78, + "atk": 84, + "def": 78, + "spa": 109, + "spd": 85, + "spe": 100 + }, + "abilities": { + "0": "Blaze", + "H": "Flash Fire" + }, + "heightm": 1.7, + "weightkg": 79.5, + "color": "Yellow", + "prevo": "quilava", + "evoLevel": 36, + "eggGroups": [ + "Field" + ] + }, + "totodile": { + "num": 158, + "species": "Totodile", + "types": [ + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 50, + "atk": 65, + "def": 64, + "spa": 44, + "spd": 48, + "spe": 43 + }, + "abilities": { + "0": "Torrent", + "H": "Sheer Force" + }, + "heightm": 0.6, + "weightkg": 9.5, + "color": "Blue", + "evos": [ + "croconaw" + ], + "eggGroups": [ + "Monster", + "Water 1" + ] + }, + "croconaw": { + "num": 159, + "species": "Croconaw", + "types": [ + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 65, + "atk": 80, + "def": 80, + "spa": 59, + "spd": 63, + "spe": 58 + }, + "abilities": { + "0": "Torrent", + "H": "Sheer Force" + }, + "heightm": 1.1, + "weightkg": 25, + "color": "Blue", + "prevo": "totodile", + "evos": [ + "feraligatr" + ], + "evoLevel": 18, + "eggGroups": [ + "Monster", + "Water 1" + ] + }, + "feraligatr": { + "num": 160, + "species": "Feraligatr", + "types": [ + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 85, + "atk": 105, + "def": 100, + "spa": 79, + "spd": 83, + "spe": 78 + }, + "abilities": { + "0": "Torrent", + "H": "Sheer Force" + }, + "heightm": 2.3, + "weightkg": 88.8, + "color": "Blue", + "prevo": "croconaw", + "evoLevel": 30, + "eggGroups": [ + "Monster", + "Water 1" + ] + }, + "sentret": { + "num": 161, + "species": "Sentret", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 35, + "atk": 46, + "def": 34, + "spa": 35, + "spd": 45, + "spe": 20 + }, + "abilities": { + "0": "Run Away", + "1": "Keen Eye", + "H": "Frisk" + }, + "heightm": 0.8, + "weightkg": 6, + "color": "Brown", + "evos": [ + "furret" + ], + "eggGroups": [ + "Field" + ] + }, + "furret": { + "num": 162, + "species": "Furret", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 85, + "atk": 76, + "def": 64, + "spa": 45, + "spd": 55, + "spe": 90 + }, + "abilities": { + "0": "Run Away", + "1": "Keen Eye", + "H": "Frisk" + }, + "heightm": 1.8, + "weightkg": 32.5, + "color": "Brown", + "prevo": "sentret", + "evoLevel": 15, + "eggGroups": [ + "Field" + ] + }, + "hoothoot": { + "num": 163, + "species": "Hoothoot", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 60, + "atk": 30, + "def": 30, + "spa": 36, + "spd": 56, + "spe": 50 + }, + "abilities": { + "0": "Insomnia", + "1": "Keen Eye", + "H": "Tinted Lens" + }, + "heightm": 0.7, + "weightkg": 21.2, + "color": "Brown", + "evos": [ + "noctowl" + ], + "eggGroups": [ + "Flying" + ] + }, + "noctowl": { + "num": 164, + "species": "Noctowl", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 100, + "atk": 50, + "def": 50, + "spa": 76, + "spd": 96, + "spe": 70 + }, + "abilities": { + "0": "Insomnia", + "1": "Keen Eye", + "H": "Tinted Lens" + }, + "heightm": 1.6, + "weightkg": 40.8, + "color": "Brown", + "prevo": "hoothoot", + "evoLevel": 20, + "eggGroups": [ + "Flying" + ] + }, + "ledyba": { + "num": 165, + "species": "Ledyba", + "types": [ + "Bug", + "Flying" + ], + "baseStats": { + "hp": 40, + "atk": 20, + "def": 30, + "spa": 40, + "spd": 80, + "spe": 55 + }, + "abilities": { + "0": "Swarm", + "1": "Early Bird", + "H": "Rattled" + }, + "heightm": 1, + "weightkg": 10.8, + "color": "Red", + "evos": [ + "ledian" + ], + "eggGroups": [ + "Bug" + ] + }, + "ledian": { + "num": 166, + "species": "Ledian", + "types": [ + "Bug", + "Flying" + ], + "baseStats": { + "hp": 55, + "atk": 35, + "def": 50, + "spa": 55, + "spd": 110, + "spe": 85 + }, + "abilities": { + "0": "Swarm", + "1": "Early Bird", + "H": "Iron Fist" + }, + "heightm": 1.4, + "weightkg": 35.6, + "color": "Red", + "prevo": "ledyba", + "evoLevel": 18, + "eggGroups": [ + "Bug" + ] + }, + "spinarak": { + "num": 167, + "species": "Spinarak", + "types": [ + "Bug", + "Poison" + ], + "baseStats": { + "hp": 40, + "atk": 60, + "def": 40, + "spa": 40, + "spd": 40, + "spe": 30 + }, + "abilities": { + "0": "Swarm", + "1": "Insomnia", + "H": "Sniper" + }, + "heightm": 0.5, + "weightkg": 8.5, + "color": "Green", + "evos": [ + "ariados" + ], + "eggGroups": [ + "Bug" + ] + }, + "ariados": { + "num": 168, + "species": "Ariados", + "types": [ + "Bug", + "Poison" + ], + "baseStats": { + "hp": 70, + "atk": 90, + "def": 70, + "spa": 60, + "spd": 60, + "spe": 40 + }, + "abilities": { + "0": "Swarm", + "1": "Insomnia", + "H": "Sniper" + }, + "heightm": 1.1, + "weightkg": 33.5, + "color": "Red", + "prevo": "spinarak", + "evoLevel": 22, + "eggGroups": [ + "Bug" + ] + }, + "crobat": { + "num": 169, + "species": "Crobat", + "types": [ + "Poison", + "Flying" + ], + "baseStats": { + "hp": 85, + "atk": 90, + "def": 80, + "spa": 70, + "spd": 80, + "spe": 130 + }, + "abilities": { + "0": "Inner Focus", + "H": "Infiltrator" + }, + "heightm": 1.8, + "weightkg": 75, + "color": "Purple", + "prevo": "golbat", + "evoLevel": 23, + "eggGroups": [ + "Flying" + ] + }, + "chinchou": { + "num": 170, + "species": "Chinchou", + "types": [ + "Water", + "Electric" + ], + "baseStats": { + "hp": 75, + "atk": 38, + "def": 38, + "spa": 56, + "spd": 56, + "spe": 67 + }, + "abilities": { + "0": "Volt Absorb", + "1": "Illuminate", + "H": "Water Absorb" + }, + "heightm": 0.5, + "weightkg": 12, + "color": "Blue", + "evos": [ + "lanturn" + ], + "eggGroups": [ + "Water 2" + ] + }, + "lanturn": { + "num": 171, + "species": "Lanturn", + "types": [ + "Water", + "Electric" + ], + "baseStats": { + "hp": 125, + "atk": 58, + "def": 58, + "spa": 76, + "spd": 76, + "spe": 67 + }, + "abilities": { + "0": "Volt Absorb", + "1": "Illuminate", + "H": "Water Absorb" + }, + "heightm": 1.2, + "weightkg": 22.5, + "color": "Blue", + "prevo": "chinchou", + "evoLevel": 27, + "eggGroups": [ + "Water 2" + ] + }, + "pichu": { + "num": 172, + "species": "Pichu", + "types": [ + "Electric" + ], + "baseStats": { + "hp": 20, + "atk": 40, + "def": 15, + "spa": 35, + "spd": 35, + "spe": 60 + }, + "abilities": { + "0": "Static", + "H": "Lightning Rod" + }, + "heightm": 0.3, + "weightkg": 2, + "color": "Yellow", + "evos": [ + "pikachu" + ], + "eggGroups": [ + "Undiscovered" + ], + "otherFormes": [ + "pichuspikyeared" + ] + }, + "pichuspikyeared": { + "num": 172, + "species": "Pichu-Spiky-eared", + "baseSpecies": "Pichu", + "forme": "Spiky-eared", + "formeLetter": "S", + "types": [ + "Electric" + ], + "gender": "F", + "baseStats": { + "hp": 20, + "atk": 40, + "def": 15, + "spa": 35, + "spd": 35, + "spe": 60 + }, + "abilities": { + "0": "Static" + }, + "heightm": 0.3, + "weightkg": 2, + "color": "Yellow", + "eggGroups": [ + "Undiscovered" + ] + }, + "cleffa": { + "num": 173, + "species": "Cleffa", + "types": [ + "Fairy" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 50, + "atk": 25, + "def": 28, + "spa": 45, + "spd": 55, + "spe": 15 + }, + "abilities": { + "0": "Cute Charm", + "1": "Magic Guard", + "H": "Friend Guard" + }, + "heightm": 0.3, + "weightkg": 3, + "color": "Pink", + "evos": [ + "clefairy" + ], + "eggGroups": [ + "Undiscovered" + ] + }, + "igglybuff": { + "num": 174, + "species": "Igglybuff", + "types": [ + "Normal", + "Fairy" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 90, + "atk": 30, + "def": 15, + "spa": 40, + "spd": 20, + "spe": 15 + }, + "abilities": { + "0": "Cute Charm", + "1": "Competitive", + "H": "Friend Guard" + }, + "heightm": 0.3, + "weightkg": 1, + "color": "Pink", + "evos": [ + "jigglypuff" + ], + "eggGroups": [ + "Undiscovered" + ] + }, + "togepi": { + "num": 175, + "species": "Togepi", + "types": [ + "Fairy" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 35, + "atk": 20, + "def": 65, + "spa": 40, + "spd": 65, + "spe": 20 + }, + "abilities": { + "0": "Hustle", + "1": "Serene Grace", + "H": "Super Luck" + }, + "heightm": 0.3, + "weightkg": 1.5, + "color": "White", + "evos": [ + "togetic" + ], + "eggGroups": [ + "Undiscovered" + ] + }, + "togetic": { + "num": 176, + "species": "Togetic", + "types": [ + "Fairy", + "Flying" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 55, + "atk": 40, + "def": 85, + "spa": 80, + "spd": 105, + "spe": 40 + }, + "abilities": { + "0": "Hustle", + "1": "Serene Grace", + "H": "Super Luck" + }, + "heightm": 0.6, + "weightkg": 3.2, + "color": "White", + "prevo": "togepi", + "evos": [ + "togekiss" + ], + "evoLevel": 2, + "eggGroups": [ + "Flying", + "Fairy" + ] + }, + "natu": { + "num": 177, + "species": "Natu", + "types": [ + "Psychic", + "Flying" + ], + "baseStats": { + "hp": 40, + "atk": 50, + "def": 45, + "spa": 70, + "spd": 45, + "spe": 70 + }, + "abilities": { + "0": "Synchronize", + "1": "Early Bird", + "H": "Magic Bounce" + }, + "heightm": 0.2, + "weightkg": 2, + "color": "Green", + "evos": [ + "xatu" + ], + "eggGroups": [ + "Flying" + ] + }, + "xatu": { + "num": 178, + "species": "Xatu", + "types": [ + "Psychic", + "Flying" + ], + "baseStats": { + "hp": 65, + "atk": 75, + "def": 70, + "spa": 95, + "spd": 70, + "spe": 95 + }, + "abilities": { + "0": "Synchronize", + "1": "Early Bird", + "H": "Magic Bounce" + }, + "heightm": 1.5, + "weightkg": 15, + "color": "Green", + "prevo": "natu", + "evoLevel": 25, + "eggGroups": [ + "Flying" + ] + }, + "mareep": { + "num": 179, + "species": "Mareep", + "types": [ + "Electric" + ], + "baseStats": { + "hp": 55, + "atk": 40, + "def": 40, + "spa": 65, + "spd": 45, + "spe": 35 + }, + "abilities": { + "0": "Static", + "H": "Plus" + }, + "heightm": 0.6, + "weightkg": 7.8, + "color": "White", + "evos": [ + "flaaffy" + ], + "eggGroups": [ + "Monster", + "Field" + ] + }, + "flaaffy": { + "num": 180, + "species": "Flaaffy", + "types": [ + "Electric" + ], + "baseStats": { + "hp": 70, + "atk": 55, + "def": 55, + "spa": 80, + "spd": 60, + "spe": 45 + }, + "abilities": { + "0": "Static", + "H": "Plus" + }, + "heightm": 0.8, + "weightkg": 13.3, + "color": "Pink", + "prevo": "mareep", + "evos": [ + "ampharos" + ], + "evoLevel": 15, + "eggGroups": [ + "Monster", + "Field" + ] + }, + "ampharos": { + "num": 181, + "species": "Ampharos", + "types": [ + "Electric" + ], + "baseStats": { + "hp": 90, + "atk": 75, + "def": 85, + "spa": 115, + "spd": 90, + "spe": 55 + }, + "abilities": { + "0": "Static", + "H": "Plus" + }, + "heightm": 1.4, + "weightkg": 61.5, + "color": "Yellow", + "prevo": "flaaffy", + "evoLevel": 30, + "eggGroups": [ + "Monster", + "Field" + ], + "otherFormes": [ + "ampharosmega" + ] + }, + "ampharosmega": { + "num": 181, + "species": "Ampharos-Mega", + "baseSpecies": "Ampharos", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Electric", + "Dragon" + ], + "baseStats": { + "hp": 90, + "atk": 95, + "def": 105, + "spa": 165, + "spd": 110, + "spe": 45 + }, + "abilities": { + "0": "Mold Breaker" + }, + "heightm": 1.4, + "weightkg": 61.5, + "color": "Yellow", + "eggGroups": [ + "Monster", + "Field" + ] + }, + "bellossom": { + "num": 182, + "species": "Bellossom", + "types": [ + "Grass" + ], + "baseStats": { + "hp": 75, + "atk": 80, + "def": 95, + "spa": 90, + "spd": 100, + "spe": 50 + }, + "abilities": { + "0": "Chlorophyll", + "H": "Healer" + }, + "heightm": 0.4, + "weightkg": 5.8, + "color": "Green", + "prevo": "gloom", + "evoLevel": 21, + "eggGroups": [ + "Grass" + ] + }, + "marill": { + "num": 183, + "species": "Marill", + "types": [ + "Water", + "Fairy" + ], + "baseStats": { + "hp": 70, + "atk": 20, + "def": 50, + "spa": 20, + "spd": 50, + "spe": 40 + }, + "abilities": { + "0": "Thick Fat", + "1": "Huge Power", + "H": "Sap Sipper" + }, + "heightm": 0.4, + "weightkg": 8.5, + "color": "Blue", + "prevo": "azurill", + "evos": [ + "azumarill" + ], + "evoLevel": 1, + "eggGroups": [ + "Water 1", + "Fairy" + ] + }, + "azumarill": { + "num": 184, + "species": "Azumarill", + "types": [ + "Water", + "Fairy" + ], + "baseStats": { + "hp": 100, + "atk": 50, + "def": 80, + "spa": 60, + "spd": 80, + "spe": 50 + }, + "abilities": { + "0": "Thick Fat", + "1": "Huge Power", + "H": "Sap Sipper" + }, + "heightm": 0.8, + "weightkg": 28.5, + "color": "Blue", + "prevo": "marill", + "evoLevel": 18, + "eggGroups": [ + "Water 1", + "Fairy" + ] + }, + "sudowoodo": { + "num": 185, + "species": "Sudowoodo", + "types": [ + "Rock" + ], + "baseStats": { + "hp": 70, + "atk": 100, + "def": 115, + "spa": 30, + "spd": 65, + "spe": 30 + }, + "abilities": { + "0": "Sturdy", + "1": "Rock Head", + "H": "Rattled" + }, + "heightm": 1.2, + "weightkg": 38, + "color": "Brown", + "prevo": "bonsly", + "evoLevel": 1, + "evoMove": "Mimic", + "eggGroups": [ + "Mineral" + ] + }, + "politoed": { + "num": 186, + "species": "Politoed", + "types": [ + "Water" + ], + "baseStats": { + "hp": 90, + "atk": 75, + "def": 75, + "spa": 90, + "spd": 100, + "spe": 70 + }, + "abilities": { + "0": "Water Absorb", + "1": "Damp", + "H": "Drizzle" + }, + "heightm": 1.1, + "weightkg": 33.9, + "color": "Green", + "prevo": "poliwhirl", + "evoLevel": 25, + "eggGroups": [ + "Water 1" + ] + }, + "hoppip": { + "num": 187, + "species": "Hoppip", + "types": [ + "Grass", + "Flying" + ], + "baseStats": { + "hp": 35, + "atk": 35, + "def": 40, + "spa": 35, + "spd": 55, + "spe": 50 + }, + "abilities": { + "0": "Chlorophyll", + "1": "Leaf Guard", + "H": "Infiltrator" + }, + "heightm": 0.4, + "weightkg": 0.5, + "color": "Pink", + "evos": [ + "skiploom" + ], + "eggGroups": [ + "Fairy", + "Grass" + ] + }, + "skiploom": { + "num": 188, + "species": "Skiploom", + "types": [ + "Grass", + "Flying" + ], + "baseStats": { + "hp": 55, + "atk": 45, + "def": 50, + "spa": 45, + "spd": 65, + "spe": 80 + }, + "abilities": { + "0": "Chlorophyll", + "1": "Leaf Guard", + "H": "Infiltrator" + }, + "heightm": 0.6, + "weightkg": 1, + "color": "Green", + "prevo": "hoppip", + "evos": [ + "jumpluff" + ], + "evoLevel": 18, + "eggGroups": [ + "Fairy", + "Grass" + ] + }, + "jumpluff": { + "num": 189, + "species": "Jumpluff", + "types": [ + "Grass", + "Flying" + ], + "baseStats": { + "hp": 75, + "atk": 55, + "def": 70, + "spa": 55, + "spd": 95, + "spe": 110 + }, + "abilities": { + "0": "Chlorophyll", + "1": "Leaf Guard", + "H": "Infiltrator" + }, + "heightm": 0.8, + "weightkg": 3, + "color": "Blue", + "prevo": "skiploom", + "evoLevel": 27, + "eggGroups": [ + "Fairy", + "Grass" + ] + }, + "aipom": { + "num": 190, + "species": "Aipom", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 55, + "atk": 70, + "def": 55, + "spa": 40, + "spd": 55, + "spe": 85 + }, + "abilities": { + "0": "Run Away", + "1": "Pickup", + "H": "Skill Link" + }, + "heightm": 0.8, + "weightkg": 11.5, + "color": "Purple", + "evos": [ + "ambipom" + ], + "eggGroups": [ + "Field" + ] + }, + "sunkern": { + "num": 191, + "species": "Sunkern", + "types": [ + "Grass" + ], + "baseStats": { + "hp": 30, + "atk": 30, + "def": 30, + "spa": 30, + "spd": 30, + "spe": 30 + }, + "abilities": { + "0": "Chlorophyll", + "1": "Solar Power", + "H": "Early Bird" + }, + "heightm": 0.3, + "weightkg": 1.8, + "color": "Yellow", + "evos": [ + "sunflora" + ], + "eggGroups": [ + "Grass" + ] + }, + "sunflora": { + "num": 192, + "species": "Sunflora", + "types": [ + "Grass" + ], + "baseStats": { + "hp": 75, + "atk": 75, + "def": 55, + "spa": 105, + "spd": 85, + "spe": 30 + }, + "abilities": { + "0": "Chlorophyll", + "1": "Solar Power", + "H": "Early Bird" + }, + "heightm": 0.8, + "weightkg": 8.5, + "color": "Yellow", + "prevo": "sunkern", + "evoLevel": 1, + "eggGroups": [ + "Grass" + ] + }, + "yanma": { + "num": 193, + "species": "Yanma", + "types": [ + "Bug", + "Flying" + ], + "baseStats": { + "hp": 65, + "atk": 65, + "def": 45, + "spa": 75, + "spd": 45, + "spe": 95 + }, + "abilities": { + "0": "Speed Boost", + "1": "Compound Eyes", + "H": "Frisk" + }, + "heightm": 1.2, + "weightkg": 38, + "color": "Red", + "evos": [ + "yanmega" + ], + "eggGroups": [ + "Bug" + ] + }, + "wooper": { + "num": 194, + "species": "Wooper", + "types": [ + "Water", + "Ground" + ], + "baseStats": { + "hp": 55, + "atk": 45, + "def": 45, + "spa": 25, + "spd": 25, + "spe": 15 + }, + "abilities": { + "0": "Damp", + "1": "Water Absorb", + "H": "Unaware" + }, + "heightm": 0.4, + "weightkg": 8.5, + "color": "Blue", + "evos": [ + "quagsire" + ], + "eggGroups": [ + "Water 1", + "Field" + ] + }, + "quagsire": { + "num": 195, + "species": "Quagsire", + "types": [ + "Water", + "Ground" + ], + "baseStats": { + "hp": 95, + "atk": 85, + "def": 85, + "spa": 65, + "spd": 65, + "spe": 35 + }, + "abilities": { + "0": "Damp", + "1": "Water Absorb", + "H": "Unaware" + }, + "heightm": 1.4, + "weightkg": 75, + "color": "Blue", + "prevo": "wooper", + "evoLevel": 20, + "eggGroups": [ + "Water 1", + "Field" + ] + }, + "espeon": { + "num": 196, + "species": "Espeon", + "types": [ + "Psychic" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 65, + "atk": 65, + "def": 60, + "spa": 130, + "spd": 95, + "spe": 110 + }, + "abilities": { + "0": "Synchronize", + "H": "Magic Bounce" + }, + "heightm": 0.9, + "weightkg": 26.5, + "color": "Purple", + "prevo": "eevee", + "evoLevel": 2, + "eggGroups": [ + "Field" + ] + }, + "umbreon": { + "num": 197, + "species": "Umbreon", + "types": [ + "Dark" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 95, + "atk": 65, + "def": 110, + "spa": 60, + "spd": 130, + "spe": 65 + }, + "abilities": { + "0": "Synchronize", + "H": "Inner Focus" + }, + "heightm": 1, + "weightkg": 27, + "color": "Black", + "prevo": "eevee", + "evoLevel": 2, + "eggGroups": [ + "Field" + ] + }, + "murkrow": { + "num": 198, + "species": "Murkrow", + "types": [ + "Dark", + "Flying" + ], + "baseStats": { + "hp": 60, + "atk": 85, + "def": 42, + "spa": 85, + "spd": 42, + "spe": 91 + }, + "abilities": { + "0": "Insomnia", + "1": "Super Luck", + "H": "Prankster" + }, + "heightm": 0.5, + "weightkg": 2.1, + "color": "Black", + "evos": [ + "honchkrow" + ], + "eggGroups": [ + "Flying" + ] + }, + "slowking": { + "num": 199, + "species": "Slowking", + "types": [ + "Water", + "Psychic" + ], + "baseStats": { + "hp": 95, + "atk": 75, + "def": 80, + "spa": 100, + "spd": 110, + "spe": 30 + }, + "abilities": { + "0": "Oblivious", + "1": "Own Tempo", + "H": "Regenerator" + }, + "heightm": 2, + "weightkg": 79.5, + "color": "Pink", + "prevo": "slowpoke", + "evoLevel": 1, + "eggGroups": [ + "Monster", + "Water 1" + ] + }, + "misdreavus": { + "num": 200, + "species": "Misdreavus", + "types": [ + "Ghost" + ], + "baseStats": { + "hp": 60, + "atk": 60, + "def": 60, + "spa": 85, + "spd": 85, + "spe": 85 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 0.7, + "weightkg": 1, + "color": "Gray", + "evos": [ + "mismagius" + ], + "eggGroups": [ + "Amorphous" + ] + }, + "unown": { + "num": 201, + "species": "Unown", + "baseForme": "A", + "types": [ + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 48, + "atk": 72, + "def": 48, + "spa": 72, + "spd": 48, + "spe": 48 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 0.5, + "weightkg": 5, + "color": "Black", + "eggGroups": [ + "Undiscovered" + ], + "otherForms": [ + "unownb", + "unownc", + "unownd", + "unowne", + "unownf", + "unowng", + "unownh", + "unowni", + "unownj", + "unownk", + "unownl", + "unownm", + "unownn", + "unowno", + "unownp", + "unownq", + "unownr", + "unowns", + "unownt", + "unownu", + "unownv", + "unownw", + "unownx", + "unowny", + "unownz", + "unownexclamation", + "unownquestion" + ] + }, + "wobbuffet": { + "num": 202, + "species": "Wobbuffet", + "types": [ + "Psychic" + ], + "baseStats": { + "hp": 190, + "atk": 33, + "def": 58, + "spa": 33, + "spd": 58, + "spe": 33 + }, + "abilities": { + "0": "Shadow Tag", + "H": "Telepathy" + }, + "heightm": 1.3, + "weightkg": 28.5, + "color": "Blue", + "prevo": "wynaut", + "evoLevel": 15, + "eggGroups": [ + "Amorphous" + ] + }, + "girafarig": { + "num": 203, + "species": "Girafarig", + "types": [ + "Normal", + "Psychic" + ], + "baseStats": { + "hp": 70, + "atk": 80, + "def": 65, + "spa": 90, + "spd": 65, + "spe": 85 + }, + "abilities": { + "0": "Inner Focus", + "1": "Early Bird", + "H": "Sap Sipper" + }, + "heightm": 1.5, + "weightkg": 41.5, + "color": "Yellow", + "eggGroups": [ + "Field" + ] + }, + "pineco": { + "num": 204, + "species": "Pineco", + "types": [ + "Bug" + ], + "baseStats": { + "hp": 50, + "atk": 65, + "def": 90, + "spa": 35, + "spd": 35, + "spe": 15 + }, + "abilities": { + "0": "Sturdy", + "H": "Overcoat" + }, + "heightm": 0.6, + "weightkg": 7.2, + "color": "Gray", + "evos": [ + "forretress" + ], + "eggGroups": [ + "Bug" + ] + }, + "forretress": { + "num": 205, + "species": "Forretress", + "types": [ + "Bug", + "Steel" + ], + "baseStats": { + "hp": 75, + "atk": 90, + "def": 140, + "spa": 60, + "spd": 60, + "spe": 40 + }, + "abilities": { + "0": "Sturdy", + "H": "Overcoat" + }, + "heightm": 1.2, + "weightkg": 125.8, + "color": "Purple", + "prevo": "pineco", + "evoLevel": 31, + "eggGroups": [ + "Bug" + ] + }, + "dunsparce": { + "num": 206, + "species": "Dunsparce", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 100, + "atk": 70, + "def": 70, + "spa": 65, + "spd": 65, + "spe": 45 + }, + "abilities": { + "0": "Serene Grace", + "1": "Run Away", + "H": "Rattled" + }, + "heightm": 1.5, + "weightkg": 14, + "color": "Yellow", + "eggGroups": [ + "Field" + ] + }, + "gligar": { + "num": 207, + "species": "Gligar", + "types": [ + "Ground", + "Flying" + ], + "baseStats": { + "hp": 65, + "atk": 75, + "def": 105, + "spa": 35, + "spd": 65, + "spe": 85 + }, + "abilities": { + "0": "Hyper Cutter", + "1": "Sand Veil", + "H": "Immunity" + }, + "heightm": 1.1, + "weightkg": 64.8, + "color": "Purple", + "evos": [ + "gliscor" + ], + "eggGroups": [ + "Bug" + ] + }, + "steelix": { + "num": 208, + "species": "Steelix", + "types": [ + "Steel", + "Ground" + ], + "baseStats": { + "hp": 75, + "atk": 85, + "def": 200, + "spa": 55, + "spd": 65, + "spe": 30 + }, + "abilities": { + "0": "Rock Head", + "1": "Sturdy", + "H": "Sheer Force" + }, + "heightm": 9.2, + "weightkg": 400, + "color": "Gray", + "prevo": "onix", + "evoLevel": 1, + "eggGroups": [ + "Mineral" + ], + "otherFormes": [ + "steelixmega" + ] + }, + "steelixmega": { + "num": 208, + "species": "Steelix-Mega", + "baseSpecies": "Steelix", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Steel", + "Ground" + ], + "baseStats": { + "hp": 75, + "atk": 125, + "def": 230, + "spa": 55, + "spd": 95, + "spe": 30 + }, + "abilities": { + "0": "Sand Force" + }, + "heightm": 10.5, + "weightkg": 740, + "color": "Gray", + "eggGroups": [ + "Mineral" + ] + }, + "snubbull": { + "num": 209, + "species": "Snubbull", + "types": [ + "Fairy" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 60, + "atk": 80, + "def": 50, + "spa": 40, + "spd": 40, + "spe": 30 + }, + "abilities": { + "0": "Intimidate", + "1": "Run Away", + "H": "Rattled" + }, + "heightm": 0.6, + "weightkg": 7.8, + "color": "Pink", + "evos": [ + "granbull" + ], + "eggGroups": [ + "Field", + "Fairy" + ] + }, + "granbull": { + "num": 210, + "species": "Granbull", + "types": [ + "Fairy" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 90, + "atk": 120, + "def": 75, + "spa": 60, + "spd": 60, + "spe": 45 + }, + "abilities": { + "0": "Intimidate", + "1": "Quick Feet", + "H": "Rattled" + }, + "heightm": 1.4, + "weightkg": 48.7, + "color": "Purple", + "prevo": "snubbull", + "evoLevel": 23, + "eggGroups": [ + "Field", + "Fairy" + ] + }, + "qwilfish": { + "num": 211, + "species": "Qwilfish", + "types": [ + "Water", + "Poison" + ], + "baseStats": { + "hp": 65, + "atk": 95, + "def": 75, + "spa": 55, + "spd": 55, + "spe": 85 + }, + "abilities": { + "0": "Poison Point", + "1": "Swift Swim", + "H": "Intimidate" + }, + "heightm": 0.5, + "weightkg": 3.9, + "color": "Gray", + "eggGroups": [ + "Water 2" + ] + }, + "scizor": { + "num": 212, + "species": "Scizor", + "types": [ + "Bug", + "Steel" + ], + "baseStats": { + "hp": 70, + "atk": 130, + "def": 100, + "spa": 55, + "spd": 80, + "spe": 65 + }, + "abilities": { + "0": "Swarm", + "1": "Technician", + "H": "Light Metal" + }, + "heightm": 1.8, + "weightkg": 118, + "color": "Red", + "prevo": "scyther", + "evoLevel": 1, + "eggGroups": [ + "Bug" + ], + "otherFormes": [ + "scizormega" + ] + }, + "scizormega": { + "num": 212, + "species": "Scizor-Mega", + "baseSpecies": "Scizor", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Bug", + "Steel" + ], + "baseStats": { + "hp": 70, + "atk": 150, + "def": 140, + "spa": 65, + "spd": 100, + "spe": 75 + }, + "abilities": { + "0": "Technician" + }, + "heightm": 2, + "weightkg": 125, + "color": "Red", + "eggGroups": [ + "Bug" + ] + }, + "shuckle": { + "num": 213, + "species": "Shuckle", + "types": [ + "Bug", + "Rock" + ], + "baseStats": { + "hp": 20, + "atk": 10, + "def": 230, + "spa": 10, + "spd": 230, + "spe": 5 + }, + "abilities": { + "0": "Sturdy", + "1": "Gluttony", + "H": "Contrary" + }, + "heightm": 0.6, + "weightkg": 20.5, + "color": "Yellow", + "eggGroups": [ + "Bug" + ] + }, + "heracross": { + "num": 214, + "species": "Heracross", + "types": [ + "Bug", + "Fighting" + ], + "baseStats": { + "hp": 80, + "atk": 125, + "def": 75, + "spa": 40, + "spd": 95, + "spe": 85 + }, + "abilities": { + "0": "Swarm", + "1": "Guts", + "H": "Moxie" + }, + "heightm": 1.5, + "weightkg": 54, + "color": "Blue", + "eggGroups": [ + "Bug" + ], + "otherFormes": [ + "heracrossmega" + ] + }, + "heracrossmega": { + "num": 214, + "species": "Heracross-Mega", + "baseSpecies": "Heracross", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Bug", + "Fighting" + ], + "baseStats": { + "hp": 80, + "atk": 185, + "def": 115, + "spa": 40, + "spd": 105, + "spe": 75 + }, + "abilities": { + "0": "Skill Link" + }, + "heightm": 1.7, + "weightkg": 62.5, + "color": "Blue", + "eggGroups": [ + "Bug" + ] + }, + "sneasel": { + "num": 215, + "species": "Sneasel", + "types": [ + "Dark", + "Ice" + ], + "baseStats": { + "hp": 55, + "atk": 95, + "def": 55, + "spa": 35, + "spd": 75, + "spe": 115 + }, + "abilities": { + "0": "Inner Focus", + "1": "Keen Eye", + "H": "Pickpocket" + }, + "heightm": 0.9, + "weightkg": 28, + "color": "Black", + "evos": [ + "weavile" + ], + "eggGroups": [ + "Field" + ] + }, + "teddiursa": { + "num": 216, + "species": "Teddiursa", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 60, + "atk": 80, + "def": 50, + "spa": 50, + "spd": 50, + "spe": 40 + }, + "abilities": { + "0": "Pickup", + "1": "Quick Feet", + "H": "Honey Gather" + }, + "heightm": 0.6, + "weightkg": 8.8, + "color": "Brown", + "evos": [ + "ursaring" + ], + "eggGroups": [ + "Field" + ] + }, + "ursaring": { + "num": 217, + "species": "Ursaring", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 90, + "atk": 130, + "def": 75, + "spa": 75, + "spd": 75, + "spe": 55 + }, + "abilities": { + "0": "Guts", + "1": "Quick Feet", + "H": "Unnerve" + }, + "heightm": 1.8, + "weightkg": 125.8, + "color": "Brown", + "prevo": "teddiursa", + "evoLevel": 30, + "eggGroups": [ + "Field" + ] + }, + "slugma": { + "num": 218, + "species": "Slugma", + "types": [ + "Fire" + ], + "baseStats": { + "hp": 40, + "atk": 40, + "def": 40, + "spa": 70, + "spd": 40, + "spe": 20 + }, + "abilities": { + "0": "Magma Armor", + "1": "Flame Body", + "H": "Weak Armor" + }, + "heightm": 0.7, + "weightkg": 35, + "color": "Red", + "evos": [ + "magcargo" + ], + "eggGroups": [ + "Amorphous" + ] + }, + "magcargo": { + "num": 219, + "species": "Magcargo", + "types": [ + "Fire", + "Rock" + ], + "baseStats": { + "hp": 50, + "atk": 50, + "def": 120, + "spa": 80, + "spd": 80, + "spe": 30 + }, + "abilities": { + "0": "Magma Armor", + "1": "Flame Body", + "H": "Weak Armor" + }, + "heightm": 0.8, + "weightkg": 55, + "color": "Red", + "prevo": "slugma", + "evoLevel": 38, + "eggGroups": [ + "Amorphous" + ] + }, + "swinub": { + "num": 220, + "species": "Swinub", + "types": [ + "Ice", + "Ground" + ], + "baseStats": { + "hp": 50, + "atk": 50, + "def": 40, + "spa": 30, + "spd": 30, + "spe": 50 + }, + "abilities": { + "0": "Oblivious", + "1": "Snow Cloak", + "H": "Thick Fat" + }, + "heightm": 0.4, + "weightkg": 6.5, + "color": "Brown", + "evos": [ + "piloswine" + ], + "eggGroups": [ + "Field" + ] + }, + "piloswine": { + "num": 221, + "species": "Piloswine", + "types": [ + "Ice", + "Ground" + ], + "baseStats": { + "hp": 100, + "atk": 100, + "def": 80, + "spa": 60, + "spd": 60, + "spe": 50 + }, + "abilities": { + "0": "Oblivious", + "1": "Snow Cloak", + "H": "Thick Fat" + }, + "heightm": 1.1, + "weightkg": 55.8, + "color": "Brown", + "prevo": "swinub", + "evos": [ + "mamoswine" + ], + "evoLevel": 33, + "eggGroups": [ + "Field" + ] + }, + "corsola": { + "num": 222, + "species": "Corsola", + "types": [ + "Water", + "Rock" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 55, + "atk": 55, + "def": 85, + "spa": 65, + "spd": 85, + "spe": 35 + }, + "abilities": { + "0": "Hustle", + "1": "Natural Cure", + "H": "Regenerator" + }, + "heightm": 0.6, + "weightkg": 5, + "color": "Pink", + "eggGroups": [ + "Water 1", + "Water 3" + ] + }, + "remoraid": { + "num": 223, + "species": "Remoraid", + "types": [ + "Water" + ], + "baseStats": { + "hp": 35, + "atk": 65, + "def": 35, + "spa": 65, + "spd": 35, + "spe": 65 + }, + "abilities": { + "0": "Hustle", + "1": "Sniper", + "H": "Moody" + }, + "heightm": 0.6, + "weightkg": 12, + "color": "Gray", + "evos": [ + "octillery" + ], + "eggGroups": [ + "Water 1", + "Water 2" + ] + }, + "octillery": { + "num": 224, + "species": "Octillery", + "types": [ + "Water" + ], + "baseStats": { + "hp": 75, + "atk": 105, + "def": 75, + "spa": 105, + "spd": 75, + "spe": 45 + }, + "abilities": { + "0": "Suction Cups", + "1": "Sniper", + "H": "Moody" + }, + "heightm": 0.9, + "weightkg": 28.5, + "color": "Red", + "prevo": "remoraid", + "evoLevel": 25, + "eggGroups": [ + "Water 1", + "Water 2" + ] + }, + "delibird": { + "num": 225, + "species": "Delibird", + "types": [ + "Ice", + "Flying" + ], + "baseStats": { + "hp": 45, + "atk": 55, + "def": 45, + "spa": 65, + "spd": 45, + "spe": 75 + }, + "abilities": { + "0": "Vital Spirit", + "1": "Hustle", + "H": "Insomnia" + }, + "heightm": 0.9, + "weightkg": 16, + "color": "Red", + "eggGroups": [ + "Water 1", + "Field" + ] + }, + "mantine": { + "num": 226, + "species": "Mantine", + "types": [ + "Water", + "Flying" + ], + "baseStats": { + "hp": 65, + "atk": 40, + "def": 70, + "spa": 80, + "spd": 140, + "spe": 70 + }, + "abilities": { + "0": "Swift Swim", + "1": "Water Absorb", + "H": "Water Veil" + }, + "heightm": 2.1, + "weightkg": 220, + "color": "Purple", + "prevo": "mantyke", + "evoLevel": 1, + "eggGroups": [ + "Water 1" + ] + }, + "skarmory": { + "num": 227, + "species": "Skarmory", + "types": [ + "Steel", + "Flying" + ], + "baseStats": { + "hp": 65, + "atk": 80, + "def": 140, + "spa": 40, + "spd": 70, + "spe": 70 + }, + "abilities": { + "0": "Keen Eye", + "1": "Sturdy", + "H": "Weak Armor" + }, + "heightm": 1.7, + "weightkg": 50.5, + "color": "Gray", + "eggGroups": [ + "Flying" + ] + }, + "houndour": { + "num": 228, + "species": "Houndour", + "types": [ + "Dark", + "Fire" + ], + "baseStats": { + "hp": 45, + "atk": 60, + "def": 30, + "spa": 80, + "spd": 50, + "spe": 65 + }, + "abilities": { + "0": "Early Bird", + "1": "Flash Fire", + "H": "Unnerve" + }, + "heightm": 0.6, + "weightkg": 10.8, + "color": "Black", + "evos": [ + "houndoom" + ], + "eggGroups": [ + "Field" + ] + }, + "houndoom": { + "num": 229, + "species": "Houndoom", + "types": [ + "Dark", + "Fire" + ], + "baseStats": { + "hp": 75, + "atk": 90, + "def": 50, + "spa": 110, + "spd": 80, + "spe": 95 + }, + "abilities": { + "0": "Early Bird", + "1": "Flash Fire", + "H": "Unnerve" + }, + "heightm": 1.4, + "weightkg": 35, + "color": "Black", + "prevo": "houndour", + "evoLevel": 24, + "eggGroups": [ + "Field" + ], + "otherFormes": [ + "houndoommega" + ] + }, + "houndoommega": { + "num": 229, + "species": "Houndoom-Mega", + "baseSpecies": "Houndoom", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Dark", + "Fire" + ], + "baseStats": { + "hp": 75, + "atk": 90, + "def": 90, + "spa": 140, + "spd": 90, + "spe": 115 + }, + "abilities": { + "0": "Solar Power" + }, + "heightm": 1.9, + "weightkg": 49.5, + "color": "Black", + "eggGroups": [ + "Field" + ] + }, + "kingdra": { + "num": 230, + "species": "Kingdra", + "types": [ + "Water", + "Dragon" + ], + "baseStats": { + "hp": 75, + "atk": 95, + "def": 95, + "spa": 95, + "spd": 95, + "spe": 85 + }, + "abilities": { + "0": "Swift Swim", + "1": "Sniper", + "H": "Damp" + }, + "heightm": 1.8, + "weightkg": 152, + "color": "Blue", + "prevo": "seadra", + "evoLevel": 32, + "eggGroups": [ + "Water 1", + "Dragon" + ] + }, + "phanpy": { + "num": 231, + "species": "Phanpy", + "types": [ + "Ground" + ], + "baseStats": { + "hp": 90, + "atk": 60, + "def": 60, + "spa": 40, + "spd": 40, + "spe": 40 + }, + "abilities": { + "0": "Pickup", + "H": "Sand Veil" + }, + "heightm": 0.5, + "weightkg": 33.5, + "color": "Blue", + "evos": [ + "donphan" + ], + "eggGroups": [ + "Field" + ] + }, + "donphan": { + "num": 232, + "species": "Donphan", + "types": [ + "Ground" + ], + "baseStats": { + "hp": 90, + "atk": 120, + "def": 120, + "spa": 60, + "spd": 60, + "spe": 50 + }, + "abilities": { + "0": "Sturdy", + "H": "Sand Veil" + }, + "heightm": 1.1, + "weightkg": 120, + "color": "Gray", + "prevo": "phanpy", + "evoLevel": 25, + "eggGroups": [ + "Field" + ] + }, + "porygon2": { + "num": 233, + "species": "Porygon2", + "types": [ + "Normal" + ], + "gender": "N", + "baseStats": { + "hp": 85, + "atk": 80, + "def": 90, + "spa": 105, + "spd": 95, + "spe": 60 + }, + "abilities": { + "0": "Trace", + "1": "Download", + "H": "Analytic" + }, + "heightm": 0.6, + "weightkg": 32.5, + "color": "Red", + "prevo": "porygon", + "evos": [ + "porygonz" + ], + "evoLevel": 1, + "eggGroups": [ + "Mineral" + ] + }, + "stantler": { + "num": 234, + "species": "Stantler", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 73, + "atk": 95, + "def": 62, + "spa": 85, + "spd": 65, + "spe": 85 + }, + "abilities": { + "0": "Intimidate", + "1": "Frisk", + "H": "Sap Sipper" + }, + "heightm": 1.4, + "weightkg": 71.2, + "color": "Brown", + "eggGroups": [ + "Field" + ] + }, + "smeargle": { + "num": 235, + "species": "Smeargle", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 55, + "atk": 20, + "def": 35, + "spa": 20, + "spd": 45, + "spe": 75 + }, + "abilities": { + "0": "Own Tempo", + "1": "Technician", + "H": "Moody" + }, + "heightm": 1.2, + "weightkg": 58, + "color": "White", + "eggGroups": [ + "Field" + ] + }, + "tyrogue": { + "num": 236, + "species": "Tyrogue", + "types": [ + "Fighting" + ], + "gender": "M", + "baseStats": { + "hp": 35, + "atk": 35, + "def": 35, + "spa": 35, + "spd": 35, + "spe": 35 + }, + "abilities": { + "0": "Guts", + "1": "Steadfast", + "H": "Vital Spirit" + }, + "heightm": 0.7, + "weightkg": 21, + "color": "Purple", + "evos": [ + "hitmonlee", + "hitmonchan", + "hitmontop" + ], + "eggGroups": [ + "Undiscovered" + ] + }, + "hitmontop": { + "num": 237, + "species": "Hitmontop", + "types": [ + "Fighting" + ], + "gender": "M", + "baseStats": { + "hp": 50, + "atk": 95, + "def": 95, + "spa": 35, + "spd": 110, + "spe": 70 + }, + "abilities": { + "0": "Intimidate", + "1": "Technician", + "H": "Steadfast" + }, + "heightm": 1.4, + "weightkg": 48, + "color": "Brown", + "prevo": "tyrogue", + "evoLevel": 20, + "eggGroups": [ + "Human-Like" + ] + }, + "smoochum": { + "num": 238, + "species": "Smoochum", + "types": [ + "Ice", + "Psychic" + ], + "gender": "F", + "baseStats": { + "hp": 45, + "atk": 30, + "def": 15, + "spa": 85, + "spd": 65, + "spe": 65 + }, + "abilities": { + "0": "Oblivious", + "1": "Forewarn", + "H": "Hydration" + }, + "heightm": 0.4, + "weightkg": 6, + "color": "Pink", + "evos": [ + "jynx" + ], + "eggGroups": [ + "Undiscovered" + ] + }, + "elekid": { + "num": 239, + "species": "Elekid", + "types": [ + "Electric" + ], + "genderRatio": { + "M": 0.75, + "F": 0.25 + }, + "baseStats": { + "hp": 45, + "atk": 63, + "def": 37, + "spa": 65, + "spd": 55, + "spe": 95 + }, + "abilities": { + "0": "Static", + "H": "Vital Spirit" + }, + "heightm": 0.6, + "weightkg": 23.5, + "color": "Yellow", + "evos": [ + "electabuzz" + ], + "eggGroups": [ + "Undiscovered" + ] + }, + "magby": { + "num": 240, + "species": "Magby", + "types": [ + "Fire" + ], + "genderRatio": { + "M": 0.75, + "F": 0.25 + }, + "baseStats": { + "hp": 45, + "atk": 75, + "def": 37, + "spa": 70, + "spd": 55, + "spe": 83 + }, + "abilities": { + "0": "Flame Body", + "H": "Vital Spirit" + }, + "heightm": 0.7, + "weightkg": 21.4, + "color": "Red", + "evos": [ + "magmar" + ], + "eggGroups": [ + "Undiscovered" + ] + }, + "miltank": { + "num": 241, + "species": "Miltank", + "types": [ + "Normal" + ], + "gender": "F", + "baseStats": { + "hp": 95, + "atk": 80, + "def": 105, + "spa": 40, + "spd": 70, + "spe": 100 + }, + "abilities": { + "0": "Thick Fat", + "1": "Scrappy", + "H": "Sap Sipper" + }, + "heightm": 1.2, + "weightkg": 75.5, + "color": "Pink", + "eggGroups": [ + "Field" + ] + }, + "blissey": { + "num": 242, + "species": "Blissey", + "types": [ + "Normal" + ], + "gender": "F", + "baseStats": { + "hp": 255, + "atk": 10, + "def": 10, + "spa": 75, + "spd": 135, + "spe": 55 + }, + "abilities": { + "0": "Natural Cure", + "1": "Serene Grace", + "H": "Healer" + }, + "heightm": 1.5, + "weightkg": 46.8, + "color": "Pink", + "prevo": "chansey", + "evoLevel": 2, + "eggGroups": [ + "Fairy" + ] + }, + "raikou": { + "num": 243, + "species": "Raikou", + "types": [ + "Electric" + ], + "gender": "N", + "baseStats": { + "hp": 90, + "atk": 85, + "def": 75, + "spa": 115, + "spd": 100, + "spe": 115 + }, + "abilities": { + "0": "Pressure", + "H": "Volt Absorb" + }, + "heightm": 1.9, + "weightkg": 178, + "color": "Yellow", + "eggGroups": [ + "Undiscovered" + ] + }, + "entei": { + "num": 244, + "species": "Entei", + "types": [ + "Fire" + ], + "gender": "N", + "baseStats": { + "hp": 115, + "atk": 115, + "def": 85, + "spa": 90, + "spd": 75, + "spe": 100 + }, + "abilities": { + "0": "Pressure", + "H": "Flash Fire" + }, + "heightm": 2.1, + "weightkg": 198, + "color": "Brown", + "eggGroups": [ + "Undiscovered" + ] + }, + "suicune": { + "num": 245, + "species": "Suicune", + "types": [ + "Water" + ], + "gender": "N", + "baseStats": { + "hp": 100, + "atk": 75, + "def": 115, + "spa": 90, + "spd": 115, + "spe": 85 + }, + "abilities": { + "0": "Pressure", + "H": "Water Absorb" + }, + "heightm": 2, + "weightkg": 187, + "color": "Blue", + "eggGroups": [ + "Undiscovered" + ] + }, + "larvitar": { + "num": 246, + "species": "Larvitar", + "types": [ + "Rock", + "Ground" + ], + "baseStats": { + "hp": 50, + "atk": 64, + "def": 50, + "spa": 45, + "spd": 50, + "spe": 41 + }, + "abilities": { + "0": "Guts", + "H": "Sand Veil" + }, + "heightm": 0.6, + "weightkg": 72, + "color": "Green", + "evos": [ + "pupitar" + ], + "eggGroups": [ + "Monster" + ] + }, + "pupitar": { + "num": 247, + "species": "Pupitar", + "types": [ + "Rock", + "Ground" + ], + "baseStats": { + "hp": 70, + "atk": 84, + "def": 70, + "spa": 65, + "spd": 70, + "spe": 51 + }, + "abilities": { + "0": "Shed Skin" + }, + "heightm": 1.2, + "weightkg": 152, + "color": "Gray", + "prevo": "larvitar", + "evos": [ + "tyranitar" + ], + "evoLevel": 30, + "eggGroups": [ + "Monster" + ] + }, + "tyranitar": { + "num": 248, + "species": "Tyranitar", + "types": [ + "Rock", + "Dark" + ], + "baseStats": { + "hp": 100, + "atk": 134, + "def": 110, + "spa": 95, + "spd": 100, + "spe": 61 + }, + "abilities": { + "0": "Sand Stream", + "H": "Unnerve" + }, + "heightm": 2, + "weightkg": 202, + "color": "Green", + "prevo": "pupitar", + "evoLevel": 55, + "eggGroups": [ + "Monster" + ], + "otherFormes": [ + "tyranitarmega" + ] + }, + "tyranitarmega": { + "num": 248, + "species": "Tyranitar-Mega", + "baseSpecies": "Tyranitar", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Rock", + "Dark" + ], + "baseStats": { + "hp": 100, + "atk": 164, + "def": 150, + "spa": 95, + "spd": 120, + "spe": 71 + }, + "abilities": { + "0": "Sand Stream" + }, + "heightm": 2.5, + "weightkg": 255, + "color": "Green", + "eggGroups": [ + "Monster" + ] + }, + "lugia": { + "num": 249, + "species": "Lugia", + "types": [ + "Psychic", + "Flying" + ], + "gender": "N", + "baseStats": { + "hp": 106, + "atk": 90, + "def": 130, + "spa": 90, + "spd": 154, + "spe": 110 + }, + "abilities": { + "0": "Pressure", + "H": "Multiscale" + }, + "heightm": 5.2, + "weightkg": 216, + "color": "White", + "eggGroups": [ + "Undiscovered" + ] + }, + "hooh": { + "num": 250, + "species": "Ho-Oh", + "types": [ + "Fire", + "Flying" + ], + "gender": "N", + "baseStats": { + "hp": 106, + "atk": 130, + "def": 90, + "spa": 110, + "spd": 154, + "spe": 90 + }, + "abilities": { + "0": "Pressure", + "H": "Regenerator" + }, + "heightm": 3.8, + "weightkg": 199, + "color": "Red", + "eggGroups": [ + "Undiscovered" + ] + }, + "celebi": { + "num": 251, + "species": "Celebi", + "types": [ + "Psychic", + "Grass" + ], + "gender": "N", + "baseStats": { + "hp": 100, + "atk": 100, + "def": 100, + "spa": 100, + "spd": 100, + "spe": 100 + }, + "abilities": { + "0": "Natural Cure" + }, + "heightm": 0.6, + "weightkg": 5, + "color": "Green", + "eggGroups": [ + "Undiscovered" + ] + }, + "treecko": { + "num": 252, + "species": "Treecko", + "types": [ + "Grass" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 40, + "atk": 45, + "def": 35, + "spa": 65, + "spd": 55, + "spe": 70 + }, + "abilities": { + "0": "Overgrow", + "H": "Unburden" + }, + "heightm": 0.5, + "weightkg": 5, + "color": "Green", + "evos": [ + "grovyle" + ], + "eggGroups": [ + "Monster", + "Dragon" + ] + }, + "grovyle": { + "num": 253, + "species": "Grovyle", + "types": [ + "Grass" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 50, + "atk": 65, + "def": 45, + "spa": 85, + "spd": 65, + "spe": 95 + }, + "abilities": { + "0": "Overgrow", + "H": "Unburden" + }, + "heightm": 0.9, + "weightkg": 21.6, + "color": "Green", + "prevo": "treecko", + "evos": [ + "sceptile" + ], + "evoLevel": 16, + "eggGroups": [ + "Monster", + "Dragon" + ] + }, + "sceptile": { + "num": 254, + "species": "Sceptile", + "types": [ + "Grass" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 70, + "atk": 85, + "def": 65, + "spa": 105, + "spd": 85, + "spe": 120 + }, + "abilities": { + "0": "Overgrow", + "H": "Unburden" + }, + "heightm": 1.7, + "weightkg": 52.2, + "color": "Green", + "prevo": "grovyle", + "evoLevel": 36, + "eggGroups": [ + "Monster", + "Dragon" + ], + "otherFormes": [ + "sceptilemega" + ] + }, + "sceptilemega": { + "num": 254, + "species": "Sceptile-Mega", + "baseSpecies": "Sceptile", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Grass", + "Dragon" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 70, + "atk": 110, + "def": 75, + "spa": 145, + "spd": 85, + "spe": 145 + }, + "abilities": { + "0": "Lightning Rod" + }, + "heightm": 1.9, + "weightkg": 55.2, + "color": "Green", + "eggGroups": [ + "Monster", + "Dragon" + ] + }, + "torchic": { + "num": 255, + "species": "Torchic", + "types": [ + "Fire" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 45, + "atk": 60, + "def": 40, + "spa": 70, + "spd": 50, + "spe": 45 + }, + "abilities": { + "0": "Blaze", + "H": "Speed Boost" + }, + "heightm": 0.4, + "weightkg": 2.5, + "color": "Red", + "evos": [ + "combusken" + ], + "eggGroups": [ + "Field" + ] + }, + "combusken": { + "num": 256, + "species": "Combusken", + "types": [ + "Fire", + "Fighting" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 60, + "atk": 85, + "def": 60, + "spa": 85, + "spd": 60, + "spe": 55 + }, + "abilities": { + "0": "Blaze", + "H": "Speed Boost" + }, + "heightm": 0.9, + "weightkg": 19.5, + "color": "Red", + "prevo": "torchic", + "evos": [ + "blaziken" + ], + "evoLevel": 16, + "eggGroups": [ + "Field" + ] + }, + "blaziken": { + "num": 257, + "species": "Blaziken", + "types": [ + "Fire", + "Fighting" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 80, + "atk": 120, + "def": 70, + "spa": 110, + "spd": 70, + "spe": 80 + }, + "abilities": { + "0": "Blaze", + "H": "Speed Boost" + }, + "heightm": 1.9, + "weightkg": 52, + "color": "Red", + "prevo": "combusken", + "evoLevel": 36, + "eggGroups": [ + "Field" + ], + "otherFormes": [ + "blazikenmega" + ] + }, + "blazikenmega": { + "num": 257, + "species": "Blaziken-Mega", + "baseSpecies": "Blaziken", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Fire", + "Fighting" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 80, + "atk": 160, + "def": 80, + "spa": 130, + "spd": 80, + "spe": 100 + }, + "abilities": { + "0": "Speed Boost" + }, + "heightm": 1.9, + "weightkg": 52, + "color": "Red", + "eggGroups": [ + "Field" + ] + }, + "mudkip": { + "num": 258, + "species": "Mudkip", + "types": [ + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 50, + "atk": 70, + "def": 50, + "spa": 50, + "spd": 50, + "spe": 40 + }, + "abilities": { + "0": "Torrent", + "H": "Damp" + }, + "heightm": 0.4, + "weightkg": 7.6, + "color": "Blue", + "evos": [ + "marshtomp" + ], + "eggGroups": [ + "Monster", + "Water 1" + ] + }, + "marshtomp": { + "num": 259, + "species": "Marshtomp", + "types": [ + "Water", + "Ground" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 70, + "atk": 85, + "def": 70, + "spa": 60, + "spd": 70, + "spe": 50 + }, + "abilities": { + "0": "Torrent", + "H": "Damp" + }, + "heightm": 0.7, + "weightkg": 28, + "color": "Blue", + "prevo": "mudkip", + "evos": [ + "swampert" + ], + "evoLevel": 16, + "eggGroups": [ + "Monster", + "Water 1" + ] + }, + "swampert": { + "num": 260, + "species": "Swampert", + "types": [ + "Water", + "Ground" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 100, + "atk": 110, + "def": 90, + "spa": 85, + "spd": 90, + "spe": 60 + }, + "abilities": { + "0": "Torrent", + "H": "Damp" + }, + "heightm": 1.5, + "weightkg": 81.9, + "color": "Blue", + "prevo": "marshtomp", + "evoLevel": 36, + "eggGroups": [ + "Monster", + "Water 1" + ], + "otherFormes": [ + "swampertmega" + ] + }, + "swampertmega": { + "num": 260, + "species": "Swampert-Mega", + "baseSpecies": "Swampert", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Water", + "Ground" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 100, + "atk": 150, + "def": 110, + "spa": 95, + "spd": 110, + "spe": 70 + }, + "abilities": { + "0": "Swift Swim" + }, + "heightm": 1.9, + "weightkg": 102, + "color": "Blue", + "eggGroups": [ + "Monster", + "Water 1" + ] + }, + "poochyena": { + "num": 261, + "species": "Poochyena", + "types": [ + "Dark" + ], + "baseStats": { + "hp": 35, + "atk": 55, + "def": 35, + "spa": 30, + "spd": 30, + "spe": 35 + }, + "abilities": { + "0": "Run Away", + "1": "Quick Feet", + "H": "Rattled" + }, + "heightm": 0.5, + "weightkg": 13.6, + "color": "Gray", + "evos": [ + "mightyena" + ], + "eggGroups": [ + "Field" + ] + }, + "mightyena": { + "num": 262, + "species": "Mightyena", + "types": [ + "Dark" + ], + "baseStats": { + "hp": 70, + "atk": 90, + "def": 70, + "spa": 60, + "spd": 60, + "spe": 70 + }, + "abilities": { + "0": "Intimidate", + "1": "Quick Feet", + "H": "Moxie" + }, + "heightm": 1, + "weightkg": 37, + "color": "Gray", + "prevo": "poochyena", + "evoLevel": 18, + "eggGroups": [ + "Field" + ] + }, + "zigzagoon": { + "num": 263, + "species": "Zigzagoon", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 38, + "atk": 30, + "def": 41, + "spa": 30, + "spd": 41, + "spe": 60 + }, + "abilities": { + "0": "Pickup", + "1": "Gluttony", + "H": "Quick Feet" + }, + "heightm": 0.4, + "weightkg": 17.5, + "color": "Brown", + "evos": [ + "linoone" + ], + "eggGroups": [ + "Field" + ] + }, + "linoone": { + "num": 264, + "species": "Linoone", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 78, + "atk": 70, + "def": 61, + "spa": 50, + "spd": 61, + "spe": 100 + }, + "abilities": { + "0": "Pickup", + "1": "Gluttony", + "H": "Quick Feet" + }, + "heightm": 0.5, + "weightkg": 32.5, + "color": "White", + "prevo": "zigzagoon", + "evoLevel": 20, + "eggGroups": [ + "Field" + ] + }, + "wurmple": { + "num": 265, + "species": "Wurmple", + "types": [ + "Bug" + ], + "baseStats": { + "hp": 45, + "atk": 45, + "def": 35, + "spa": 20, + "spd": 30, + "spe": 20 + }, + "abilities": { + "0": "Shield Dust", + "H": "Run Away" + }, + "heightm": 0.3, + "weightkg": 3.6, + "color": "Red", + "evos": [ + "silcoon", + "cascoon" + ], + "eggGroups": [ + "Bug" + ] + }, + "silcoon": { + "num": 266, + "species": "Silcoon", + "types": [ + "Bug" + ], + "baseStats": { + "hp": 50, + "atk": 35, + "def": 55, + "spa": 25, + "spd": 25, + "spe": 15 + }, + "abilities": { + "0": "Shed Skin" + }, + "heightm": 0.6, + "weightkg": 10, + "color": "White", + "prevo": "wurmple", + "evos": [ + "beautifly" + ], + "evoLevel": 7, + "eggGroups": [ + "Bug" + ] + }, + "beautifly": { + "num": 267, + "species": "Beautifly", + "types": [ + "Bug", + "Flying" + ], + "baseStats": { + "hp": 60, + "atk": 70, + "def": 50, + "spa": 100, + "spd": 50, + "spe": 65 + }, + "abilities": { + "0": "Swarm", + "H": "Rivalry" + }, + "heightm": 1, + "weightkg": 28.4, + "color": "Yellow", + "prevo": "silcoon", + "evoLevel": 10, + "eggGroups": [ + "Bug" + ] + }, + "cascoon": { + "num": 268, + "species": "Cascoon", + "types": [ + "Bug" + ], + "baseStats": { + "hp": 50, + "atk": 35, + "def": 55, + "spa": 25, + "spd": 25, + "spe": 15 + }, + "abilities": { + "0": "Shed Skin" + }, + "heightm": 0.7, + "weightkg": 11.5, + "color": "Purple", + "prevo": "wurmple", + "evos": [ + "dustox" + ], + "evoLevel": 7, + "eggGroups": [ + "Bug" + ] + }, + "dustox": { + "num": 269, + "species": "Dustox", + "types": [ + "Bug", + "Poison" + ], + "baseStats": { + "hp": 60, + "atk": 50, + "def": 70, + "spa": 50, + "spd": 90, + "spe": 65 + }, + "abilities": { + "0": "Shield Dust", + "H": "Compound Eyes" + }, + "heightm": 1.2, + "weightkg": 31.6, + "color": "Green", + "prevo": "cascoon", + "evoLevel": 10, + "eggGroups": [ + "Bug" + ] + }, + "lotad": { + "num": 270, + "species": "Lotad", + "types": [ + "Water", + "Grass" + ], + "baseStats": { + "hp": 40, + "atk": 30, + "def": 30, + "spa": 40, + "spd": 50, + "spe": 30 + }, + "abilities": { + "0": "Swift Swim", + "1": "Rain Dish", + "H": "Own Tempo" + }, + "heightm": 0.5, + "weightkg": 2.6, + "color": "Green", + "evos": [ + "lombre" + ], + "eggGroups": [ + "Water 1", + "Grass" + ] + }, + "lombre": { + "num": 271, + "species": "Lombre", + "types": [ + "Water", + "Grass" + ], + "baseStats": { + "hp": 60, + "atk": 50, + "def": 50, + "spa": 60, + "spd": 70, + "spe": 50 + }, + "abilities": { + "0": "Swift Swim", + "1": "Rain Dish", + "H": "Own Tempo" + }, + "heightm": 1.2, + "weightkg": 32.5, + "color": "Green", + "prevo": "lotad", + "evos": [ + "ludicolo" + ], + "evoLevel": 14, + "eggGroups": [ + "Water 1", + "Grass" + ] + }, + "ludicolo": { + "num": 272, + "species": "Ludicolo", + "types": [ + "Water", + "Grass" + ], + "baseStats": { + "hp": 80, + "atk": 70, + "def": 70, + "spa": 90, + "spd": 100, + "spe": 70 + }, + "abilities": { + "0": "Swift Swim", + "1": "Rain Dish", + "H": "Own Tempo" + }, + "heightm": 1.5, + "weightkg": 55, + "color": "Green", + "prevo": "lombre", + "evoLevel": 14, + "eggGroups": [ + "Water 1", + "Grass" + ] + }, + "seedot": { + "num": 273, + "species": "Seedot", + "types": [ + "Grass" + ], + "baseStats": { + "hp": 40, + "atk": 40, + "def": 50, + "spa": 30, + "spd": 30, + "spe": 30 + }, + "abilities": { + "0": "Chlorophyll", + "1": "Early Bird", + "H": "Pickpocket" + }, + "heightm": 0.5, + "weightkg": 4, + "color": "Brown", + "evos": [ + "nuzleaf" + ], + "eggGroups": [ + "Field", + "Grass" + ] + }, + "nuzleaf": { + "num": 274, + "species": "Nuzleaf", + "types": [ + "Grass", + "Dark" + ], + "baseStats": { + "hp": 70, + "atk": 70, + "def": 40, + "spa": 60, + "spd": 40, + "spe": 60 + }, + "abilities": { + "0": "Chlorophyll", + "1": "Early Bird", + "H": "Pickpocket" + }, + "heightm": 1, + "weightkg": 28, + "color": "Brown", + "prevo": "seedot", + "evos": [ + "shiftry" + ], + "evoLevel": 14, + "eggGroups": [ + "Field", + "Grass" + ] + }, + "shiftry": { + "num": 275, + "species": "Shiftry", + "types": [ + "Grass", + "Dark" + ], + "baseStats": { + "hp": 90, + "atk": 100, + "def": 60, + "spa": 90, + "spd": 60, + "spe": 80 + }, + "abilities": { + "0": "Chlorophyll", + "1": "Early Bird", + "H": "Pickpocket" + }, + "heightm": 1.3, + "weightkg": 59.6, + "color": "Brown", + "prevo": "nuzleaf", + "evoLevel": 14, + "eggGroups": [ + "Field", + "Grass" + ] + }, + "taillow": { + "num": 276, + "species": "Taillow", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 40, + "atk": 55, + "def": 30, + "spa": 30, + "spd": 30, + "spe": 85 + }, + "abilities": { + "0": "Guts", + "H": "Scrappy" + }, + "heightm": 0.3, + "weightkg": 2.3, + "color": "Blue", + "evos": [ + "swellow" + ], + "eggGroups": [ + "Flying" + ] + }, + "swellow": { + "num": 277, + "species": "Swellow", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 60, + "atk": 85, + "def": 60, + "spa": 50, + "spd": 50, + "spe": 125 + }, + "abilities": { + "0": "Guts", + "H": "Scrappy" + }, + "heightm": 0.7, + "weightkg": 19.8, + "color": "Blue", + "prevo": "taillow", + "evoLevel": 22, + "eggGroups": [ + "Flying" + ] + }, + "wingull": { + "num": 278, + "species": "Wingull", + "types": [ + "Water", + "Flying" + ], + "baseStats": { + "hp": 40, + "atk": 30, + "def": 30, + "spa": 55, + "spd": 30, + "spe": 85 + }, + "abilities": { + "0": "Keen Eye", + "H": "Rain Dish" + }, + "heightm": 0.6, + "weightkg": 9.5, + "color": "White", + "evos": [ + "pelipper" + ], + "eggGroups": [ + "Water 1", + "Flying" + ] + }, + "pelipper": { + "num": 279, + "species": "Pelipper", + "types": [ + "Water", + "Flying" + ], + "baseStats": { + "hp": 60, + "atk": 50, + "def": 100, + "spa": 85, + "spd": 70, + "spe": 65 + }, + "abilities": { + "0": "Keen Eye", + "H": "Rain Dish" + }, + "heightm": 1.2, + "weightkg": 28, + "color": "Yellow", + "prevo": "wingull", + "evoLevel": 25, + "eggGroups": [ + "Water 1", + "Flying" + ] + }, + "ralts": { + "num": 280, + "species": "Ralts", + "types": [ + "Psychic", + "Fairy" + ], + "baseStats": { + "hp": 28, + "atk": 25, + "def": 25, + "spa": 45, + "spd": 35, + "spe": 40 + }, + "abilities": { + "0": "Synchronize", + "1": "Trace", + "H": "Telepathy" + }, + "heightm": 0.4, + "weightkg": 6.6, + "color": "White", + "evos": [ + "kirlia" + ], + "eggGroups": [ + "Amorphous" + ] + }, + "kirlia": { + "num": 281, + "species": "Kirlia", + "types": [ + "Psychic", + "Fairy" + ], + "baseStats": { + "hp": 38, + "atk": 35, + "def": 35, + "spa": 65, + "spd": 55, + "spe": 50 + }, + "abilities": { + "0": "Synchronize", + "1": "Trace", + "H": "Telepathy" + }, + "heightm": 0.8, + "weightkg": 20.2, + "color": "White", + "prevo": "ralts", + "evos": [ + "gardevoir", + "gallade" + ], + "evoLevel": 20, + "eggGroups": [ + "Amorphous" + ] + }, + "gardevoir": { + "num": 282, + "species": "Gardevoir", + "types": [ + "Psychic", + "Fairy" + ], + "baseStats": { + "hp": 68, + "atk": 65, + "def": 65, + "spa": 125, + "spd": 115, + "spe": 80 + }, + "abilities": { + "0": "Synchronize", + "1": "Trace", + "H": "Telepathy" + }, + "heightm": 1.6, + "weightkg": 48.4, + "color": "White", + "prevo": "kirlia", + "evoLevel": 30, + "eggGroups": [ + "Amorphous" + ], + "otherFormes": [ + "gardevoirmega" + ] + }, + "gardevoirmega": { + "num": 282, + "species": "Gardevoir-Mega", + "baseSpecies": "Gardevoir", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Psychic", + "Fairy" + ], + "baseStats": { + "hp": 68, + "atk": 85, + "def": 65, + "spa": 165, + "spd": 135, + "spe": 100 + }, + "abilities": { + "0": "Pixilate" + }, + "heightm": 1.6, + "weightkg": 48.4, + "color": "White", + "eggGroups": [ + "Amorphous" + ] + }, + "surskit": { + "num": 283, + "species": "Surskit", + "types": [ + "Bug", + "Water" + ], + "baseStats": { + "hp": 40, + "atk": 30, + "def": 32, + "spa": 50, + "spd": 52, + "spe": 65 + }, + "abilities": { + "0": "Swift Swim", + "H": "Rain Dish" + }, + "heightm": 0.5, + "weightkg": 1.7, + "color": "Blue", + "evos": [ + "masquerain" + ], + "eggGroups": [ + "Water 1", + "Bug" + ] + }, + "masquerain": { + "num": 284, + "species": "Masquerain", + "types": [ + "Bug", + "Flying" + ], + "baseStats": { + "hp": 70, + "atk": 60, + "def": 62, + "spa": 80, + "spd": 82, + "spe": 60 + }, + "abilities": { + "0": "Intimidate", + "H": "Unnerve" + }, + "heightm": 0.8, + "weightkg": 3.6, + "color": "Blue", + "prevo": "surskit", + "evoLevel": 22, + "eggGroups": [ + "Water 1", + "Bug" + ] + }, + "shroomish": { + "num": 285, + "species": "Shroomish", + "types": [ + "Grass" + ], + "baseStats": { + "hp": 60, + "atk": 40, + "def": 60, + "spa": 40, + "spd": 60, + "spe": 35 + }, + "abilities": { + "0": "Effect Spore", + "1": "Poison Heal", + "H": "Quick Feet" + }, + "heightm": 0.4, + "weightkg": 4.5, + "color": "Brown", + "evos": [ + "breloom" + ], + "eggGroups": [ + "Fairy", + "Grass" + ] + }, + "breloom": { + "num": 286, + "species": "Breloom", + "types": [ + "Grass", + "Fighting" + ], + "baseStats": { + "hp": 60, + "atk": 130, + "def": 80, + "spa": 60, + "spd": 60, + "spe": 70 + }, + "abilities": { + "0": "Effect Spore", + "1": "Poison Heal", + "H": "Technician" + }, + "heightm": 1.2, + "weightkg": 39.2, + "color": "Green", + "prevo": "shroomish", + "evoLevel": 23, + "eggGroups": [ + "Fairy", + "Grass" + ] + }, + "slakoth": { + "num": 287, + "species": "Slakoth", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 60, + "atk": 60, + "def": 60, + "spa": 35, + "spd": 35, + "spe": 30 + }, + "abilities": { + "0": "Truant" + }, + "heightm": 0.8, + "weightkg": 24, + "color": "Brown", + "evos": [ + "vigoroth" + ], + "eggGroups": [ + "Field" + ] + }, + "vigoroth": { + "num": 288, + "species": "Vigoroth", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 80, + "atk": 80, + "def": 80, + "spa": 55, + "spd": 55, + "spe": 90 + }, + "abilities": { + "0": "Vital Spirit" + }, + "heightm": 1.4, + "weightkg": 46.5, + "color": "White", + "prevo": "slakoth", + "evos": [ + "slaking" + ], + "evoLevel": 18, + "eggGroups": [ + "Field" + ] + }, + "slaking": { + "num": 289, + "species": "Slaking", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 150, + "atk": 160, + "def": 100, + "spa": 95, + "spd": 65, + "spe": 100 + }, + "abilities": { + "0": "Truant" + }, + "heightm": 2, + "weightkg": 130.5, + "color": "Brown", + "prevo": "vigoroth", + "evoLevel": 36, + "eggGroups": [ + "Field" + ] + }, + "nincada": { + "num": 290, + "species": "Nincada", + "types": [ + "Bug", + "Ground" + ], + "baseStats": { + "hp": 31, + "atk": 45, + "def": 90, + "spa": 30, + "spd": 30, + "spe": 40 + }, + "abilities": { + "0": "Compound Eyes", + "H": "Run Away" + }, + "heightm": 0.5, + "weightkg": 5.5, + "color": "Gray", + "evos": [ + "ninjask", + "shedinja" + ], + "eggGroups": [ + "Bug" + ] + }, + "ninjask": { + "num": 291, + "species": "Ninjask", + "types": [ + "Bug", + "Flying" + ], + "baseStats": { + "hp": 61, + "atk": 90, + "def": 45, + "spa": 50, + "spd": 50, + "spe": 160 + }, + "abilities": { + "0": "Speed Boost", + "H": "Infiltrator" + }, + "heightm": 0.8, + "weightkg": 12, + "color": "Yellow", + "prevo": "nincada", + "evoLevel": 20, + "eggGroups": [ + "Bug" + ] + }, + "shedinja": { + "num": 292, + "species": "Shedinja", + "types": [ + "Bug", + "Ghost" + ], + "gender": "N", + "baseStats": { + "hp": 1, + "atk": 90, + "def": 45, + "spa": 30, + "spd": 30, + "spe": 40 + }, + "maxHP": 1, + "abilities": { + "0": "Wonder Guard" + }, + "heightm": 0.8, + "weightkg": 1.2, + "color": "Brown", + "prevo": "nincada", + "evoLevel": 20, + "eggGroups": [ + "Mineral" + ] + }, + "whismur": { + "num": 293, + "species": "Whismur", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 64, + "atk": 51, + "def": 23, + "spa": 51, + "spd": 23, + "spe": 28 + }, + "abilities": { + "0": "Soundproof", + "H": "Rattled" + }, + "heightm": 0.6, + "weightkg": 16.3, + "color": "Pink", + "evos": [ + "loudred" + ], + "eggGroups": [ + "Monster", + "Field" + ] + }, + "loudred": { + "num": 294, + "species": "Loudred", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 84, + "atk": 71, + "def": 43, + "spa": 71, + "spd": 43, + "spe": 48 + }, + "abilities": { + "0": "Soundproof", + "H": "Scrappy" + }, + "heightm": 1, + "weightkg": 40.5, + "color": "Blue", + "prevo": "whismur", + "evos": [ + "exploud" + ], + "evoLevel": 20, + "eggGroups": [ + "Monster", + "Field" + ] + }, + "exploud": { + "num": 295, + "species": "Exploud", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 104, + "atk": 91, + "def": 63, + "spa": 91, + "spd": 73, + "spe": 68 + }, + "abilities": { + "0": "Soundproof", + "H": "Scrappy" + }, + "heightm": 1.5, + "weightkg": 84, + "color": "Blue", + "prevo": "loudred", + "evoLevel": 40, + "eggGroups": [ + "Monster", + "Field" + ] + }, + "makuhita": { + "num": 296, + "species": "Makuhita", + "types": [ + "Fighting" + ], + "genderRatio": { + "M": 0.75, + "F": 0.25 + }, + "baseStats": { + "hp": 72, + "atk": 60, + "def": 30, + "spa": 20, + "spd": 30, + "spe": 25 + }, + "abilities": { + "0": "Thick Fat", + "1": "Guts", + "H": "Sheer Force" + }, + "heightm": 1, + "weightkg": 86.4, + "color": "Yellow", + "evos": [ + "hariyama" + ], + "eggGroups": [ + "Human-Like" + ] + }, + "hariyama": { + "num": 297, + "species": "Hariyama", + "types": [ + "Fighting" + ], + "genderRatio": { + "M": 0.75, + "F": 0.25 + }, + "baseStats": { + "hp": 144, + "atk": 120, + "def": 60, + "spa": 40, + "spd": 60, + "spe": 50 + }, + "abilities": { + "0": "Thick Fat", + "1": "Guts", + "H": "Sheer Force" + }, + "heightm": 2.3, + "weightkg": 253.8, + "color": "Brown", + "prevo": "makuhita", + "evoLevel": 24, + "eggGroups": [ + "Human-Like" + ] + }, + "azurill": { + "num": 298, + "species": "Azurill", + "types": [ + "Normal", + "Fairy" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 50, + "atk": 20, + "def": 40, + "spa": 20, + "spd": 40, + "spe": 20 + }, + "abilities": { + "0": "Thick Fat", + "1": "Huge Power", + "H": "Sap Sipper" + }, + "heightm": 0.2, + "weightkg": 2, + "color": "Blue", + "evos": [ + "marill" + ], + "eggGroups": [ + "Undiscovered" + ] + }, + "nosepass": { + "num": 299, + "species": "Nosepass", + "types": [ + "Rock" + ], + "baseStats": { + "hp": 30, + "atk": 45, + "def": 135, + "spa": 45, + "spd": 90, + "spe": 30 + }, + "abilities": { + "0": "Sturdy", + "1": "Magnet Pull", + "H": "Sand Force" + }, + "heightm": 1, + "weightkg": 97, + "color": "Gray", + "evos": [ + "probopass" + ], + "eggGroups": [ + "Mineral" + ] + }, + "skitty": { + "num": 300, + "species": "Skitty", + "types": [ + "Normal" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 50, + "atk": 45, + "def": 45, + "spa": 35, + "spd": 35, + "spe": 50 + }, + "abilities": { + "0": "Cute Charm", + "1": "Normalize", + "H": "Wonder Skin" + }, + "heightm": 0.6, + "weightkg": 11, + "color": "Pink", + "evos": [ + "delcatty" + ], + "eggGroups": [ + "Field", + "Fairy" + ] + }, + "delcatty": { + "num": 301, + "species": "Delcatty", + "types": [ + "Normal" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 70, + "atk": 65, + "def": 65, + "spa": 55, + "spd": 55, + "spe": 70 + }, + "abilities": { + "0": "Cute Charm", + "1": "Normalize", + "H": "Wonder Skin" + }, + "heightm": 1.1, + "weightkg": 32.6, + "color": "Purple", + "prevo": "skitty", + "evoLevel": 1, + "eggGroups": [ + "Field", + "Fairy" + ] + }, + "sableye": { + "num": 302, + "species": "Sableye", + "types": [ + "Dark", + "Ghost" + ], + "baseStats": { + "hp": 50, + "atk": 75, + "def": 75, + "spa": 65, + "spd": 65, + "spe": 50 + }, + "abilities": { + "0": "Keen Eye", + "1": "Stall", + "H": "Prankster" + }, + "heightm": 0.5, + "weightkg": 11, + "color": "Purple", + "eggGroups": [ + "Human-Like" + ], + "otherFormes": [ + "sableyemega" + ] + }, + "sableyemega": { + "num": 302, + "species": "Sableye-Mega", + "baseSpecies": "Sableye", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Dark", + "Ghost" + ], + "baseStats": { + "hp": 50, + "atk": 85, + "def": 125, + "spa": 85, + "spd": 115, + "spe": 20 + }, + "abilities": { + "0": "Magic Bounce" + }, + "heightm": 0.5, + "weightkg": 161, + "color": "Purple", + "eggGroups": [ + "Human-Like" + ] + }, + "mawile": { + "num": 303, + "species": "Mawile", + "types": [ + "Steel", + "Fairy" + ], + "baseStats": { + "hp": 50, + "atk": 85, + "def": 85, + "spa": 55, + "spd": 55, + "spe": 50 + }, + "abilities": { + "0": "Hyper Cutter", + "1": "Intimidate", + "H": "Sheer Force" + }, + "heightm": 0.6, + "weightkg": 11.5, + "color": "Black", + "eggGroups": [ + "Field", + "Fairy" + ], + "otherFormes": [ + "mawilemega" + ] + }, + "mawilemega": { + "num": 303, + "species": "Mawile-Mega", + "baseSpecies": "Mawile", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Steel", + "Fairy" + ], + "baseStats": { + "hp": 50, + "atk": 105, + "def": 125, + "spa": 55, + "spd": 95, + "spe": 50 + }, + "abilities": { + "0": "Huge Power" + }, + "heightm": 1, + "weightkg": 23.5, + "color": "Black", + "eggGroups": [ + "Field", + "Fairy" + ] + }, + "aron": { + "num": 304, + "species": "Aron", + "types": [ + "Steel", + "Rock" + ], + "baseStats": { + "hp": 50, + "atk": 70, + "def": 100, + "spa": 40, + "spd": 40, + "spe": 30 + }, + "abilities": { + "0": "Sturdy", + "1": "Rock Head", + "H": "Heavy Metal" + }, + "heightm": 0.4, + "weightkg": 60, + "color": "Gray", + "evos": [ + "lairon" + ], + "eggGroups": [ + "Monster" + ] + }, + "lairon": { + "num": 305, + "species": "Lairon", + "types": [ + "Steel", + "Rock" + ], + "baseStats": { + "hp": 60, + "atk": 90, + "def": 140, + "spa": 50, + "spd": 50, + "spe": 40 + }, + "abilities": { + "0": "Sturdy", + "1": "Rock Head", + "H": "Heavy Metal" + }, + "heightm": 0.9, + "weightkg": 120, + "color": "Gray", + "prevo": "aron", + "evos": [ + "aggron" + ], + "evoLevel": 32, + "eggGroups": [ + "Monster" + ] + }, + "aggron": { + "num": 306, + "species": "Aggron", + "types": [ + "Steel", + "Rock" + ], + "baseStats": { + "hp": 70, + "atk": 110, + "def": 180, + "spa": 60, + "spd": 60, + "spe": 50 + }, + "abilities": { + "0": "Sturdy", + "1": "Rock Head", + "H": "Heavy Metal" + }, + "heightm": 2.1, + "weightkg": 360, + "color": "Gray", + "prevo": "lairon", + "evoLevel": 42, + "eggGroups": [ + "Monster" + ], + "otherFormes": [ + "aggronmega" + ] + }, + "aggronmega": { + "num": 306, + "species": "Aggron-Mega", + "baseSpecies": "Aggron", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Steel" + ], + "baseStats": { + "hp": 70, + "atk": 140, + "def": 230, + "spa": 60, + "spd": 80, + "spe": 50 + }, + "abilities": { + "0": "Filter" + }, + "heightm": 2.2, + "weightkg": 395, + "color": "Gray", + "eggGroups": [ + "Monster" + ] + }, + "meditite": { + "num": 307, + "species": "Meditite", + "types": [ + "Fighting", + "Psychic" + ], + "baseStats": { + "hp": 30, + "atk": 40, + "def": 55, + "spa": 40, + "spd": 55, + "spe": 60 + }, + "abilities": { + "0": "Pure Power", + "H": "Telepathy" + }, + "heightm": 0.6, + "weightkg": 11.2, + "color": "Blue", + "evos": [ + "medicham" + ], + "eggGroups": [ + "Human-Like" + ] + }, + "medicham": { + "num": 308, + "species": "Medicham", + "types": [ + "Fighting", + "Psychic" + ], + "baseStats": { + "hp": 60, + "atk": 60, + "def": 75, + "spa": 60, + "spd": 75, + "spe": 80 + }, + "abilities": { + "0": "Pure Power", + "H": "Telepathy" + }, + "heightm": 1.3, + "weightkg": 31.5, + "color": "Red", + "prevo": "meditite", + "evoLevel": 37, + "eggGroups": [ + "Human-Like" + ], + "otherFormes": [ + "medichammega" + ] + }, + "medichammega": { + "num": 308, + "species": "Medicham-Mega", + "baseSpecies": "Medicham", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Fighting", + "Psychic" + ], + "baseStats": { + "hp": 60, + "atk": 100, + "def": 85, + "spa": 80, + "spd": 85, + "spe": 100 + }, + "abilities": { + "0": "Pure Power" + }, + "heightm": 1.3, + "weightkg": 31.5, + "color": "Red", + "eggGroups": [ + "Human-Like" + ] + }, + "electrike": { + "num": 309, + "species": "Electrike", + "types": [ + "Electric" + ], + "baseStats": { + "hp": 40, + "atk": 45, + "def": 40, + "spa": 65, + "spd": 40, + "spe": 65 + }, + "abilities": { + "0": "Static", + "1": "Lightning Rod", + "H": "Minus" + }, + "heightm": 0.6, + "weightkg": 15.2, + "color": "Green", + "evos": [ + "manectric" + ], + "eggGroups": [ + "Field" + ] + }, + "manectric": { + "num": 310, + "species": "Manectric", + "types": [ + "Electric" + ], + "baseStats": { + "hp": 70, + "atk": 75, + "def": 60, + "spa": 105, + "spd": 60, + "spe": 105 + }, + "abilities": { + "0": "Static", + "1": "Lightning Rod", + "H": "Minus" + }, + "heightm": 1.5, + "weightkg": 40.2, + "color": "Yellow", + "prevo": "electrike", + "evoLevel": 26, + "eggGroups": [ + "Field" + ], + "otherFormes": [ + "manectricmega" + ] + }, + "manectricmega": { + "num": 310, + "species": "Manectric-Mega", + "baseSpecies": "Manectric", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Electric" + ], + "baseStats": { + "hp": 70, + "atk": 75, + "def": 80, + "spa": 135, + "spd": 80, + "spe": 135 + }, + "abilities": { + "0": "Intimidate" + }, + "heightm": 1.8, + "weightkg": 44, + "color": "Yellow", + "eggGroups": [ + "Field" + ] + }, + "plusle": { + "num": 311, + "species": "Plusle", + "types": [ + "Electric" + ], + "baseStats": { + "hp": 60, + "atk": 50, + "def": 40, + "spa": 85, + "spd": 75, + "spe": 95 + }, + "abilities": { + "0": "Plus", + "H": "Lightning Rod" + }, + "heightm": 0.4, + "weightkg": 4.2, + "color": "Yellow", + "eggGroups": [ + "Fairy" + ] + }, + "minun": { + "num": 312, + "species": "Minun", + "types": [ + "Electric" + ], + "baseStats": { + "hp": 60, + "atk": 40, + "def": 50, + "spa": 75, + "spd": 85, + "spe": 95 + }, + "abilities": { + "0": "Minus", + "H": "Volt Absorb" + }, + "heightm": 0.4, + "weightkg": 4.2, + "color": "Yellow", + "eggGroups": [ + "Fairy" + ] + }, + "volbeat": { + "num": 313, + "species": "Volbeat", + "types": [ + "Bug" + ], + "gender": "M", + "baseStats": { + "hp": 65, + "atk": 73, + "def": 55, + "spa": 47, + "spd": 75, + "spe": 85 + }, + "abilities": { + "0": "Illuminate", + "1": "Swarm", + "H": "Prankster" + }, + "heightm": 0.7, + "weightkg": 17.7, + "color": "Gray", + "eggGroups": [ + "Bug", + "Human-Like" + ] + }, + "illumise": { + "num": 314, + "species": "Illumise", + "types": [ + "Bug" + ], + "gender": "F", + "baseStats": { + "hp": 65, + "atk": 47, + "def": 55, + "spa": 73, + "spd": 75, + "spe": 85 + }, + "abilities": { + "0": "Oblivious", + "1": "Tinted Lens", + "H": "Prankster" + }, + "heightm": 0.6, + "weightkg": 17.7, + "color": "Purple", + "eggGroups": [ + "Bug", + "Human-Like" + ] + }, + "roselia": { + "num": 315, + "species": "Roselia", + "types": [ + "Grass", + "Poison" + ], + "baseStats": { + "hp": 50, + "atk": 60, + "def": 45, + "spa": 100, + "spd": 80, + "spe": 65 + }, + "abilities": { + "0": "Natural Cure", + "1": "Poison Point", + "H": "Leaf Guard" + }, + "heightm": 0.3, + "weightkg": 2, + "color": "Green", + "prevo": "budew", + "evos": [ + "roserade" + ], + "evoLevel": 1, + "eggGroups": [ + "Fairy", + "Grass" + ] + }, + "gulpin": { + "num": 316, + "species": "Gulpin", + "types": [ + "Poison" + ], + "baseStats": { + "hp": 70, + "atk": 43, + "def": 53, + "spa": 43, + "spd": 53, + "spe": 40 + }, + "abilities": { + "0": "Liquid Ooze", + "1": "Sticky Hold", + "H": "Gluttony" + }, + "heightm": 0.4, + "weightkg": 10.3, + "color": "Green", + "evos": [ + "swalot" + ], + "eggGroups": [ + "Amorphous" + ] + }, + "swalot": { + "num": 317, + "species": "Swalot", + "types": [ + "Poison" + ], + "baseStats": { + "hp": 100, + "atk": 73, + "def": 83, + "spa": 73, + "spd": 83, + "spe": 55 + }, + "abilities": { + "0": "Liquid Ooze", + "1": "Sticky Hold", + "H": "Gluttony" + }, + "heightm": 1.7, + "weightkg": 80, + "color": "Purple", + "prevo": "gulpin", + "evoLevel": 26, + "eggGroups": [ + "Amorphous" + ] + }, + "carvanha": { + "num": 318, + "species": "Carvanha", + "types": [ + "Water", + "Dark" + ], + "baseStats": { + "hp": 45, + "atk": 90, + "def": 20, + "spa": 65, + "spd": 20, + "spe": 65 + }, + "abilities": { + "0": "Rough Skin", + "H": "Speed Boost" + }, + "heightm": 0.8, + "weightkg": 20.8, + "color": "Red", + "evos": [ + "sharpedo" + ], + "eggGroups": [ + "Water 2" + ] + }, + "sharpedo": { + "num": 319, + "species": "Sharpedo", + "types": [ + "Water", + "Dark" + ], + "baseStats": { + "hp": 70, + "atk": 120, + "def": 40, + "spa": 95, + "spd": 40, + "spe": 95 + }, + "abilities": { + "0": "Rough Skin", + "H": "Speed Boost" + }, + "heightm": 1.8, + "weightkg": 88.8, + "color": "Blue", + "prevo": "carvanha", + "evoLevel": 30, + "eggGroups": [ + "Water 2" + ], + "otherFormes": [ + "sharpedomega" + ] + }, + "sharpedomega": { + "num": 319, + "species": "Sharpedo-Mega", + "baseSpecies": "Sharpedo", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Water", + "Dark" + ], + "baseStats": { + "hp": 70, + "atk": 140, + "def": 70, + "spa": 110, + "spd": 65, + "spe": 105 + }, + "abilities": { + "0": "Strong Jaw" + }, + "heightm": 2.5, + "weightkg": 130.3, + "color": "Blue", + "eggGroups": [ + "Water 2" + ] + }, + "wailmer": { + "num": 320, + "species": "Wailmer", + "types": [ + "Water" + ], + "baseStats": { + "hp": 130, + "atk": 70, + "def": 35, + "spa": 70, + "spd": 35, + "spe": 60 + }, + "abilities": { + "0": "Water Veil", + "1": "Oblivious", + "H": "Pressure" + }, + "heightm": 2, + "weightkg": 130, + "color": "Blue", + "evos": [ + "wailord" + ], + "eggGroups": [ + "Field", + "Water 2" + ] + }, + "wailord": { + "num": 321, + "species": "Wailord", + "types": [ + "Water" + ], + "baseStats": { + "hp": 170, + "atk": 90, + "def": 45, + "spa": 90, + "spd": 45, + "spe": 60 + }, + "abilities": { + "0": "Water Veil", + "1": "Oblivious", + "H": "Pressure" + }, + "heightm": 14.5, + "weightkg": 398, + "color": "Blue", + "prevo": "wailmer", + "evoLevel": 40, + "eggGroups": [ + "Field", + "Water 2" + ] + }, + "numel": { + "num": 322, + "species": "Numel", + "types": [ + "Fire", + "Ground" + ], + "baseStats": { + "hp": 60, + "atk": 60, + "def": 40, + "spa": 65, + "spd": 45, + "spe": 35 + }, + "abilities": { + "0": "Oblivious", + "1": "Simple", + "H": "Own Tempo" + }, + "heightm": 0.7, + "weightkg": 24, + "color": "Yellow", + "evos": [ + "camerupt" + ], + "eggGroups": [ + "Field" + ] + }, + "camerupt": { + "num": 323, + "species": "Camerupt", + "types": [ + "Fire", + "Ground" + ], + "baseStats": { + "hp": 70, + "atk": 100, + "def": 70, + "spa": 105, + "spd": 75, + "spe": 40 + }, + "abilities": { + "0": "Magma Armor", + "1": "Solid Rock", + "H": "Anger Point" + }, + "heightm": 1.9, + "weightkg": 220, + "color": "Red", + "prevo": "numel", + "evoLevel": 33, + "eggGroups": [ + "Field" + ], + "otherFormes": [ + "cameruptmega" + ] + }, + "cameruptmega": { + "num": 323, + "species": "Camerupt-Mega", + "baseSpecies": "Camerupt", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Fire", + "Ground" + ], + "baseStats": { + "hp": 70, + "atk": 120, + "def": 100, + "spa": 145, + "spd": 105, + "spe": 20 + }, + "abilities": { + "0": "Sheer Force" + }, + "heightm": 2.5, + "weightkg": 320.5, + "color": "Red", + "eggGroups": [ + "Field" + ] + }, + "torkoal": { + "num": 324, + "species": "Torkoal", + "types": [ + "Fire" + ], + "baseStats": { + "hp": 70, + "atk": 85, + "def": 140, + "spa": 85, + "spd": 70, + "spe": 20 + }, + "abilities": { + "0": "White Smoke", + "H": "Shell Armor" + }, + "heightm": 0.5, + "weightkg": 80.4, + "color": "Brown", + "eggGroups": [ + "Field" + ] + }, + "spoink": { + "num": 325, + "species": "Spoink", + "types": [ + "Psychic" + ], + "baseStats": { + "hp": 60, + "atk": 25, + "def": 35, + "spa": 70, + "spd": 80, + "spe": 60 + }, + "abilities": { + "0": "Thick Fat", + "1": "Own Tempo", + "H": "Gluttony" + }, + "heightm": 0.7, + "weightkg": 30.6, + "color": "Black", + "evos": [ + "grumpig" + ], + "eggGroups": [ + "Field" + ] + }, + "grumpig": { + "num": 326, + "species": "Grumpig", + "types": [ + "Psychic" + ], + "baseStats": { + "hp": 80, + "atk": 45, + "def": 65, + "spa": 90, + "spd": 110, + "spe": 80 + }, + "abilities": { + "0": "Thick Fat", + "1": "Own Tempo", + "H": "Gluttony" + }, + "heightm": 0.9, + "weightkg": 71.5, + "color": "Purple", + "prevo": "spoink", + "evoLevel": 32, + "eggGroups": [ + "Field" + ] + }, + "spinda": { + "num": 327, + "species": "Spinda", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 60, + "atk": 60, + "def": 60, + "spa": 60, + "spd": 60, + "spe": 60 + }, + "abilities": { + "0": "Own Tempo", + "1": "Tangled Feet", + "H": "Contrary" + }, + "heightm": 1.1, + "weightkg": 5, + "color": "Brown", + "eggGroups": [ + "Field", + "Human-Like" + ] + }, + "trapinch": { + "num": 328, + "species": "Trapinch", + "types": [ + "Ground" + ], + "baseStats": { + "hp": 45, + "atk": 100, + "def": 45, + "spa": 45, + "spd": 45, + "spe": 10 + }, + "abilities": { + "0": "Hyper Cutter", + "1": "Arena Trap", + "H": "Sheer Force" + }, + "heightm": 0.7, + "weightkg": 15, + "color": "Brown", + "evos": [ + "vibrava" + ], + "eggGroups": [ + "Bug" + ] + }, + "vibrava": { + "num": 329, + "species": "Vibrava", + "types": [ + "Ground", + "Dragon" + ], + "baseStats": { + "hp": 50, + "atk": 70, + "def": 50, + "spa": 50, + "spd": 50, + "spe": 70 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 1.1, + "weightkg": 15.3, + "color": "Green", + "prevo": "trapinch", + "evos": [ + "flygon" + ], + "evoLevel": 35, + "eggGroups": [ + "Bug" + ] + }, + "flygon": { + "num": 330, + "species": "Flygon", + "types": [ + "Ground", + "Dragon" + ], + "baseStats": { + "hp": 80, + "atk": 100, + "def": 80, + "spa": 80, + "spd": 80, + "spe": 100 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 2, + "weightkg": 82, + "color": "Green", + "prevo": "vibrava", + "evoLevel": 45, + "eggGroups": [ + "Bug" + ] + }, + "cacnea": { + "num": 331, + "species": "Cacnea", + "types": [ + "Grass" + ], + "baseStats": { + "hp": 50, + "atk": 85, + "def": 40, + "spa": 85, + "spd": 40, + "spe": 35 + }, + "abilities": { + "0": "Sand Veil", + "H": "Water Absorb" + }, + "heightm": 0.4, + "weightkg": 51.3, + "color": "Green", + "evos": [ + "cacturne" + ], + "eggGroups": [ + "Grass", + "Human-Like" + ] + }, + "cacturne": { + "num": 332, + "species": "Cacturne", + "types": [ + "Grass", + "Dark" + ], + "baseStats": { + "hp": 70, + "atk": 115, + "def": 60, + "spa": 115, + "spd": 60, + "spe": 55 + }, + "abilities": { + "0": "Sand Veil", + "H": "Water Absorb" + }, + "heightm": 1.3, + "weightkg": 77.4, + "color": "Green", + "prevo": "cacnea", + "evoLevel": 32, + "eggGroups": [ + "Grass", + "Human-Like" + ] + }, + "swablu": { + "num": 333, + "species": "Swablu", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 45, + "atk": 40, + "def": 60, + "spa": 40, + "spd": 75, + "spe": 50 + }, + "abilities": { + "0": "Natural Cure", + "H": "Cloud Nine" + }, + "heightm": 0.4, + "weightkg": 1.2, + "color": "Blue", + "evos": [ + "altaria" + ], + "eggGroups": [ + "Flying", + "Dragon" + ] + }, + "altaria": { + "num": 334, + "species": "Altaria", + "types": [ + "Dragon", + "Flying" + ], + "baseStats": { + "hp": 75, + "atk": 70, + "def": 90, + "spa": 70, + "spd": 105, + "spe": 80 + }, + "abilities": { + "0": "Natural Cure", + "H": "Cloud Nine" + }, + "heightm": 1.1, + "weightkg": 20.6, + "color": "Blue", + "prevo": "swablu", + "evoLevel": 35, + "eggGroups": [ + "Flying", + "Dragon" + ], + "otherFormes": [ + "altariamega" + ] + }, + "altariamega": { + "num": 334, + "species": "Altaria-Mega", + "baseSpecies": "Altaria", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Dragon", + "Fairy" + ], + "baseStats": { + "hp": 75, + "atk": 110, + "def": 110, + "spa": 110, + "spd": 105, + "spe": 80 + }, + "abilities": { + "0": "Pixilate" + }, + "heightm": 1.5, + "weightkg": 20.6, + "color": "Blue", + "eggGroups": [ + "Flying", + "Dragon" + ] + }, + "zangoose": { + "num": 335, + "species": "Zangoose", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 73, + "atk": 115, + "def": 60, + "spa": 60, + "spd": 60, + "spe": 90 + }, + "abilities": { + "0": "Immunity", + "H": "Toxic Boost" + }, + "heightm": 1.3, + "weightkg": 40.3, + "color": "White", + "eggGroups": [ + "Field" + ] + }, + "seviper": { + "num": 336, + "species": "Seviper", + "types": [ + "Poison" + ], + "baseStats": { + "hp": 73, + "atk": 100, + "def": 60, + "spa": 100, + "spd": 60, + "spe": 65 + }, + "abilities": { + "0": "Shed Skin", + "H": "Infiltrator" + }, + "heightm": 2.7, + "weightkg": 52.5, + "color": "Black", + "eggGroups": [ + "Field", + "Dragon" + ] + }, + "lunatone": { + "num": 337, + "species": "Lunatone", + "types": [ + "Rock", + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 70, + "atk": 55, + "def": 65, + "spa": 95, + "spd": 85, + "spe": 70 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 1, + "weightkg": 168, + "color": "Yellow", + "eggGroups": [ + "Mineral" + ] + }, + "solrock": { + "num": 338, + "species": "Solrock", + "types": [ + "Rock", + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 70, + "atk": 95, + "def": 85, + "spa": 55, + "spd": 65, + "spe": 70 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 1.2, + "weightkg": 154, + "color": "Red", + "eggGroups": [ + "Mineral" + ] + }, + "barboach": { + "num": 339, + "species": "Barboach", + "types": [ + "Water", + "Ground" + ], + "baseStats": { + "hp": 50, + "atk": 48, + "def": 43, + "spa": 46, + "spd": 41, + "spe": 60 + }, + "abilities": { + "0": "Oblivious", + "1": "Anticipation", + "H": "Hydration" + }, + "heightm": 0.4, + "weightkg": 1.9, + "color": "Gray", + "evos": [ + "whiscash" + ], + "eggGroups": [ + "Water 2" + ] + }, + "whiscash": { + "num": 340, + "species": "Whiscash", + "types": [ + "Water", + "Ground" + ], + "baseStats": { + "hp": 110, + "atk": 78, + "def": 73, + "spa": 76, + "spd": 71, + "spe": 60 + }, + "abilities": { + "0": "Oblivious", + "1": "Anticipation", + "H": "Hydration" + }, + "heightm": 0.9, + "weightkg": 23.6, + "color": "Blue", + "prevo": "barboach", + "evoLevel": 30, + "eggGroups": [ + "Water 2" + ] + }, + "corphish": { + "num": 341, + "species": "Corphish", + "types": [ + "Water" + ], + "baseStats": { + "hp": 43, + "atk": 80, + "def": 65, + "spa": 50, + "spd": 35, + "spe": 35 + }, + "abilities": { + "0": "Hyper Cutter", + "1": "Shell Armor", + "H": "Adaptability" + }, + "heightm": 0.6, + "weightkg": 11.5, + "color": "Red", + "evos": [ + "crawdaunt" + ], + "eggGroups": [ + "Water 1", + "Water 3" + ] + }, + "crawdaunt": { + "num": 342, + "species": "Crawdaunt", + "types": [ + "Water", + "Dark" + ], + "baseStats": { + "hp": 63, + "atk": 120, + "def": 85, + "spa": 90, + "spd": 55, + "spe": 55 + }, + "abilities": { + "0": "Hyper Cutter", + "1": "Shell Armor", + "H": "Adaptability" + }, + "heightm": 1.1, + "weightkg": 32.8, + "color": "Red", + "prevo": "corphish", + "evoLevel": 30, + "eggGroups": [ + "Water 1", + "Water 3" + ] + }, + "baltoy": { + "num": 343, + "species": "Baltoy", + "types": [ + "Ground", + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 40, + "atk": 40, + "def": 55, + "spa": 40, + "spd": 70, + "spe": 55 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 0.5, + "weightkg": 21.5, + "color": "Brown", + "evos": [ + "claydol" + ], + "eggGroups": [ + "Mineral" + ] + }, + "claydol": { + "num": 344, + "species": "Claydol", + "types": [ + "Ground", + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 60, + "atk": 70, + "def": 105, + "spa": 70, + "spd": 120, + "spe": 75 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 1.5, + "weightkg": 108, + "color": "Black", + "prevo": "baltoy", + "evoLevel": 36, + "eggGroups": [ + "Mineral" + ] + }, + "lileep": { + "num": 345, + "species": "Lileep", + "types": [ + "Rock", + "Grass" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 66, + "atk": 41, + "def": 77, + "spa": 61, + "spd": 87, + "spe": 23 + }, + "abilities": { + "0": "Suction Cups", + "H": "Storm Drain" + }, + "heightm": 1, + "weightkg": 23.8, + "color": "Purple", + "evos": [ + "cradily" + ], + "eggGroups": [ + "Water 3" + ] + }, + "cradily": { + "num": 346, + "species": "Cradily", + "types": [ + "Rock", + "Grass" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 86, + "atk": 81, + "def": 97, + "spa": 81, + "spd": 107, + "spe": 43 + }, + "abilities": { + "0": "Suction Cups", + "H": "Storm Drain" + }, + "heightm": 1.5, + "weightkg": 60.4, + "color": "Green", + "prevo": "lileep", + "evoLevel": 40, + "eggGroups": [ + "Water 3" + ] + }, + "anorith": { + "num": 347, + "species": "Anorith", + "types": [ + "Rock", + "Bug" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 45, + "atk": 95, + "def": 50, + "spa": 40, + "spd": 50, + "spe": 75 + }, + "abilities": { + "0": "Battle Armor", + "H": "Swift Swim" + }, + "heightm": 0.7, + "weightkg": 12.5, + "color": "Gray", + "evos": [ + "armaldo" + ], + "eggGroups": [ + "Water 3" + ] + }, + "armaldo": { + "num": 348, + "species": "Armaldo", + "types": [ + "Rock", + "Bug" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 75, + "atk": 125, + "def": 100, + "spa": 70, + "spd": 80, + "spe": 45 + }, + "abilities": { + "0": "Battle Armor", + "H": "Swift Swim" + }, + "heightm": 1.5, + "weightkg": 68.2, + "color": "Gray", + "prevo": "anorith", + "evoLevel": 40, + "eggGroups": [ + "Water 3" + ] + }, + "feebas": { + "num": 349, + "species": "Feebas", + "types": [ + "Water" + ], + "baseStats": { + "hp": 20, + "atk": 15, + "def": 20, + "spa": 10, + "spd": 55, + "spe": 80 + }, + "abilities": { + "0": "Swift Swim", + "1": "Oblivious", + "H": "Adaptability" + }, + "heightm": 0.6, + "weightkg": 7.4, + "color": "Brown", + "evos": [ + "milotic" + ], + "eggGroups": [ + "Water 1", + "Dragon" + ] + }, + "milotic": { + "num": 350, + "species": "Milotic", + "types": [ + "Water" + ], + "baseStats": { + "hp": 95, + "atk": 60, + "def": 79, + "spa": 100, + "spd": 125, + "spe": 81 + }, + "abilities": { + "0": "Marvel Scale", + "1": "Competitive", + "H": "Cute Charm" + }, + "heightm": 6.2, + "weightkg": 162, + "color": "Pink", + "prevo": "feebas", + "evoLevel": 1, + "eggGroups": [ + "Water 1", + "Dragon" + ] + }, + "castform": { + "num": 351, + "species": "Castform", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 70, + "atk": 70, + "def": 70, + "spa": 70, + "spd": 70, + "spe": 70 + }, + "abilities": { + "0": "Forecast" + }, + "heightm": 0.3, + "weightkg": 0.8, + "color": "White", + "eggGroups": [ + "Fairy", + "Amorphous" + ], + "otherFormes": [ + "castformsunny", + "castformrainy", + "castformsnowy" + ] + }, + "castformsunny": { + "num": 351, + "species": "Castform-Sunny", + "baseSpecies": "Castform", + "forme": "Sunny", + "formeLetter": "S", + "types": [ + "Fire" + ], + "baseStats": { + "hp": 70, + "atk": 70, + "def": 70, + "spa": 70, + "spd": 70, + "spe": 70 + }, + "abilities": { + "0": "Forecast" + }, + "heightm": 0.3, + "weightkg": 0.8, + "color": "White", + "eggGroups": [ + "Fairy", + "Amorphous" + ] + }, + "castformrainy": { + "num": 351, + "species": "Castform-Rainy", + "baseSpecies": "Castform", + "forme": "Rainy", + "formeLetter": "R", + "types": [ + "Water" + ], + "baseStats": { + "hp": 70, + "atk": 70, + "def": 70, + "spa": 70, + "spd": 70, + "spe": 70 + }, + "abilities": { + "0": "Forecast" + }, + "heightm": 0.3, + "weightkg": 0.8, + "color": "White", + "eggGroups": [ + "Fairy", + "Amorphous" + ] + }, + "castformsnowy": { + "num": 351, + "species": "Castform-Snowy", + "baseSpecies": "Castform", + "forme": "Snowy", + "formeLetter": "S", + "types": [ + "Ice" + ], + "baseStats": { + "hp": 70, + "atk": 70, + "def": 70, + "spa": 70, + "spd": 70, + "spe": 70 + }, + "abilities": { + "0": "Forecast" + }, + "heightm": 0.3, + "weightkg": 0.8, + "color": "White", + "eggGroups": [ + "Fairy", + "Amorphous" + ] + }, + "kecleon": { + "num": 352, + "species": "Kecleon", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 60, + "atk": 90, + "def": 70, + "spa": 60, + "spd": 120, + "spe": 40 + }, + "abilities": { + "0": "Color Change", + "H": "Protean" + }, + "heightm": 1, + "weightkg": 22, + "color": "Green", + "eggGroups": [ + "Field" + ] + }, + "shuppet": { + "num": 353, + "species": "Shuppet", + "types": [ + "Ghost" + ], + "baseStats": { + "hp": 44, + "atk": 75, + "def": 35, + "spa": 63, + "spd": 33, + "spe": 45 + }, + "abilities": { + "0": "Insomnia", + "1": "Frisk", + "H": "Cursed Body" + }, + "heightm": 0.6, + "weightkg": 2.3, + "color": "Black", + "evos": [ + "banette" + ], + "eggGroups": [ + "Amorphous" + ] + }, + "banette": { + "num": 354, + "species": "Banette", + "types": [ + "Ghost" + ], + "baseStats": { + "hp": 64, + "atk": 115, + "def": 65, + "spa": 83, + "spd": 63, + "spe": 65 + }, + "abilities": { + "0": "Insomnia", + "1": "Frisk", + "H": "Cursed Body" + }, + "heightm": 1.1, + "weightkg": 12.5, + "color": "Black", + "prevo": "shuppet", + "evoLevel": 37, + "eggGroups": [ + "Amorphous" + ], + "otherFormes": [ + "banettemega" + ] + }, + "banettemega": { + "num": 354, + "species": "Banette-Mega", + "baseSpecies": "Banette", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Ghost" + ], + "baseStats": { + "hp": 64, + "atk": 165, + "def": 75, + "spa": 93, + "spd": 83, + "spe": 75 + }, + "abilities": { + "0": "Prankster" + }, + "heightm": 1.2, + "weightkg": 13, + "color": "Black", + "eggGroups": [ + "Amorphous" + ] + }, + "duskull": { + "num": 355, + "species": "Duskull", + "types": [ + "Ghost" + ], + "baseStats": { + "hp": 20, + "atk": 40, + "def": 90, + "spa": 30, + "spd": 90, + "spe": 25 + }, + "abilities": { + "0": "Levitate", + "H": "Frisk" + }, + "heightm": 0.8, + "weightkg": 15, + "color": "Black", + "evos": [ + "dusclops" + ], + "eggGroups": [ + "Amorphous" + ] + }, + "dusclops": { + "num": 356, + "species": "Dusclops", + "types": [ + "Ghost" + ], + "baseStats": { + "hp": 40, + "atk": 70, + "def": 130, + "spa": 60, + "spd": 130, + "spe": 25 + }, + "abilities": { + "0": "Pressure", + "H": "Frisk" + }, + "heightm": 1.6, + "weightkg": 30.6, + "color": "Black", + "prevo": "duskull", + "evos": [ + "dusknoir" + ], + "evoLevel": 37, + "eggGroups": [ + "Amorphous" + ] + }, + "tropius": { + "num": 357, + "species": "Tropius", + "types": [ + "Grass", + "Flying" + ], + "baseStats": { + "hp": 99, + "atk": 68, + "def": 83, + "spa": 72, + "spd": 87, + "spe": 51 + }, + "abilities": { + "0": "Chlorophyll", + "1": "Solar Power", + "H": "Harvest" + }, + "heightm": 2, + "weightkg": 100, + "color": "Green", + "eggGroups": [ + "Monster", + "Grass" + ] + }, + "chimecho": { + "num": 358, + "species": "Chimecho", + "types": [ + "Psychic" + ], + "baseStats": { + "hp": 65, + "atk": 50, + "def": 70, + "spa": 95, + "spd": 80, + "spe": 65 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 0.6, + "weightkg": 1, + "color": "Blue", + "prevo": "chingling", + "evoLevel": 1, + "eggGroups": [ + "Amorphous" + ] + }, + "absol": { + "num": 359, + "species": "Absol", + "types": [ + "Dark" + ], + "baseStats": { + "hp": 65, + "atk": 130, + "def": 60, + "spa": 75, + "spd": 60, + "spe": 75 + }, + "abilities": { + "0": "Pressure", + "1": "Super Luck", + "H": "Justified" + }, + "heightm": 1.2, + "weightkg": 47, + "color": "White", + "eggGroups": [ + "Field" + ], + "otherFormes": [ + "absolmega" + ] + }, + "absolmega": { + "num": 359, + "species": "Absol-Mega", + "baseSpecies": "Absol", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Dark" + ], + "baseStats": { + "hp": 65, + "atk": 150, + "def": 60, + "spa": 115, + "spd": 60, + "spe": 115 + }, + "abilities": { + "0": "Magic Bounce" + }, + "heightm": 1.2, + "weightkg": 49, + "color": "White", + "eggGroups": [ + "Field" + ] + }, + "wynaut": { + "num": 360, + "species": "Wynaut", + "types": [ + "Psychic" + ], + "baseStats": { + "hp": 95, + "atk": 23, + "def": 48, + "spa": 23, + "spd": 48, + "spe": 23 + }, + "abilities": { + "0": "Shadow Tag", + "H": "Telepathy" + }, + "heightm": 0.6, + "weightkg": 14, + "color": "Blue", + "evos": [ + "wobbuffet" + ], + "eggGroups": [ + "Undiscovered" + ] + }, + "snorunt": { + "num": 361, + "species": "Snorunt", + "types": [ + "Ice" + ], + "baseStats": { + "hp": 50, + "atk": 50, + "def": 50, + "spa": 50, + "spd": 50, + "spe": 50 + }, + "abilities": { + "0": "Inner Focus", + "1": "Ice Body", + "H": "Moody" + }, + "heightm": 0.7, + "weightkg": 16.8, + "color": "Gray", + "evos": [ + "glalie", + "froslass" + ], + "eggGroups": [ + "Fairy", + "Mineral" + ] + }, + "glalie": { + "num": 362, + "species": "Glalie", + "types": [ + "Ice" + ], + "baseStats": { + "hp": 80, + "atk": 80, + "def": 80, + "spa": 80, + "spd": 80, + "spe": 80 + }, + "abilities": { + "0": "Inner Focus", + "1": "Ice Body", + "H": "Moody" + }, + "heightm": 1.5, + "weightkg": 256.5, + "color": "Gray", + "prevo": "snorunt", + "evoLevel": 42, + "eggGroups": [ + "Fairy", + "Mineral" + ], + "otherFormes": [ + "glaliemega" + ] + }, + "glaliemega": { + "num": 362, + "species": "Glalie-Mega", + "baseSpecies": "Glalie", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Ice" + ], + "baseStats": { + "hp": 80, + "atk": 120, + "def": 80, + "spa": 120, + "spd": 80, + "spe": 100 + }, + "abilities": { + "0": "Refrigerate" + }, + "heightm": 2.1, + "weightkg": 350.2, + "color": "Gray", + "eggGroups": [ + "Fairy", + "Mineral" + ] + }, + "spheal": { + "num": 363, + "species": "Spheal", + "types": [ + "Ice", + "Water" + ], + "baseStats": { + "hp": 70, + "atk": 40, + "def": 50, + "spa": 55, + "spd": 50, + "spe": 25 + }, + "abilities": { + "0": "Thick Fat", + "1": "Ice Body", + "H": "Oblivious" + }, + "heightm": 0.8, + "weightkg": 39.5, + "color": "Blue", + "evos": [ + "sealeo" + ], + "eggGroups": [ + "Water 1", + "Field" + ] + }, + "sealeo": { + "num": 364, + "species": "Sealeo", + "types": [ + "Ice", + "Water" + ], + "baseStats": { + "hp": 90, + "atk": 60, + "def": 70, + "spa": 75, + "spd": 70, + "spe": 45 + }, + "abilities": { + "0": "Thick Fat", + "1": "Ice Body", + "H": "Oblivious" + }, + "heightm": 1.1, + "weightkg": 87.6, + "color": "Blue", + "prevo": "spheal", + "evos": [ + "walrein" + ], + "evoLevel": 32, + "eggGroups": [ + "Water 1", + "Field" + ] + }, + "walrein": { + "num": 365, + "species": "Walrein", + "types": [ + "Ice", + "Water" + ], + "baseStats": { + "hp": 110, + "atk": 80, + "def": 90, + "spa": 95, + "spd": 90, + "spe": 65 + }, + "abilities": { + "0": "Thick Fat", + "1": "Ice Body", + "H": "Oblivious" + }, + "heightm": 1.4, + "weightkg": 150.6, + "color": "Blue", + "prevo": "sealeo", + "evoLevel": 44, + "eggGroups": [ + "Water 1", + "Field" + ] + }, + "clamperl": { + "num": 366, + "species": "Clamperl", + "types": [ + "Water" + ], + "baseStats": { + "hp": 35, + "atk": 64, + "def": 85, + "spa": 74, + "spd": 55, + "spe": 32 + }, + "abilities": { + "0": "Shell Armor", + "H": "Rattled" + }, + "heightm": 0.4, + "weightkg": 52.5, + "color": "Blue", + "evos": [ + "huntail", + "gorebyss" + ], + "eggGroups": [ + "Water 1" + ] + }, + "huntail": { + "num": 367, + "species": "Huntail", + "types": [ + "Water" + ], + "baseStats": { + "hp": 55, + "atk": 104, + "def": 105, + "spa": 94, + "spd": 75, + "spe": 52 + }, + "abilities": { + "0": "Swift Swim", + "H": "Water Veil" + }, + "heightm": 1.7, + "weightkg": 27, + "color": "Blue", + "prevo": "clamperl", + "evoLevel": 1, + "eggGroups": [ + "Water 1" + ] + }, + "gorebyss": { + "num": 368, + "species": "Gorebyss", + "types": [ + "Water" + ], + "baseStats": { + "hp": 55, + "atk": 84, + "def": 105, + "spa": 114, + "spd": 75, + "spe": 52 + }, + "abilities": { + "0": "Swift Swim", + "H": "Hydration" + }, + "heightm": 1.8, + "weightkg": 22.6, + "color": "Pink", + "prevo": "clamperl", + "evoLevel": 1, + "eggGroups": [ + "Water 1" + ] + }, + "relicanth": { + "num": 369, + "species": "Relicanth", + "types": [ + "Water", + "Rock" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 100, + "atk": 90, + "def": 130, + "spa": 45, + "spd": 65, + "spe": 55 + }, + "abilities": { + "0": "Swift Swim", + "1": "Rock Head", + "H": "Sturdy" + }, + "heightm": 1, + "weightkg": 23.4, + "color": "Gray", + "eggGroups": [ + "Water 1", + "Water 2" + ] + }, + "luvdisc": { + "num": 370, + "species": "Luvdisc", + "types": [ + "Water" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 43, + "atk": 30, + "def": 55, + "spa": 40, + "spd": 65, + "spe": 97 + }, + "abilities": { + "0": "Swift Swim", + "H": "Hydration" + }, + "heightm": 0.6, + "weightkg": 8.7, + "color": "Pink", + "eggGroups": [ + "Water 2" + ] + }, + "bagon": { + "num": 371, + "species": "Bagon", + "types": [ + "Dragon" + ], + "baseStats": { + "hp": 45, + "atk": 75, + "def": 60, + "spa": 40, + "spd": 30, + "spe": 50 + }, + "abilities": { + "0": "Rock Head", + "H": "Sheer Force" + }, + "heightm": 0.6, + "weightkg": 42.1, + "color": "Blue", + "evos": [ + "shelgon" + ], + "eggGroups": [ + "Dragon" + ] + }, + "shelgon": { + "num": 372, + "species": "Shelgon", + "types": [ + "Dragon" + ], + "baseStats": { + "hp": 65, + "atk": 95, + "def": 100, + "spa": 60, + "spd": 50, + "spe": 50 + }, + "abilities": { + "0": "Rock Head", + "H": "Overcoat" + }, + "heightm": 1.1, + "weightkg": 110.5, + "color": "White", + "prevo": "bagon", + "evos": [ + "salamence" + ], + "evoLevel": 30, + "eggGroups": [ + "Dragon" + ] + }, + "salamence": { + "num": 373, + "species": "Salamence", + "types": [ + "Dragon", + "Flying" + ], + "baseStats": { + "hp": 95, + "atk": 135, + "def": 80, + "spa": 110, + "spd": 80, + "spe": 100 + }, + "abilities": { + "0": "Intimidate", + "H": "Moxie" + }, + "heightm": 1.5, + "weightkg": 102.6, + "color": "Blue", + "prevo": "shelgon", + "evoLevel": 50, + "eggGroups": [ + "Dragon" + ], + "otherFormes": [ + "salamencemega" + ] + }, + "salamencemega": { + "num": 373, + "species": "Salamence-Mega", + "baseSpecies": "Salamence", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Dragon", + "Flying" + ], + "baseStats": { + "hp": 95, + "atk": 145, + "def": 130, + "spa": 120, + "spd": 90, + "spe": 120 + }, + "abilities": { + "0": "Aerilate" + }, + "heightm": 1.8, + "weightkg": 112.6, + "color": "Blue", + "eggGroups": [ + "Dragon" + ] + }, + "beldum": { + "num": 374, + "species": "Beldum", + "types": [ + "Steel", + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 40, + "atk": 55, + "def": 80, + "spa": 35, + "spd": 60, + "spe": 30 + }, + "abilities": { + "0": "Clear Body", + "H": "Light Metal" + }, + "heightm": 0.6, + "weightkg": 95.2, + "color": "Blue", + "evos": [ + "metang" + ], + "eggGroups": [ + "Mineral" + ] + }, + "metang": { + "num": 375, + "species": "Metang", + "types": [ + "Steel", + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 60, + "atk": 75, + "def": 100, + "spa": 55, + "spd": 80, + "spe": 50 + }, + "abilities": { + "0": "Clear Body", + "H": "Light Metal" + }, + "heightm": 1.2, + "weightkg": 202.5, + "color": "Blue", + "prevo": "beldum", + "evos": [ + "metagross" + ], + "evoLevel": 20, + "eggGroups": [ + "Mineral" + ] + }, + "metagross": { + "num": 376, + "species": "Metagross", + "types": [ + "Steel", + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 80, + "atk": 135, + "def": 130, + "spa": 95, + "spd": 90, + "spe": 70 + }, + "abilities": { + "0": "Clear Body", + "H": "Light Metal" + }, + "heightm": 1.6, + "weightkg": 550, + "color": "Blue", + "prevo": "metang", + "evoLevel": 45, + "eggGroups": [ + "Mineral" + ], + "otherFormes": [ + "metagrossmega" + ] + }, + "metagrossmega": { + "num": 376, + "species": "Metagross-Mega", + "baseSpecies": "Metagross", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Steel", + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 80, + "atk": 145, + "def": 150, + "spa": 105, + "spd": 110, + "spe": 110 + }, + "abilities": { + "0": "Tough Claws" + }, + "heightm": 2.5, + "weightkg": 942.9, + "color": "Blue", + "eggGroups": [ + "Mineral" + ] + }, + "regirock": { + "num": 377, + "species": "Regirock", + "types": [ + "Rock" + ], + "gender": "N", + "baseStats": { + "hp": 80, + "atk": 100, + "def": 200, + "spa": 50, + "spd": 100, + "spe": 50 + }, + "abilities": { + "0": "Clear Body", + "H": "Sturdy" + }, + "heightm": 1.7, + "weightkg": 230, + "color": "Brown", + "eggGroups": [ + "Undiscovered" + ] + }, + "regice": { + "num": 378, + "species": "Regice", + "types": [ + "Ice" + ], + "gender": "N", + "baseStats": { + "hp": 80, + "atk": 50, + "def": 100, + "spa": 100, + "spd": 200, + "spe": 50 + }, + "abilities": { + "0": "Clear Body", + "H": "Ice Body" + }, + "heightm": 1.8, + "weightkg": 175, + "color": "Blue", + "eggGroups": [ + "Undiscovered" + ] + }, + "registeel": { + "num": 379, + "species": "Registeel", + "types": [ + "Steel" + ], + "gender": "N", + "baseStats": { + "hp": 80, + "atk": 75, + "def": 150, + "spa": 75, + "spd": 150, + "spe": 50 + }, + "abilities": { + "0": "Clear Body", + "H": "Light Metal" + }, + "heightm": 1.9, + "weightkg": 205, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "latias": { + "num": 380, + "species": "Latias", + "types": [ + "Dragon", + "Psychic" + ], + "gender": "F", + "baseStats": { + "hp": 80, + "atk": 80, + "def": 90, + "spa": 110, + "spd": 130, + "spe": 110 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 1.4, + "weightkg": 40, + "color": "Red", + "eggGroups": [ + "Undiscovered" + ], + "otherFormes": [ + "latiasmega" + ] + }, + "latiasmega": { + "num": 380, + "species": "Latias-Mega", + "baseSpecies": "Latias", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Dragon", + "Psychic" + ], + "gender": "F", + "baseStats": { + "hp": 80, + "atk": 100, + "def": 120, + "spa": 140, + "spd": 150, + "spe": 110 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 1.8, + "weightkg": 52, + "color": "Red", + "eggGroups": [ + "Undiscovered" + ] + }, + "latios": { + "num": 381, + "species": "Latios", + "types": [ + "Dragon", + "Psychic" + ], + "gender": "M", + "baseStats": { + "hp": 80, + "atk": 90, + "def": 80, + "spa": 130, + "spd": 110, + "spe": 110 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 2, + "weightkg": 60, + "color": "Blue", + "eggGroups": [ + "Undiscovered" + ], + "otherFormes": [ + "latiosmega" + ] + }, + "latiosmega": { + "num": 381, + "species": "Latios-Mega", + "baseSpecies": "Latios", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Dragon", + "Psychic" + ], + "gender": "M", + "baseStats": { + "hp": 80, + "atk": 130, + "def": 100, + "spa": 160, + "spd": 120, + "spe": 110 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 2.3, + "weightkg": 70, + "color": "Blue", + "eggGroups": [ + "Undiscovered" + ] + }, + "kyogre": { + "num": 382, + "species": "Kyogre", + "types": [ + "Water" + ], + "gender": "N", + "baseStats": { + "hp": 100, + "atk": 100, + "def": 90, + "spa": 150, + "spd": 140, + "spe": 90 + }, + "abilities": { + "0": "Drizzle" + }, + "heightm": 4.5, + "weightkg": 352, + "color": "Blue", + "eggGroups": [ + "Undiscovered" + ], + "otherFormes": [ + "kyogreprimal" + ] + }, + "kyogreprimal": { + "num": 382, + "species": "Kyogre-Primal", + "baseSpecies": "Kyogre", + "forme": "Primal", + "formeLetter": "P", + "types": [ + "Water" + ], + "gender": "N", + "baseStats": { + "hp": 100, + "atk": 150, + "def": 90, + "spa": 180, + "spd": 160, + "spe": 90 + }, + "abilities": { + "0": "Primordial Sea" + }, + "heightm": 9.8, + "weightkg": 430, + "color": "Blue", + "eggGroups": [ + "Undiscovered" + ] + }, + "groudon": { + "num": 383, + "species": "Groudon", + "types": [ + "Ground" + ], + "gender": "N", + "baseStats": { + "hp": 100, + "atk": 150, + "def": 140, + "spa": 100, + "spd": 90, + "spe": 90 + }, + "abilities": { + "0": "Drought" + }, + "heightm": 3.5, + "weightkg": 950, + "color": "Red", + "eggGroups": [ + "Undiscovered" + ], + "otherFormes": [ + "groudonprimal" + ] + }, + "groudonprimal": { + "num": 383, + "species": "Groudon-Primal", + "baseSpecies": "Groudon", + "forme": "Primal", + "formeLetter": "P", + "types": [ + "Ground", + "Fire" + ], + "gender": "N", + "baseStats": { + "hp": 100, + "atk": 180, + "def": 160, + "spa": 150, + "spd": 90, + "spe": 90 + }, + "abilities": { + "0": "Desolate Land" + }, + "heightm": 5, + "weightkg": 999.7, + "color": "Red", + "eggGroups": [ + "Undiscovered" + ] + }, + "rayquaza": { + "num": 384, + "species": "Rayquaza", + "types": [ + "Dragon", + "Flying" + ], + "gender": "N", + "baseStats": { + "hp": 105, + "atk": 150, + "def": 90, + "spa": 150, + "spd": 90, + "spe": 95 + }, + "abilities": { + "0": "Air Lock" + }, + "heightm": 7, + "weightkg": 206.5, + "color": "Green", + "eggGroups": [ + "Undiscovered" + ], + "otherFormes": [ + "rayquazamega" + ] + }, + "rayquazamega": { + "num": 384, + "species": "Rayquaza-Mega", + "baseSpecies": "Rayquaza", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Dragon", + "Flying" + ], + "gender": "N", + "baseStats": { + "hp": 105, + "atk": 180, + "def": 100, + "spa": 180, + "spd": 100, + "spe": 115 + }, + "abilities": { + "0": "Delta Stream" + }, + "heightm": 10.8, + "weightkg": 392, + "color": "Green", + "eggGroups": [ + "Undiscovered" + ] + }, + "jirachi": { + "num": 385, + "species": "Jirachi", + "types": [ + "Steel", + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 100, + "atk": 100, + "def": 100, + "spa": 100, + "spd": 100, + "spe": 100 + }, + "abilities": { + "0": "Serene Grace" + }, + "heightm": 0.3, + "weightkg": 1.1, + "color": "Yellow", + "eggGroups": [ + "Undiscovered" + ] + }, + "deoxys": { + "num": 386, + "species": "Deoxys", + "baseForme": "Normal", + "types": [ + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 50, + "atk": 150, + "def": 50, + "spa": 150, + "spd": 50, + "spe": 150 + }, + "abilities": { + "0": "Pressure" + }, + "heightm": 1.7, + "weightkg": 60.8, + "color": "Red", + "eggGroups": [ + "Undiscovered" + ], + "otherFormes": [ + "deoxysattack", + "deoxysdefense", + "deoxysspeed" + ] + }, + "deoxysattack": { + "num": 386, + "species": "Deoxys-Attack", + "baseSpecies": "Deoxys", + "forme": "Attack", + "formeLetter": "A", + "types": [ + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 50, + "atk": 180, + "def": 20, + "spa": 180, + "spd": 20, + "spe": 150 + }, + "abilities": { + "0": "Pressure" + }, + "heightm": 1.7, + "weightkg": 60.8, + "color": "Red", + "eggGroups": [ + "Undiscovered" + ] + }, + "deoxysdefense": { + "num": 386, + "species": "Deoxys-Defense", + "baseSpecies": "Deoxys", + "forme": "Defense", + "formeLetter": "D", + "types": [ + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 50, + "atk": 70, + "def": 160, + "spa": 70, + "spd": 160, + "spe": 90 + }, + "abilities": { + "0": "Pressure" + }, + "heightm": 1.7, + "weightkg": 60.8, + "color": "Red", + "eggGroups": [ + "Undiscovered" + ] + }, + "deoxysspeed": { + "num": 386, + "species": "Deoxys-Speed", + "baseSpecies": "Deoxys", + "forme": "Speed", + "formeLetter": "S", + "types": [ + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 50, + "atk": 95, + "def": 90, + "spa": 95, + "spd": 90, + "spe": 180 + }, + "abilities": { + "0": "Pressure" + }, + "heightm": 1.7, + "weightkg": 60.8, + "color": "Red", + "eggGroups": [ + "Undiscovered" + ] + }, + "turtwig": { + "num": 387, + "species": "Turtwig", + "types": [ + "Grass" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 55, + "atk": 68, + "def": 64, + "spa": 45, + "spd": 55, + "spe": 31 + }, + "abilities": { + "0": "Overgrow", + "H": "Shell Armor" + }, + "heightm": 0.4, + "weightkg": 10.2, + "color": "Green", + "evos": [ + "grotle" + ], + "eggGroups": [ + "Monster", + "Grass" + ] + }, + "grotle": { + "num": 388, + "species": "Grotle", + "types": [ + "Grass" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 75, + "atk": 89, + "def": 85, + "spa": 55, + "spd": 65, + "spe": 36 + }, + "abilities": { + "0": "Overgrow", + "H": "Shell Armor" + }, + "heightm": 1.1, + "weightkg": 97, + "color": "Green", + "prevo": "turtwig", + "evos": [ + "torterra" + ], + "evoLevel": 18, + "eggGroups": [ + "Monster", + "Grass" + ] + }, + "torterra": { + "num": 389, + "species": "Torterra", + "types": [ + "Grass", + "Ground" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 95, + "atk": 109, + "def": 105, + "spa": 75, + "spd": 85, + "spe": 56 + }, + "abilities": { + "0": "Overgrow", + "H": "Shell Armor" + }, + "heightm": 2.2, + "weightkg": 310, + "color": "Green", + "prevo": "grotle", + "evoLevel": 32, + "eggGroups": [ + "Monster", + "Grass" + ] + }, + "chimchar": { + "num": 390, + "species": "Chimchar", + "types": [ + "Fire" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 44, + "atk": 58, + "def": 44, + "spa": 58, + "spd": 44, + "spe": 61 + }, + "abilities": { + "0": "Blaze", + "H": "Iron Fist" + }, + "heightm": 0.5, + "weightkg": 6.2, + "color": "Brown", + "evos": [ + "monferno" + ], + "eggGroups": [ + "Field", + "Human-Like" + ] + }, + "monferno": { + "num": 391, + "species": "Monferno", + "types": [ + "Fire", + "Fighting" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 64, + "atk": 78, + "def": 52, + "spa": 78, + "spd": 52, + "spe": 81 + }, + "abilities": { + "0": "Blaze", + "H": "Iron Fist" + }, + "heightm": 0.9, + "weightkg": 22, + "color": "Brown", + "prevo": "chimchar", + "evos": [ + "infernape" + ], + "evoLevel": 14, + "eggGroups": [ + "Field", + "Human-Like" + ] + }, + "infernape": { + "num": 392, + "species": "Infernape", + "types": [ + "Fire", + "Fighting" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 76, + "atk": 104, + "def": 71, + "spa": 104, + "spd": 71, + "spe": 108 + }, + "abilities": { + "0": "Blaze", + "H": "Iron Fist" + }, + "heightm": 1.2, + "weightkg": 55, + "color": "Brown", + "prevo": "monferno", + "evoLevel": 36, + "eggGroups": [ + "Field", + "Human-Like" + ] + }, + "piplup": { + "num": 393, + "species": "Piplup", + "types": [ + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 53, + "atk": 51, + "def": 53, + "spa": 61, + "spd": 56, + "spe": 40 + }, + "abilities": { + "0": "Torrent", + "H": "Defiant" + }, + "heightm": 0.4, + "weightkg": 5.2, + "color": "Blue", + "evos": [ + "prinplup" + ], + "eggGroups": [ + "Water 1", + "Field" + ] + }, + "prinplup": { + "num": 394, + "species": "Prinplup", + "types": [ + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 64, + "atk": 66, + "def": 68, + "spa": 81, + "spd": 76, + "spe": 50 + }, + "abilities": { + "0": "Torrent", + "H": "Defiant" + }, + "heightm": 0.8, + "weightkg": 23, + "color": "Blue", + "prevo": "piplup", + "evos": [ + "empoleon" + ], + "evoLevel": 16, + "eggGroups": [ + "Water 1", + "Field" + ] + }, + "empoleon": { + "num": 395, + "species": "Empoleon", + "types": [ + "Water", + "Steel" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 84, + "atk": 86, + "def": 88, + "spa": 111, + "spd": 101, + "spe": 60 + }, + "abilities": { + "0": "Torrent", + "H": "Defiant" + }, + "heightm": 1.7, + "weightkg": 84.5, + "color": "Blue", + "prevo": "prinplup", + "evoLevel": 36, + "eggGroups": [ + "Water 1", + "Field" + ] + }, + "starly": { + "num": 396, + "species": "Starly", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 40, + "atk": 55, + "def": 30, + "spa": 30, + "spd": 30, + "spe": 60 + }, + "abilities": { + "0": "Keen Eye", + "H": "Reckless" + }, + "heightm": 0.3, + "weightkg": 2, + "color": "Brown", + "evos": [ + "staravia" + ], + "eggGroups": [ + "Flying" + ] + }, + "staravia": { + "num": 397, + "species": "Staravia", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 55, + "atk": 75, + "def": 50, + "spa": 40, + "spd": 40, + "spe": 80 + }, + "abilities": { + "0": "Intimidate", + "H": "Reckless" + }, + "heightm": 0.6, + "weightkg": 15.5, + "color": "Brown", + "prevo": "starly", + "evos": [ + "staraptor" + ], + "evoLevel": 14, + "eggGroups": [ + "Flying" + ] + }, + "staraptor": { + "num": 398, + "species": "Staraptor", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 85, + "atk": 120, + "def": 70, + "spa": 50, + "spd": 60, + "spe": 100 + }, + "abilities": { + "0": "Intimidate", + "H": "Reckless" + }, + "heightm": 1.2, + "weightkg": 24.9, + "color": "Brown", + "prevo": "staravia", + "evoLevel": 34, + "eggGroups": [ + "Flying" + ] + }, + "bidoof": { + "num": 399, + "species": "Bidoof", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 59, + "atk": 45, + "def": 40, + "spa": 35, + "spd": 40, + "spe": 31 + }, + "abilities": { + "0": "Simple", + "1": "Unaware", + "H": "Moody" + }, + "heightm": 0.5, + "weightkg": 20, + "color": "Brown", + "evos": [ + "bibarel" + ], + "eggGroups": [ + "Water 1", + "Field" + ] + }, + "bibarel": { + "num": 400, + "species": "Bibarel", + "types": [ + "Normal", + "Water" + ], + "baseStats": { + "hp": 79, + "atk": 85, + "def": 60, + "spa": 55, + "spd": 60, + "spe": 71 + }, + "abilities": { + "0": "Simple", + "1": "Unaware", + "H": "Moody" + }, + "heightm": 1, + "weightkg": 31.5, + "color": "Brown", + "prevo": "bidoof", + "evoLevel": 15, + "eggGroups": [ + "Water 1", + "Field" + ] + }, + "kricketot": { + "num": 401, + "species": "Kricketot", + "types": [ + "Bug" + ], + "baseStats": { + "hp": 37, + "atk": 25, + "def": 41, + "spa": 25, + "spd": 41, + "spe": 25 + }, + "abilities": { + "0": "Shed Skin", + "H": "Run Away" + }, + "heightm": 0.3, + "weightkg": 2.2, + "color": "Red", + "evos": [ + "kricketune" + ], + "eggGroups": [ + "Bug" + ] + }, + "kricketune": { + "num": 402, + "species": "Kricketune", + "types": [ + "Bug" + ], + "baseStats": { + "hp": 77, + "atk": 85, + "def": 51, + "spa": 55, + "spd": 51, + "spe": 65 + }, + "abilities": { + "0": "Swarm", + "H": "Technician" + }, + "heightm": 1, + "weightkg": 25.5, + "color": "Red", + "prevo": "kricketot", + "evoLevel": 10, + "eggGroups": [ + "Bug" + ] + }, + "shinx": { + "num": 403, + "species": "Shinx", + "types": [ + "Electric" + ], + "baseStats": { + "hp": 45, + "atk": 65, + "def": 34, + "spa": 40, + "spd": 34, + "spe": 45 + }, + "abilities": { + "0": "Rivalry", + "1": "Intimidate", + "H": "Guts" + }, + "heightm": 0.5, + "weightkg": 9.5, + "color": "Blue", + "evos": [ + "luxio" + ], + "eggGroups": [ + "Field" + ] + }, + "luxio": { + "num": 404, + "species": "Luxio", + "types": [ + "Electric" + ], + "baseStats": { + "hp": 60, + "atk": 85, + "def": 49, + "spa": 60, + "spd": 49, + "spe": 60 + }, + "abilities": { + "0": "Rivalry", + "1": "Intimidate", + "H": "Guts" + }, + "heightm": 0.9, + "weightkg": 30.5, + "color": "Blue", + "prevo": "shinx", + "evos": [ + "luxray" + ], + "evoLevel": 15, + "eggGroups": [ + "Field" + ] + }, + "luxray": { + "num": 405, + "species": "Luxray", + "types": [ + "Electric" + ], + "baseStats": { + "hp": 80, + "atk": 120, + "def": 79, + "spa": 95, + "spd": 79, + "spe": 70 + }, + "abilities": { + "0": "Rivalry", + "1": "Intimidate", + "H": "Guts" + }, + "heightm": 1.4, + "weightkg": 42, + "color": "Blue", + "prevo": "luxio", + "evoLevel": 30, + "eggGroups": [ + "Field" + ] + }, + "budew": { + "num": 406, + "species": "Budew", + "types": [ + "Grass", + "Poison" + ], + "baseStats": { + "hp": 40, + "atk": 30, + "def": 35, + "spa": 50, + "spd": 70, + "spe": 55 + }, + "abilities": { + "0": "Natural Cure", + "1": "Poison Point", + "H": "Leaf Guard" + }, + "heightm": 0.2, + "weightkg": 1.2, + "color": "Green", + "evos": [ + "roselia" + ], + "eggGroups": [ + "Undiscovered" + ] + }, + "roserade": { + "num": 407, + "species": "Roserade", + "types": [ + "Grass", + "Poison" + ], + "baseStats": { + "hp": 60, + "atk": 70, + "def": 65, + "spa": 125, + "spd": 105, + "spe": 90 + }, + "abilities": { + "0": "Natural Cure", + "1": "Poison Point", + "H": "Technician" + }, + "heightm": 0.9, + "weightkg": 14.5, + "color": "Green", + "prevo": "roselia", + "evoLevel": 1, + "eggGroups": [ + "Fairy", + "Grass" + ] + }, + "cranidos": { + "num": 408, + "species": "Cranidos", + "types": [ + "Rock" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 67, + "atk": 125, + "def": 40, + "spa": 30, + "spd": 30, + "spe": 58 + }, + "abilities": { + "0": "Mold Breaker", + "H": "Sheer Force" + }, + "heightm": 0.9, + "weightkg": 31.5, + "color": "Blue", + "evos": [ + "rampardos" + ], + "eggGroups": [ + "Monster" + ] + }, + "rampardos": { + "num": 409, + "species": "Rampardos", + "types": [ + "Rock" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 97, + "atk": 165, + "def": 60, + "spa": 65, + "spd": 50, + "spe": 58 + }, + "abilities": { + "0": "Mold Breaker", + "H": "Sheer Force" + }, + "heightm": 1.6, + "weightkg": 102.5, + "color": "Blue", + "prevo": "cranidos", + "evoLevel": 30, + "eggGroups": [ + "Monster" + ] + }, + "shieldon": { + "num": 410, + "species": "Shieldon", + "types": [ + "Rock", + "Steel" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 30, + "atk": 42, + "def": 118, + "spa": 42, + "spd": 88, + "spe": 30 + }, + "abilities": { + "0": "Sturdy", + "H": "Soundproof" + }, + "heightm": 0.5, + "weightkg": 57, + "color": "Gray", + "evos": [ + "bastiodon" + ], + "eggGroups": [ + "Monster" + ] + }, + "bastiodon": { + "num": 411, + "species": "Bastiodon", + "types": [ + "Rock", + "Steel" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 60, + "atk": 52, + "def": 168, + "spa": 47, + "spd": 138, + "spe": 30 + }, + "abilities": { + "0": "Sturdy", + "H": "Soundproof" + }, + "heightm": 1.3, + "weightkg": 149.5, + "color": "Gray", + "prevo": "shieldon", + "evoLevel": 30, + "eggGroups": [ + "Monster" + ] + }, + "burmy": { + "num": 412, + "species": "Burmy", + "baseForme": "Grass", + "types": [ + "Bug" + ], + "baseStats": { + "hp": 40, + "atk": 29, + "def": 45, + "spa": 29, + "spd": 45, + "spe": 36 + }, + "abilities": { + "0": "Shed Skin", + "H": "Overcoat" + }, + "heightm": 0.2, + "weightkg": 3.4, + "color": "Gray", + "evos": [ + "wormadam", + "wormadamsandy", + "wormadamtrash", + "mothim" + ], + "eggGroups": [ + "Bug" + ], + "otherForms": [ + "burmysandy", + "burmytrash" + ] + }, + "wormadam": { + "num": 413, + "species": "Wormadam", + "baseForme": "Grass", + "types": [ + "Bug", + "Grass" + ], + "gender": "F", + "baseStats": { + "hp": 60, + "atk": 59, + "def": 85, + "spa": 79, + "spd": 105, + "spe": 36 + }, + "abilities": { + "0": "Anticipation", + "H": "Overcoat" + }, + "heightm": 0.5, + "weightkg": 6.5, + "color": "Gray", + "prevo": "burmy", + "evoLevel": 20, + "eggGroups": [ + "Bug" + ], + "otherFormes": [ + "wormadamsandy", + "wormadamtrash" + ] + }, + "wormadamsandy": { + "num": 413, + "species": "Wormadam-Sandy", + "baseSpecies": "Wormadam", + "forme": "Sandy", + "formeLetter": "G", + "types": [ + "Bug", + "Ground" + ], + "gender": "F", + "baseStats": { + "hp": 60, + "atk": 79, + "def": 105, + "spa": 59, + "spd": 85, + "spe": 36 + }, + "abilities": { + "0": "Anticipation", + "H": "Overcoat" + }, + "heightm": 0.5, + "weightkg": 6.5, + "color": "Gray", + "prevo": "burmy", + "evoLevel": 20, + "eggGroups": [ + "Bug" + ] + }, + "wormadamtrash": { + "num": 413, + "species": "Wormadam-Trash", + "baseSpecies": "Wormadam", + "forme": "Trash", + "formeLetter": "S", + "types": [ + "Bug", + "Steel" + ], + "gender": "F", + "baseStats": { + "hp": 60, + "atk": 69, + "def": 95, + "spa": 69, + "spd": 95, + "spe": 36 + }, + "abilities": { + "0": "Anticipation", + "H": "Overcoat" + }, + "heightm": 0.5, + "weightkg": 6.5, + "color": "Gray", + "prevo": "burmy", + "evoLevel": 20, + "eggGroups": [ + "Bug" + ] + }, + "mothim": { + "num": 414, + "species": "Mothim", + "types": [ + "Bug", + "Flying" + ], + "gender": "M", + "baseStats": { + "hp": 70, + "atk": 94, + "def": 50, + "spa": 94, + "spd": 50, + "spe": 66 + }, + "abilities": { + "0": "Swarm", + "H": "Tinted Lens" + }, + "heightm": 0.9, + "weightkg": 23.3, + "color": "Yellow", + "prevo": "burmy", + "evoLevel": 20, + "eggGroups": [ + "Bug" + ] + }, + "combee": { + "num": 415, + "species": "Combee", + "types": [ + "Bug", + "Flying" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 30, + "atk": 30, + "def": 42, + "spa": 30, + "spd": 42, + "spe": 70 + }, + "abilities": { + "0": "Honey Gather", + "H": "Hustle" + }, + "heightm": 0.3, + "weightkg": 5.5, + "color": "Yellow", + "evos": [ + "vespiquen" + ], + "eggGroups": [ + "Bug" + ] + }, + "vespiquen": { + "num": 416, + "species": "Vespiquen", + "types": [ + "Bug", + "Flying" + ], + "gender": "F", + "baseStats": { + "hp": 70, + "atk": 80, + "def": 102, + "spa": 80, + "spd": 102, + "spe": 40 + }, + "abilities": { + "0": "Pressure", + "H": "Unnerve" + }, + "heightm": 1.2, + "weightkg": 38.5, + "color": "Yellow", + "prevo": "combee", + "evoLevel": 21, + "eggGroups": [ + "Bug" + ] + }, + "pachirisu": { + "num": 417, + "species": "Pachirisu", + "types": [ + "Electric" + ], + "baseStats": { + "hp": 60, + "atk": 45, + "def": 70, + "spa": 45, + "spd": 90, + "spe": 95 + }, + "abilities": { + "0": "Run Away", + "1": "Pickup", + "H": "Volt Absorb" + }, + "heightm": 0.4, + "weightkg": 3.9, + "color": "White", + "eggGroups": [ + "Field", + "Fairy" + ] + }, + "buizel": { + "num": 418, + "species": "Buizel", + "types": [ + "Water" + ], + "baseStats": { + "hp": 55, + "atk": 65, + "def": 35, + "spa": 60, + "spd": 30, + "spe": 85 + }, + "abilities": { + "0": "Swift Swim", + "H": "Water Veil" + }, + "heightm": 0.7, + "weightkg": 29.5, + "color": "Brown", + "evos": [ + "floatzel" + ], + "eggGroups": [ + "Water 1", + "Field" + ] + }, + "floatzel": { + "num": 419, + "species": "Floatzel", + "types": [ + "Water" + ], + "baseStats": { + "hp": 85, + "atk": 105, + "def": 55, + "spa": 85, + "spd": 50, + "spe": 115 + }, + "abilities": { + "0": "Swift Swim", + "H": "Water Veil" + }, + "heightm": 1.1, + "weightkg": 33.5, + "color": "Brown", + "prevo": "buizel", + "evoLevel": 26, + "eggGroups": [ + "Water 1", + "Field" + ] + }, + "cherubi": { + "num": 420, + "species": "Cherubi", + "types": [ + "Grass" + ], + "baseStats": { + "hp": 45, + "atk": 35, + "def": 45, + "spa": 62, + "spd": 53, + "spe": 35 + }, + "abilities": { + "0": "Chlorophyll" + }, + "heightm": 0.4, + "weightkg": 3.3, + "color": "Pink", + "evos": [ + "cherrim" + ], + "eggGroups": [ + "Fairy", + "Grass" + ] + }, + "cherrim": { + "num": 421, + "species": "Cherrim", + "baseForme": "Overcast", + "types": [ + "Grass" + ], + "baseStats": { + "hp": 70, + "atk": 60, + "def": 70, + "spa": 87, + "spd": 78, + "spe": 85 + }, + "abilities": { + "0": "Flower Gift" + }, + "heightm": 0.5, + "weightkg": 9.3, + "color": "Pink", + "prevo": "cherubi", + "evoLevel": 25, + "eggGroups": [ + "Fairy", + "Grass" + ], + "otherFormes": [ + "cherrimsunshine" + ] + }, + "cherrimsunshine": { + "num": 421, + "species": "Cherrim-Sunshine", + "baseSpecies": "Cherrim", + "forme": "Sunshine", + "formeLetter": "S", + "types": [ + "Grass" + ], + "baseStats": { + "hp": 70, + "atk": 60, + "def": 70, + "spa": 87, + "spd": 78, + "spe": 85 + }, + "abilities": { + "0": "Flower Gift" + }, + "heightm": 0.5, + "weightkg": 9.3, + "color": "Pink", + "prevo": "cherubi", + "evoLevel": 25, + "eggGroups": [ + "Fairy", + "Grass" + ] + }, + "shellos": { + "num": 422, + "species": "Shellos", + "baseForme": "West", + "types": [ + "Water" + ], + "baseStats": { + "hp": 76, + "atk": 48, + "def": 48, + "spa": 57, + "spd": 62, + "spe": 34 + }, + "abilities": { + "0": "Sticky Hold", + "1": "Storm Drain", + "H": "Sand Force" + }, + "heightm": 0.3, + "weightkg": 6.3, + "color": "Purple", + "evos": [ + "gastrodon" + ], + "eggGroups": [ + "Water 1", + "Amorphous" + ], + "otherForms": [ + "shelloseast" + ] + }, + "gastrodon": { + "num": 423, + "species": "Gastrodon", + "baseForme": "West", + "types": [ + "Water", + "Ground" + ], + "baseStats": { + "hp": 111, + "atk": 83, + "def": 68, + "spa": 92, + "spd": 82, + "spe": 39 + }, + "abilities": { + "0": "Sticky Hold", + "1": "Storm Drain", + "H": "Sand Force" + }, + "heightm": 0.9, + "weightkg": 29.9, + "color": "Purple", + "prevo": "shellos", + "evoLevel": 30, + "eggGroups": [ + "Water 1", + "Amorphous" + ], + "otherForms": [ + "gastrodoneast" + ] + }, + "ambipom": { + "num": 424, + "species": "Ambipom", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 75, + "atk": 100, + "def": 66, + "spa": 60, + "spd": 66, + "spe": 115 + }, + "abilities": { + "0": "Technician", + "1": "Pickup", + "H": "Skill Link" + }, + "heightm": 1.2, + "weightkg": 20.3, + "color": "Purple", + "prevo": "aipom", + "evoLevel": 2, + "evoMove": "Double Hit", + "eggGroups": [ + "Field" + ] + }, + "drifloon": { + "num": 425, + "species": "Drifloon", + "types": [ + "Ghost", + "Flying" + ], + "baseStats": { + "hp": 90, + "atk": 50, + "def": 34, + "spa": 60, + "spd": 44, + "spe": 70 + }, + "abilities": { + "0": "Aftermath", + "1": "Unburden", + "H": "Flare Boost" + }, + "heightm": 0.4, + "weightkg": 1.2, + "color": "Purple", + "evos": [ + "drifblim" + ], + "eggGroups": [ + "Amorphous" + ] + }, + "drifblim": { + "num": 426, + "species": "Drifblim", + "types": [ + "Ghost", + "Flying" + ], + "baseStats": { + "hp": 150, + "atk": 80, + "def": 44, + "spa": 90, + "spd": 54, + "spe": 80 + }, + "abilities": { + "0": "Aftermath", + "1": "Unburden", + "H": "Flare Boost" + }, + "heightm": 1.2, + "weightkg": 15, + "color": "Purple", + "prevo": "drifloon", + "evoLevel": 28, + "eggGroups": [ + "Amorphous" + ] + }, + "buneary": { + "num": 427, + "species": "Buneary", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 55, + "atk": 66, + "def": 44, + "spa": 44, + "spd": 56, + "spe": 85 + }, + "abilities": { + "0": "Run Away", + "1": "Klutz", + "H": "Limber" + }, + "heightm": 0.4, + "weightkg": 5.5, + "color": "Brown", + "evos": [ + "lopunny" + ], + "eggGroups": [ + "Field", + "Human-Like" + ] + }, + "lopunny": { + "num": 428, + "species": "Lopunny", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 65, + "atk": 76, + "def": 84, + "spa": 54, + "spd": 96, + "spe": 105 + }, + "abilities": { + "0": "Cute Charm", + "1": "Klutz", + "H": "Limber" + }, + "heightm": 1.2, + "weightkg": 33.3, + "color": "Brown", + "prevo": "buneary", + "evoLevel": 2, + "eggGroups": [ + "Field", + "Human-Like" + ], + "otherFormes": [ + "lopunnymega" + ] + }, + "lopunnymega": { + "num": 428, + "species": "Lopunny-Mega", + "baseSpecies": "Lopunny", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Normal", + "Fighting" + ], + "baseStats": { + "hp": 65, + "atk": 136, + "def": 94, + "spa": 54, + "spd": 96, + "spe": 135 + }, + "abilities": { + "0": "Scrappy" + }, + "heightm": 1.3, + "weightkg": 28.3, + "color": "Brown", + "eggGroups": [ + "Field", + "Human-Like" + ] + }, + "mismagius": { + "num": 429, + "species": "Mismagius", + "types": [ + "Ghost" + ], + "baseStats": { + "hp": 60, + "atk": 60, + "def": 60, + "spa": 105, + "spd": 105, + "spe": 105 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 0.9, + "weightkg": 4.4, + "color": "Purple", + "prevo": "misdreavus", + "evoLevel": 1, + "eggGroups": [ + "Amorphous" + ] + }, + "honchkrow": { + "num": 430, + "species": "Honchkrow", + "types": [ + "Dark", + "Flying" + ], + "baseStats": { + "hp": 100, + "atk": 125, + "def": 52, + "spa": 105, + "spd": 52, + "spe": 71 + }, + "abilities": { + "0": "Insomnia", + "1": "Super Luck", + "H": "Moxie" + }, + "heightm": 0.9, + "weightkg": 27.3, + "color": "Black", + "prevo": "murkrow", + "evoLevel": 1, + "eggGroups": [ + "Flying" + ] + }, + "glameow": { + "num": 431, + "species": "Glameow", + "types": [ + "Normal" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 49, + "atk": 55, + "def": 42, + "spa": 42, + "spd": 37, + "spe": 85 + }, + "abilities": { + "0": "Limber", + "1": "Own Tempo", + "H": "Keen Eye" + }, + "heightm": 0.5, + "weightkg": 3.9, + "color": "Gray", + "evos": [ + "purugly" + ], + "eggGroups": [ + "Field" + ] + }, + "purugly": { + "num": 432, + "species": "Purugly", + "types": [ + "Normal" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 71, + "atk": 82, + "def": 64, + "spa": 64, + "spd": 59, + "spe": 112 + }, + "abilities": { + "0": "Thick Fat", + "1": "Own Tempo", + "H": "Defiant" + }, + "heightm": 1, + "weightkg": 43.8, + "color": "Gray", + "prevo": "glameow", + "evoLevel": 38, + "eggGroups": [ + "Field" + ] + }, + "chingling": { + "num": 433, + "species": "Chingling", + "types": [ + "Psychic" + ], + "baseStats": { + "hp": 45, + "atk": 30, + "def": 50, + "spa": 65, + "spd": 50, + "spe": 45 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 0.2, + "weightkg": 0.6, + "color": "Yellow", + "evos": [ + "chimecho" + ], + "eggGroups": [ + "Undiscovered" + ] + }, + "stunky": { + "num": 434, + "species": "Stunky", + "types": [ + "Poison", + "Dark" + ], + "baseStats": { + "hp": 63, + "atk": 63, + "def": 47, + "spa": 41, + "spd": 41, + "spe": 74 + }, + "abilities": { + "0": "Stench", + "1": "Aftermath", + "H": "Keen Eye" + }, + "heightm": 0.4, + "weightkg": 19.2, + "color": "Purple", + "evos": [ + "skuntank" + ], + "eggGroups": [ + "Field" + ] + }, + "skuntank": { + "num": 435, + "species": "Skuntank", + "types": [ + "Poison", + "Dark" + ], + "baseStats": { + "hp": 103, + "atk": 93, + "def": 67, + "spa": 71, + "spd": 61, + "spe": 84 + }, + "abilities": { + "0": "Stench", + "1": "Aftermath", + "H": "Keen Eye" + }, + "heightm": 1, + "weightkg": 38, + "color": "Purple", + "prevo": "stunky", + "evoLevel": 34, + "eggGroups": [ + "Field" + ] + }, + "bronzor": { + "num": 436, + "species": "Bronzor", + "types": [ + "Steel", + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 57, + "atk": 24, + "def": 86, + "spa": 24, + "spd": 86, + "spe": 23 + }, + "abilities": { + "0": "Levitate", + "1": "Heatproof", + "H": "Heavy Metal" + }, + "heightm": 0.5, + "weightkg": 60.5, + "color": "Green", + "evos": [ + "bronzong" + ], + "eggGroups": [ + "Mineral" + ] + }, + "bronzong": { + "num": 437, + "species": "Bronzong", + "types": [ + "Steel", + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 67, + "atk": 89, + "def": 116, + "spa": 79, + "spd": 116, + "spe": 33 + }, + "abilities": { + "0": "Levitate", + "1": "Heatproof", + "H": "Heavy Metal" + }, + "heightm": 1.3, + "weightkg": 187, + "color": "Green", + "prevo": "bronzor", + "evoLevel": 33, + "eggGroups": [ + "Mineral" + ] + }, + "bonsly": { + "num": 438, + "species": "Bonsly", + "types": [ + "Rock" + ], + "baseStats": { + "hp": 50, + "atk": 80, + "def": 95, + "spa": 10, + "spd": 45, + "spe": 10 + }, + "abilities": { + "0": "Sturdy", + "1": "Rock Head", + "H": "Rattled" + }, + "heightm": 0.5, + "weightkg": 15, + "color": "Brown", + "evos": [ + "sudowoodo" + ], + "eggGroups": [ + "Undiscovered" + ] + }, + "mimejr": { + "num": 439, + "species": "Mime Jr.", + "types": [ + "Psychic", + "Fairy" + ], + "baseStats": { + "hp": 20, + "atk": 25, + "def": 45, + "spa": 70, + "spd": 90, + "spe": 60 + }, + "abilities": { + "0": "Soundproof", + "1": "Filter", + "H": "Technician" + }, + "heightm": 0.6, + "weightkg": 13, + "color": "Pink", + "evos": [ + "mrmime" + ], + "eggGroups": [ + "Undiscovered" + ] + }, + "happiny": { + "num": 440, + "species": "Happiny", + "types": [ + "Normal" + ], + "gender": "F", + "baseStats": { + "hp": 100, + "atk": 5, + "def": 5, + "spa": 15, + "spd": 65, + "spe": 30 + }, + "abilities": { + "0": "Natural Cure", + "1": "Serene Grace", + "H": "Friend Guard" + }, + "heightm": 0.6, + "weightkg": 24.4, + "color": "Pink", + "evos": [ + "chansey" + ], + "eggGroups": [ + "Undiscovered" + ] + }, + "chatot": { + "num": 441, + "species": "Chatot", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 76, + "atk": 65, + "def": 45, + "spa": 92, + "spd": 42, + "spe": 91 + }, + "abilities": { + "0": "Keen Eye", + "1": "Tangled Feet", + "H": "Big Pecks" + }, + "heightm": 0.5, + "weightkg": 1.9, + "color": "Black", + "eggGroups": [ + "Flying" + ] + }, + "spiritomb": { + "num": 442, + "species": "Spiritomb", + "types": [ + "Ghost", + "Dark" + ], + "baseStats": { + "hp": 50, + "atk": 92, + "def": 108, + "spa": 92, + "spd": 108, + "spe": 35 + }, + "abilities": { + "0": "Pressure", + "H": "Infiltrator" + }, + "heightm": 1, + "weightkg": 108, + "color": "Purple", + "eggGroups": [ + "Amorphous" + ] + }, + "gible": { + "num": 443, + "species": "Gible", + "types": [ + "Dragon", + "Ground" + ], + "baseStats": { + "hp": 58, + "atk": 70, + "def": 45, + "spa": 40, + "spd": 45, + "spe": 42 + }, + "abilities": { + "0": "Sand Veil", + "H": "Rough Skin" + }, + "heightm": 0.7, + "weightkg": 20.5, + "color": "Blue", + "evos": [ + "gabite" + ], + "eggGroups": [ + "Monster", + "Dragon" + ] + }, + "gabite": { + "num": 444, + "species": "Gabite", + "types": [ + "Dragon", + "Ground" + ], + "baseStats": { + "hp": 68, + "atk": 90, + "def": 65, + "spa": 50, + "spd": 55, + "spe": 82 + }, + "abilities": { + "0": "Sand Veil", + "H": "Rough Skin" + }, + "heightm": 1.4, + "weightkg": 56, + "color": "Blue", + "prevo": "gible", + "evos": [ + "garchomp" + ], + "evoLevel": 24, + "eggGroups": [ + "Monster", + "Dragon" + ] + }, + "garchomp": { + "num": 445, + "species": "Garchomp", + "types": [ + "Dragon", + "Ground" + ], + "baseStats": { + "hp": 108, + "atk": 130, + "def": 95, + "spa": 80, + "spd": 85, + "spe": 102 + }, + "abilities": { + "0": "Sand Veil", + "H": "Rough Skin" + }, + "heightm": 1.9, + "weightkg": 95, + "color": "Blue", + "prevo": "gabite", + "evoLevel": 48, + "eggGroups": [ + "Monster", + "Dragon" + ], + "otherFormes": [ + "garchompmega" + ] + }, + "garchompmega": { + "num": 445, + "species": "Garchomp-Mega", + "baseSpecies": "Garchomp", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Dragon", + "Ground" + ], + "baseStats": { + "hp": 108, + "atk": 170, + "def": 115, + "spa": 120, + "spd": 95, + "spe": 92 + }, + "abilities": { + "0": "Sand Force" + }, + "heightm": 1.9, + "weightkg": 95, + "color": "Blue", + "eggGroups": [ + "Monster", + "Dragon" + ] + }, + "munchlax": { + "num": 446, + "species": "Munchlax", + "types": [ + "Normal" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 135, + "atk": 85, + "def": 40, + "spa": 40, + "spd": 85, + "spe": 5 + }, + "abilities": { + "0": "Pickup", + "1": "Thick Fat", + "H": "Gluttony" + }, + "heightm": 0.6, + "weightkg": 105, + "color": "Black", + "evos": [ + "snorlax" + ], + "eggGroups": [ + "Undiscovered" + ] + }, + "riolu": { + "num": 447, + "species": "Riolu", + "types": [ + "Fighting" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 40, + "atk": 70, + "def": 40, + "spa": 35, + "spd": 40, + "spe": 60 + }, + "abilities": { + "0": "Steadfast", + "1": "Inner Focus", + "H": "Prankster" + }, + "heightm": 0.7, + "weightkg": 20.2, + "color": "Blue", + "evos": [ + "lucario" + ], + "eggGroups": [ + "Undiscovered" + ] + }, + "lucario": { + "num": 448, + "species": "Lucario", + "types": [ + "Fighting", + "Steel" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 70, + "atk": 110, + "def": 70, + "spa": 115, + "spd": 70, + "spe": 90 + }, + "abilities": { + "0": "Steadfast", + "1": "Inner Focus", + "H": "Justified" + }, + "heightm": 1.2, + "weightkg": 54, + "color": "Blue", + "prevo": "riolu", + "evoLevel": 2, + "eggGroups": [ + "Field", + "Human-Like" + ], + "otherFormes": [ + "lucariomega" + ] + }, + "lucariomega": { + "num": 448, + "species": "Lucario-Mega", + "baseSpecies": "Lucario", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Fighting", + "Steel" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 70, + "atk": 145, + "def": 88, + "spa": 140, + "spd": 70, + "spe": 112 + }, + "abilities": { + "0": "Adaptability" + }, + "heightm": 1.3, + "weightkg": 57.5, + "color": "Blue", + "eggGroups": [ + "Field", + "Human-Like" + ] + }, + "hippopotas": { + "num": 449, + "species": "Hippopotas", + "types": [ + "Ground" + ], + "baseStats": { + "hp": 68, + "atk": 72, + "def": 78, + "spa": 38, + "spd": 42, + "spe": 32 + }, + "abilities": { + "0": "Sand Stream", + "H": "Sand Force" + }, + "heightm": 0.8, + "weightkg": 49.5, + "color": "Brown", + "evos": [ + "hippowdon" + ], + "eggGroups": [ + "Field" + ] + }, + "hippowdon": { + "num": 450, + "species": "Hippowdon", + "types": [ + "Ground" + ], + "baseStats": { + "hp": 108, + "atk": 112, + "def": 118, + "spa": 68, + "spd": 72, + "spe": 47 + }, + "abilities": { + "0": "Sand Stream", + "H": "Sand Force" + }, + "heightm": 2, + "weightkg": 300, + "color": "Brown", + "prevo": "hippopotas", + "evoLevel": 34, + "eggGroups": [ + "Field" + ] + }, + "skorupi": { + "num": 451, + "species": "Skorupi", + "types": [ + "Poison", + "Bug" + ], + "baseStats": { + "hp": 40, + "atk": 50, + "def": 90, + "spa": 30, + "spd": 55, + "spe": 65 + }, + "abilities": { + "0": "Battle Armor", + "1": "Sniper", + "H": "Keen Eye" + }, + "heightm": 0.8, + "weightkg": 12, + "color": "Purple", + "evos": [ + "drapion" + ], + "eggGroups": [ + "Bug", + "Water 3" + ] + }, + "drapion": { + "num": 452, + "species": "Drapion", + "types": [ + "Poison", + "Dark" + ], + "baseStats": { + "hp": 70, + "atk": 90, + "def": 110, + "spa": 60, + "spd": 75, + "spe": 95 + }, + "abilities": { + "0": "Battle Armor", + "1": "Sniper", + "H": "Keen Eye" + }, + "heightm": 1.3, + "weightkg": 61.5, + "color": "Purple", + "prevo": "skorupi", + "evoLevel": 40, + "eggGroups": [ + "Bug", + "Water 3" + ] + }, + "croagunk": { + "num": 453, + "species": "Croagunk", + "types": [ + "Poison", + "Fighting" + ], + "baseStats": { + "hp": 48, + "atk": 61, + "def": 40, + "spa": 61, + "spd": 40, + "spe": 50 + }, + "abilities": { + "0": "Anticipation", + "1": "Dry Skin", + "H": "Poison Touch" + }, + "heightm": 0.7, + "weightkg": 23, + "color": "Blue", + "evos": [ + "toxicroak" + ], + "eggGroups": [ + "Human-Like" + ] + }, + "toxicroak": { + "num": 454, + "species": "Toxicroak", + "types": [ + "Poison", + "Fighting" + ], + "baseStats": { + "hp": 83, + "atk": 106, + "def": 65, + "spa": 86, + "spd": 65, + "spe": 85 + }, + "abilities": { + "0": "Anticipation", + "1": "Dry Skin", + "H": "Poison Touch" + }, + "heightm": 1.3, + "weightkg": 44.4, + "color": "Blue", + "prevo": "croagunk", + "evoLevel": 37, + "eggGroups": [ + "Human-Like" + ] + }, + "carnivine": { + "num": 455, + "species": "Carnivine", + "types": [ + "Grass" + ], + "baseStats": { + "hp": 74, + "atk": 100, + "def": 72, + "spa": 90, + "spd": 72, + "spe": 46 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 1.4, + "weightkg": 27, + "color": "Green", + "eggGroups": [ + "Grass" + ] + }, + "finneon": { + "num": 456, + "species": "Finneon", + "types": [ + "Water" + ], + "baseStats": { + "hp": 49, + "atk": 49, + "def": 56, + "spa": 49, + "spd": 61, + "spe": 66 + }, + "abilities": { + "0": "Swift Swim", + "1": "Storm Drain", + "H": "Water Veil" + }, + "heightm": 0.4, + "weightkg": 7, + "color": "Blue", + "evos": [ + "lumineon" + ], + "eggGroups": [ + "Water 2" + ] + }, + "lumineon": { + "num": 457, + "species": "Lumineon", + "types": [ + "Water" + ], + "baseStats": { + "hp": 69, + "atk": 69, + "def": 76, + "spa": 69, + "spd": 86, + "spe": 91 + }, + "abilities": { + "0": "Swift Swim", + "1": "Storm Drain", + "H": "Water Veil" + }, + "heightm": 1.2, + "weightkg": 24, + "color": "Blue", + "prevo": "finneon", + "evoLevel": 31, + "eggGroups": [ + "Water 2" + ] + }, + "mantyke": { + "num": 458, + "species": "Mantyke", + "types": [ + "Water", + "Flying" + ], + "baseStats": { + "hp": 45, + "atk": 20, + "def": 50, + "spa": 60, + "spd": 120, + "spe": 50 + }, + "abilities": { + "0": "Swift Swim", + "1": "Water Absorb", + "H": "Water Veil" + }, + "heightm": 1, + "weightkg": 65, + "color": "Blue", + "evos": [ + "mantine" + ], + "eggGroups": [ + "Undiscovered" + ] + }, + "snover": { + "num": 459, + "species": "Snover", + "types": [ + "Grass", + "Ice" + ], + "baseStats": { + "hp": 60, + "atk": 62, + "def": 50, + "spa": 62, + "spd": 60, + "spe": 40 + }, + "abilities": { + "0": "Snow Warning", + "H": "Soundproof" + }, + "heightm": 1, + "weightkg": 50.5, + "color": "White", + "evos": [ + "abomasnow" + ], + "eggGroups": [ + "Monster", + "Grass" + ] + }, + "abomasnow": { + "num": 460, + "species": "Abomasnow", + "types": [ + "Grass", + "Ice" + ], + "baseStats": { + "hp": 90, + "atk": 92, + "def": 75, + "spa": 92, + "spd": 85, + "spe": 60 + }, + "abilities": { + "0": "Snow Warning", + "H": "Soundproof" + }, + "heightm": 2.2, + "weightkg": 135.5, + "color": "White", + "prevo": "snover", + "evoLevel": 40, + "eggGroups": [ + "Monster", + "Grass" + ], + "otherFormes": [ + "abomasnowmega" + ] + }, + "abomasnowmega": { + "num": 460, + "species": "Abomasnow-Mega", + "baseSpecies": "Abomasnow", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Grass", + "Ice" + ], + "baseStats": { + "hp": 90, + "atk": 132, + "def": 105, + "spa": 132, + "spd": 105, + "spe": 30 + }, + "abilities": { + "0": "Snow Warning" + }, + "heightm": 2.7, + "weightkg": 185, + "color": "White", + "eggGroups": [ + "Monster", + "Grass" + ] + }, + "weavile": { + "num": 461, + "species": "Weavile", + "types": [ + "Dark", + "Ice" + ], + "baseStats": { + "hp": 70, + "atk": 120, + "def": 65, + "spa": 45, + "spd": 85, + "spe": 125 + }, + "abilities": { + "0": "Pressure", + "H": "Pickpocket" + }, + "heightm": 1.1, + "weightkg": 34, + "color": "Black", + "prevo": "sneasel", + "evoLevel": 2, + "eggGroups": [ + "Field" + ] + }, + "magnezone": { + "num": 462, + "species": "Magnezone", + "types": [ + "Electric", + "Steel" + ], + "gender": "N", + "baseStats": { + "hp": 70, + "atk": 70, + "def": 115, + "spa": 130, + "spd": 90, + "spe": 60 + }, + "abilities": { + "0": "Magnet Pull", + "1": "Sturdy", + "H": "Analytic" + }, + "heightm": 1.2, + "weightkg": 180, + "color": "Gray", + "prevo": "magneton", + "evoLevel": 31, + "eggGroups": [ + "Mineral" + ] + }, + "lickilicky": { + "num": 463, + "species": "Lickilicky", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 110, + "atk": 85, + "def": 95, + "spa": 80, + "spd": 95, + "spe": 50 + }, + "abilities": { + "0": "Own Tempo", + "1": "Oblivious", + "H": "Cloud Nine" + }, + "heightm": 1.7, + "weightkg": 140, + "color": "Pink", + "prevo": "lickitung", + "evoLevel": 2, + "evoMove": "Rollout", + "eggGroups": [ + "Monster" + ] + }, + "rhyperior": { + "num": 464, + "species": "Rhyperior", + "types": [ + "Ground", + "Rock" + ], + "baseStats": { + "hp": 115, + "atk": 140, + "def": 130, + "spa": 55, + "spd": 55, + "spe": 40 + }, + "abilities": { + "0": "Lightning Rod", + "1": "Solid Rock", + "H": "Reckless" + }, + "heightm": 2.4, + "weightkg": 282.8, + "color": "Gray", + "prevo": "rhydon", + "evoLevel": 42, + "eggGroups": [ + "Monster", + "Field" + ] + }, + "tangrowth": { + "num": 465, + "species": "Tangrowth", + "types": [ + "Grass" + ], + "baseStats": { + "hp": 100, + "atk": 100, + "def": 125, + "spa": 110, + "spd": 50, + "spe": 50 + }, + "abilities": { + "0": "Chlorophyll", + "1": "Leaf Guard", + "H": "Regenerator" + }, + "heightm": 2, + "weightkg": 128.6, + "color": "Blue", + "prevo": "tangela", + "evoLevel": 2, + "evoMove": "AncientPower", + "eggGroups": [ + "Grass" + ] + }, + "electivire": { + "num": 466, + "species": "Electivire", + "types": [ + "Electric" + ], + "genderRatio": { + "M": 0.75, + "F": 0.25 + }, + "baseStats": { + "hp": 75, + "atk": 123, + "def": 67, + "spa": 95, + "spd": 85, + "spe": 95 + }, + "abilities": { + "0": "Motor Drive", + "H": "Vital Spirit" + }, + "heightm": 1.8, + "weightkg": 138.6, + "color": "Yellow", + "prevo": "electabuzz", + "evoLevel": 30, + "eggGroups": [ + "Human-Like" + ] + }, + "magmortar": { + "num": 467, + "species": "Magmortar", + "types": [ + "Fire" + ], + "genderRatio": { + "M": 0.75, + "F": 0.25 + }, + "baseStats": { + "hp": 75, + "atk": 95, + "def": 67, + "spa": 125, + "spd": 95, + "spe": 83 + }, + "abilities": { + "0": "Flame Body", + "H": "Vital Spirit" + }, + "heightm": 1.6, + "weightkg": 68, + "color": "Red", + "prevo": "magmar", + "evoLevel": 30, + "eggGroups": [ + "Human-Like" + ] + }, + "togekiss": { + "num": 468, + "species": "Togekiss", + "types": [ + "Fairy", + "Flying" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 85, + "atk": 50, + "def": 95, + "spa": 120, + "spd": 115, + "spe": 80 + }, + "abilities": { + "0": "Hustle", + "1": "Serene Grace", + "H": "Super Luck" + }, + "heightm": 1.5, + "weightkg": 38, + "color": "White", + "prevo": "togetic", + "evoLevel": 2, + "eggGroups": [ + "Flying", + "Fairy" + ] + }, + "yanmega": { + "num": 469, + "species": "Yanmega", + "types": [ + "Bug", + "Flying" + ], + "baseStats": { + "hp": 86, + "atk": 76, + "def": 86, + "spa": 116, + "spd": 56, + "spe": 95 + }, + "abilities": { + "0": "Speed Boost", + "1": "Tinted Lens", + "H": "Frisk" + }, + "heightm": 1.9, + "weightkg": 51.5, + "color": "Green", + "prevo": "yanma", + "evoLevel": 2, + "evoMove": "AncientPower", + "eggGroups": [ + "Bug" + ] + }, + "leafeon": { + "num": 470, + "species": "Leafeon", + "types": [ + "Grass" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 65, + "atk": 110, + "def": 130, + "spa": 60, + "spd": 65, + "spe": 95 + }, + "abilities": { + "0": "Leaf Guard", + "H": "Chlorophyll" + }, + "heightm": 1, + "weightkg": 25.5, + "color": "Green", + "prevo": "eevee", + "evoLevel": 2, + "eggGroups": [ + "Field" + ] + }, + "glaceon": { + "num": 471, + "species": "Glaceon", + "types": [ + "Ice" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 65, + "atk": 60, + "def": 110, + "spa": 130, + "spd": 95, + "spe": 65 + }, + "abilities": { + "0": "Snow Cloak", + "H": "Ice Body" + }, + "heightm": 0.8, + "weightkg": 25.9, + "color": "Blue", + "prevo": "eevee", + "evoLevel": 2, + "eggGroups": [ + "Field" + ] + }, + "gliscor": { + "num": 472, + "species": "Gliscor", + "types": [ + "Ground", + "Flying" + ], + "baseStats": { + "hp": 75, + "atk": 95, + "def": 125, + "spa": 45, + "spd": 75, + "spe": 95 + }, + "abilities": { + "0": "Hyper Cutter", + "1": "Sand Veil", + "H": "Poison Heal" + }, + "heightm": 2, + "weightkg": 42.5, + "color": "Purple", + "prevo": "gligar", + "evoLevel": 2, + "eggGroups": [ + "Bug" + ] + }, + "mamoswine": { + "num": 473, + "species": "Mamoswine", + "types": [ + "Ice", + "Ground" + ], + "baseStats": { + "hp": 110, + "atk": 130, + "def": 80, + "spa": 70, + "spd": 60, + "spe": 80 + }, + "abilities": { + "0": "Oblivious", + "1": "Snow Cloak", + "H": "Thick Fat" + }, + "heightm": 2.5, + "weightkg": 291, + "color": "Brown", + "prevo": "piloswine", + "evoLevel": 34, + "evoMove": "AncientPower", + "eggGroups": [ + "Field" + ] + }, + "porygonz": { + "num": 474, + "species": "Porygon-Z", + "types": [ + "Normal" + ], + "gender": "N", + "baseStats": { + "hp": 85, + "atk": 80, + "def": 70, + "spa": 135, + "spd": 75, + "spe": 90 + }, + "abilities": { + "0": "Adaptability", + "1": "Download", + "H": "Analytic" + }, + "heightm": 0.9, + "weightkg": 34, + "color": "Red", + "prevo": "porygon2", + "evoLevel": 1, + "eggGroups": [ + "Mineral" + ] + }, + "gallade": { + "num": 475, + "species": "Gallade", + "types": [ + "Psychic", + "Fighting" + ], + "gender": "M", + "baseStats": { + "hp": 68, + "atk": 125, + "def": 65, + "spa": 65, + "spd": 115, + "spe": 80 + }, + "abilities": { + "0": "Steadfast", + "H": "Justified" + }, + "heightm": 1.6, + "weightkg": 52, + "color": "White", + "prevo": "kirlia", + "evoLevel": 20, + "eggGroups": [ + "Amorphous" + ], + "otherFormes": [ + "gallademega" + ] + }, + "gallademega": { + "num": 475, + "species": "Gallade-Mega", + "baseSpecies": "Gallade", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Psychic", + "Fighting" + ], + "gender": "M", + "baseStats": { + "hp": 68, + "atk": 165, + "def": 95, + "spa": 65, + "spd": 115, + "spe": 110 + }, + "abilities": { + "0": "Inner Focus" + }, + "heightm": 1.6, + "weightkg": 56.4, + "color": "White", + "eggGroups": [ + "Amorphous" + ] + }, + "probopass": { + "num": 476, + "species": "Probopass", + "types": [ + "Rock", + "Steel" + ], + "baseStats": { + "hp": 60, + "atk": 55, + "def": 145, + "spa": 75, + "spd": 150, + "spe": 40 + }, + "abilities": { + "0": "Sturdy", + "1": "Magnet Pull", + "H": "Sand Force" + }, + "heightm": 1.4, + "weightkg": 340, + "color": "Gray", + "prevo": "nosepass", + "evoLevel": 2, + "eggGroups": [ + "Mineral" + ] + }, + "dusknoir": { + "num": 477, + "species": "Dusknoir", + "types": [ + "Ghost" + ], + "baseStats": { + "hp": 45, + "atk": 100, + "def": 135, + "spa": 65, + "spd": 135, + "spe": 45 + }, + "abilities": { + "0": "Pressure", + "H": "Frisk" + }, + "heightm": 2.2, + "weightkg": 106.6, + "color": "Black", + "prevo": "dusclops", + "evoLevel": 37, + "eggGroups": [ + "Amorphous" + ] + }, + "froslass": { + "num": 478, + "species": "Froslass", + "types": [ + "Ice", + "Ghost" + ], + "gender": "F", + "baseStats": { + "hp": 70, + "atk": 80, + "def": 70, + "spa": 80, + "spd": 70, + "spe": 110 + }, + "abilities": { + "0": "Snow Cloak", + "H": "Cursed Body" + }, + "heightm": 1.3, + "weightkg": 26.6, + "color": "White", + "prevo": "snorunt", + "evoLevel": 1, + "eggGroups": [ + "Fairy", + "Mineral" + ] + }, + "rotom": { + "num": 479, + "species": "Rotom", + "types": [ + "Electric", + "Ghost" + ], + "gender": "N", + "baseStats": { + "hp": 50, + "atk": 50, + "def": 77, + "spa": 95, + "spd": 77, + "spe": 91 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 0.3, + "weightkg": 0.3, + "color": "Red", + "eggGroups": [ + "Amorphous" + ], + "otherFormes": [ + "rotomheat", + "rotomwash", + "rotomfrost", + "rotomfan", + "rotommow" + ] + }, + "rotomheat": { + "num": 479, + "species": "Rotom-Heat", + "baseSpecies": "Rotom", + "forme": "Heat", + "formeLetter": "H", + "types": [ + "Electric", + "Fire" + ], + "gender": "N", + "baseStats": { + "hp": 50, + "atk": 65, + "def": 107, + "spa": 105, + "spd": 107, + "spe": 86 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 0.3, + "weightkg": 0.3, + "color": "Red", + "eggGroups": [ + "Amorphous" + ] + }, + "rotomwash": { + "num": 479, + "species": "Rotom-Wash", + "baseSpecies": "Rotom", + "forme": "Wash", + "formeLetter": "W", + "types": [ + "Electric", + "Water" + ], + "gender": "N", + "baseStats": { + "hp": 50, + "atk": 65, + "def": 107, + "spa": 105, + "spd": 107, + "spe": 86 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 0.3, + "weightkg": 0.3, + "color": "Red", + "eggGroups": [ + "Amorphous" + ] + }, + "rotomfrost": { + "num": 479, + "species": "Rotom-Frost", + "baseSpecies": "Rotom", + "forme": "Frost", + "formeLetter": "F", + "types": [ + "Electric", + "Ice" + ], + "gender": "N", + "baseStats": { + "hp": 50, + "atk": 65, + "def": 107, + "spa": 105, + "spd": 107, + "spe": 86 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 0.3, + "weightkg": 0.3, + "color": "Red", + "eggGroups": [ + "Amorphous" + ] + }, + "rotomfan": { + "num": 479, + "species": "Rotom-Fan", + "baseSpecies": "Rotom", + "forme": "Fan", + "formeLetter": "S", + "types": [ + "Electric", + "Flying" + ], + "gender": "N", + "baseStats": { + "hp": 50, + "atk": 65, + "def": 107, + "spa": 105, + "spd": 107, + "spe": 86 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 0.3, + "weightkg": 0.3, + "color": "Red", + "eggGroups": [ + "Amorphous" + ] + }, + "rotommow": { + "num": 479, + "species": "Rotom-Mow", + "baseSpecies": "Rotom", + "forme": "Mow", + "formeLetter": "C", + "types": [ + "Electric", + "Grass" + ], + "gender": "N", + "baseStats": { + "hp": 50, + "atk": 65, + "def": 107, + "spa": 105, + "spd": 107, + "spe": 86 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 0.3, + "weightkg": 0.3, + "color": "Red", + "eggGroups": [ + "Amorphous" + ] + }, + "uxie": { + "num": 480, + "species": "Uxie", + "types": [ + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 75, + "atk": 75, + "def": 130, + "spa": 75, + "spd": 130, + "spe": 95 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 0.3, + "weightkg": 0.3, + "color": "Yellow", + "eggGroups": [ + "Undiscovered" + ] + }, + "mesprit": { + "num": 481, + "species": "Mesprit", + "types": [ + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 80, + "atk": 105, + "def": 105, + "spa": 105, + "spd": 105, + "spe": 80 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 0.3, + "weightkg": 0.3, + "color": "Pink", + "eggGroups": [ + "Undiscovered" + ] + }, + "azelf": { + "num": 482, + "species": "Azelf", + "types": [ + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 75, + "atk": 125, + "def": 70, + "spa": 125, + "spd": 70, + "spe": 115 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 0.3, + "weightkg": 0.3, + "color": "Blue", + "eggGroups": [ + "Undiscovered" + ] + }, + "dialga": { + "num": 483, + "species": "Dialga", + "types": [ + "Steel", + "Dragon" + ], + "gender": "N", + "baseStats": { + "hp": 100, + "atk": 120, + "def": 120, + "spa": 150, + "spd": 100, + "spe": 90 + }, + "abilities": { + "0": "Pressure", + "H": "Telepathy" + }, + "heightm": 5.4, + "weightkg": 683, + "color": "White", + "eggGroups": [ + "Undiscovered" + ] + }, + "palkia": { + "num": 484, + "species": "Palkia", + "types": [ + "Water", + "Dragon" + ], + "gender": "N", + "baseStats": { + "hp": 90, + "atk": 120, + "def": 100, + "spa": 150, + "spd": 120, + "spe": 100 + }, + "abilities": { + "0": "Pressure", + "H": "Telepathy" + }, + "heightm": 4.2, + "weightkg": 336, + "color": "Purple", + "eggGroups": [ + "Undiscovered" + ] + }, + "heatran": { + "num": 485, + "species": "Heatran", + "types": [ + "Fire", + "Steel" + ], + "baseStats": { + "hp": 91, + "atk": 90, + "def": 106, + "spa": 130, + "spd": 106, + "spe": 77 + }, + "abilities": { + "0": "Flash Fire", + "H": "Flame Body" + }, + "heightm": 1.7, + "weightkg": 430, + "color": "Brown", + "eggGroups": [ + "Undiscovered" + ] + }, + "regigigas": { + "num": 486, + "species": "Regigigas", + "types": [ + "Normal" + ], + "gender": "N", + "baseStats": { + "hp": 110, + "atk": 160, + "def": 110, + "spa": 80, + "spd": 110, + "spe": 100 + }, + "abilities": { + "0": "Slow Start" + }, + "heightm": 3.7, + "weightkg": 420, + "color": "White", + "eggGroups": [ + "Undiscovered" + ] + }, + "giratina": { + "num": 487, + "species": "Giratina", + "baseForme": "Altered", + "types": [ + "Ghost", + "Dragon" + ], + "gender": "N", + "baseStats": { + "hp": 150, + "atk": 100, + "def": 120, + "spa": 100, + "spd": 120, + "spe": 90 + }, + "abilities": { + "0": "Pressure", + "H": "Telepathy" + }, + "heightm": 4.5, + "weightkg": 750, + "color": "Black", + "eggGroups": [ + "Undiscovered" + ], + "otherFormes": [ + "giratinaorigin" + ] + }, + "giratinaorigin": { + "num": 487, + "species": "Giratina-Origin", + "baseSpecies": "Giratina", + "forme": "Origin", + "formeLetter": "O", + "types": [ + "Ghost", + "Dragon" + ], + "gender": "N", + "baseStats": { + "hp": 150, + "atk": 120, + "def": 100, + "spa": 120, + "spd": 100, + "spe": 90 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 6.9, + "weightkg": 650, + "color": "Black", + "eggGroups": [ + "Undiscovered" + ] + }, + "cresselia": { + "num": 488, + "species": "Cresselia", + "types": [ + "Psychic" + ], + "gender": "F", + "baseStats": { + "hp": 120, + "atk": 70, + "def": 120, + "spa": 75, + "spd": 130, + "spe": 85 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 1.5, + "weightkg": 85.6, + "color": "Yellow", + "eggGroups": [ + "Undiscovered" + ] + }, + "phione": { + "num": 489, + "species": "Phione", + "types": [ + "Water" + ], + "gender": "N", + "baseStats": { + "hp": 80, + "atk": 80, + "def": 80, + "spa": 80, + "spd": 80, + "spe": 80 + }, + "abilities": { + "0": "Hydration" + }, + "heightm": 0.4, + "weightkg": 3.1, + "color": "Blue", + "eggGroups": [ + "Water 1", + "Fairy" + ] + }, + "manaphy": { + "num": 490, + "species": "Manaphy", + "types": [ + "Water" + ], + "gender": "N", + "baseStats": { + "hp": 100, + "atk": 100, + "def": 100, + "spa": 100, + "spd": 100, + "spe": 100 + }, + "abilities": { + "0": "Hydration" + }, + "heightm": 0.3, + "weightkg": 1.4, + "color": "Blue", + "eggGroups": [ + "Water 1", + "Fairy" + ] + }, + "darkrai": { + "num": 491, + "species": "Darkrai", + "types": [ + "Dark" + ], + "gender": "N", + "baseStats": { + "hp": 70, + "atk": 90, + "def": 90, + "spa": 135, + "spd": 90, + "spe": 125 + }, + "abilities": { + "0": "Bad Dreams" + }, + "heightm": 1.5, + "weightkg": 50.5, + "color": "Black", + "eggGroups": [ + "Undiscovered" + ] + }, + "shaymin": { + "num": 492, + "species": "Shaymin", + "baseForme": "Land", + "types": [ + "Grass" + ], + "gender": "N", + "baseStats": { + "hp": 100, + "atk": 100, + "def": 100, + "spa": 100, + "spd": 100, + "spe": 100 + }, + "abilities": { + "0": "Natural Cure" + }, + "heightm": 0.2, + "weightkg": 2.1, + "color": "Green", + "eggGroups": [ + "Undiscovered" + ], + "otherFormes": [ + "shayminsky" + ] + }, + "shayminsky": { + "num": 492, + "species": "Shaymin-Sky", + "baseSpecies": "Shaymin", + "forme": "Sky", + "formeLetter": "S", + "types": [ + "Grass", + "Flying" + ], + "gender": "N", + "baseStats": { + "hp": 100, + "atk": 103, + "def": 75, + "spa": 120, + "spd": 75, + "spe": 127 + }, + "abilities": { + "0": "Serene Grace" + }, + "heightm": 0.4, + "weightkg": 5.2, + "color": "Green", + "eggGroups": [ + "Undiscovered" + ] + }, + "arceus": { + "num": 493, + "species": "Arceus", + "baseForme": "Normal", + "types": [ + "Normal" + ], + "gender": "N", + "baseStats": { + "hp": 120, + "atk": 120, + "def": 120, + "spa": 120, + "spd": 120, + "spe": 120 + }, + "abilities": { + "0": "Multitype" + }, + "heightm": 3.2, + "weightkg": 320, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ], + "otherFormes": [ + "arceusbug", + "arceusdark", + "arceusdragon", + "arceuselectric", + "arceusfairy", + "arceusfighting", + "arceusfire", + "arceusflying", + "arceusghost", + "arceusgrass", + "arceusground", + "arceusice", + "arceuspoison", + "arceuspsychic", + "arceusrock", + "arceussteel", + "arceuswater" + ] + }, + "arceusbug": { + "num": 493, + "species": "Arceus-Bug", + "baseSpecies": "Arceus", + "forme": "Bug", + "formeLetter": "B", + "types": [ + "Bug" + ], + "gender": "N", + "baseStats": { + "hp": 120, + "atk": 120, + "def": 120, + "spa": 120, + "spd": 120, + "spe": 120 + }, + "abilities": { + "0": "Multitype" + }, + "heightm": 3.2, + "weightkg": 320, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "arceusdark": { + "num": 493, + "species": "Arceus-Dark", + "baseSpecies": "Arceus", + "forme": "Dark", + "formeLetter": "D", + "types": [ + "Dark" + ], + "gender": "N", + "baseStats": { + "hp": 120, + "atk": 120, + "def": 120, + "spa": 120, + "spd": 120, + "spe": 120 + }, + "abilities": { + "0": "Multitype" + }, + "heightm": 3.2, + "weightkg": 320, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "arceusdragon": { + "num": 493, + "species": "Arceus-Dragon", + "baseSpecies": "Arceus", + "forme": "Dragon", + "formeLetter": "D", + "types": [ + "Dragon" + ], + "gender": "N", + "baseStats": { + "hp": 120, + "atk": 120, + "def": 120, + "spa": 120, + "spd": 120, + "spe": 120 + }, + "abilities": { + "0": "Multitype" + }, + "heightm": 3.2, + "weightkg": 320, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "arceuselectric": { + "num": 493, + "species": "Arceus-Electric", + "baseSpecies": "Arceus", + "forme": "Electric", + "formeLetter": "E", + "types": [ + "Electric" + ], + "gender": "N", + "baseStats": { + "hp": 120, + "atk": 120, + "def": 120, + "spa": 120, + "spd": 120, + "spe": 120 + }, + "abilities": { + "0": "Multitype" + }, + "heightm": 3.2, + "weightkg": 320, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "arceusfairy": { + "num": 493, + "species": "Arceus-Fairy", + "baseSpecies": "Arceus", + "forme": "Fairy", + "formeLetter": "F", + "types": [ + "Fairy" + ], + "gender": "N", + "baseStats": { + "hp": 120, + "atk": 120, + "def": 120, + "spa": 120, + "spd": 120, + "spe": 120 + }, + "abilities": { + "0": "Multitype" + }, + "heightm": 3.2, + "weightkg": 320, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "arceusfighting": { + "num": 493, + "species": "Arceus-Fighting", + "baseSpecies": "Arceus", + "forme": "Fighting", + "formeLetter": "F", + "types": [ + "Fighting" + ], + "gender": "N", + "baseStats": { + "hp": 120, + "atk": 120, + "def": 120, + "spa": 120, + "spd": 120, + "spe": 120 + }, + "abilities": { + "0": "Multitype" + }, + "heightm": 3.2, + "weightkg": 320, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "arceusfire": { + "num": 493, + "species": "Arceus-Fire", + "baseSpecies": "Arceus", + "forme": "Fire", + "formeLetter": "F", + "types": [ + "Fire" + ], + "gender": "N", + "baseStats": { + "hp": 120, + "atk": 120, + "def": 120, + "spa": 120, + "spd": 120, + "spe": 120 + }, + "abilities": { + "0": "Multitype" + }, + "heightm": 3.2, + "weightkg": 320, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "arceusflying": { + "num": 493, + "species": "Arceus-Flying", + "baseSpecies": "Arceus", + "forme": "Flying", + "formeLetter": "F", + "types": [ + "Flying" + ], + "gender": "N", + "baseStats": { + "hp": 120, + "atk": 120, + "def": 120, + "spa": 120, + "spd": 120, + "spe": 120 + }, + "abilities": { + "0": "Multitype" + }, + "heightm": 3.2, + "weightkg": 320, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "arceusghost": { + "num": 493, + "species": "Arceus-Ghost", + "baseSpecies": "Arceus", + "forme": "Ghost", + "formeLetter": "G", + "types": [ + "Ghost" + ], + "gender": "N", + "baseStats": { + "hp": 120, + "atk": 120, + "def": 120, + "spa": 120, + "spd": 120, + "spe": 120 + }, + "abilities": { + "0": "Multitype" + }, + "heightm": 3.2, + "weightkg": 320, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "arceusgrass": { + "num": 493, + "species": "Arceus-Grass", + "baseSpecies": "Arceus", + "forme": "Grass", + "formeLetter": "G", + "types": [ + "Grass" + ], + "gender": "N", + "baseStats": { + "hp": 120, + "atk": 120, + "def": 120, + "spa": 120, + "spd": 120, + "spe": 120 + }, + "abilities": { + "0": "Multitype" + }, + "heightm": 3.2, + "weightkg": 320, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "arceusground": { + "num": 493, + "species": "Arceus-Ground", + "baseSpecies": "Arceus", + "forme": "Ground", + "formeLetter": "G", + "types": [ + "Ground" + ], + "gender": "N", + "baseStats": { + "hp": 120, + "atk": 120, + "def": 120, + "spa": 120, + "spd": 120, + "spe": 120 + }, + "abilities": { + "0": "Multitype" + }, + "heightm": 3.2, + "weightkg": 320, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "arceusice": { + "num": 493, + "species": "Arceus-Ice", + "baseSpecies": "Arceus", + "forme": "Ice", + "formeLetter": "I", + "types": [ + "Ice" + ], + "gender": "N", + "baseStats": { + "hp": 120, + "atk": 120, + "def": 120, + "spa": 120, + "spd": 120, + "spe": 120 + }, + "abilities": { + "0": "Multitype" + }, + "heightm": 3.2, + "weightkg": 320, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "arceuspoison": { + "num": 493, + "species": "Arceus-Poison", + "baseSpecies": "Arceus", + "forme": "Poison", + "formeLetter": "P", + "types": [ + "Poison" + ], + "gender": "N", + "baseStats": { + "hp": 120, + "atk": 120, + "def": 120, + "spa": 120, + "spd": 120, + "spe": 120 + }, + "abilities": { + "0": "Multitype" + }, + "heightm": 3.2, + "weightkg": 320, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "arceuspsychic": { + "num": 493, + "species": "Arceus-Psychic", + "baseSpecies": "Arceus", + "forme": "Psychic", + "formeLetter": "P", + "types": [ + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 120, + "atk": 120, + "def": 120, + "spa": 120, + "spd": 120, + "spe": 120 + }, + "abilities": { + "0": "Multitype" + }, + "heightm": 3.2, + "weightkg": 320, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "arceusrock": { + "num": 493, + "species": "Arceus-Rock", + "baseSpecies": "Arceus", + "forme": "Rock", + "formeLetter": "R", + "types": [ + "Rock" + ], + "gender": "N", + "baseStats": { + "hp": 120, + "atk": 120, + "def": 120, + "spa": 120, + "spd": 120, + "spe": 120 + }, + "abilities": { + "0": "Multitype" + }, + "heightm": 3.2, + "weightkg": 320, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "arceussteel": { + "num": 493, + "species": "Arceus-Steel", + "baseSpecies": "Arceus", + "forme": "Steel", + "formeLetter": "S", + "types": [ + "Steel" + ], + "gender": "N", + "baseStats": { + "hp": 120, + "atk": 120, + "def": 120, + "spa": 120, + "spd": 120, + "spe": 120 + }, + "abilities": { + "0": "Multitype" + }, + "heightm": 3.2, + "weightkg": 320, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "arceuswater": { + "num": 493, + "species": "Arceus-Water", + "baseSpecies": "Arceus", + "forme": "Water", + "formeLetter": "W", + "types": [ + "Water" + ], + "gender": "N", + "baseStats": { + "hp": 120, + "atk": 120, + "def": 120, + "spa": 120, + "spd": 120, + "spe": 120 + }, + "abilities": { + "0": "Multitype" + }, + "heightm": 3.2, + "weightkg": 320, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "victini": { + "num": 494, + "species": "Victini", + "types": [ + "Psychic", + "Fire" + ], + "gender": "N", + "baseStats": { + "hp": 100, + "atk": 100, + "def": 100, + "spa": 100, + "spd": 100, + "spe": 100 + }, + "abilities": { + "0": "Victory Star" + }, + "heightm": 0.4, + "weightkg": 4, + "color": "Yellow", + "eggGroups": [ + "Undiscovered" + ] + }, + "snivy": { + "num": 495, + "species": "Snivy", + "types": [ + "Grass" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 45, + "atk": 45, + "def": 55, + "spa": 45, + "spd": 55, + "spe": 63 + }, + "abilities": { + "0": "Overgrow", + "H": "Contrary" + }, + "heightm": 0.6, + "weightkg": 8.1, + "color": "Green", + "evos": [ + "servine" + ], + "eggGroups": [ + "Field", + "Grass" + ] + }, + "servine": { + "num": 496, + "species": "Servine", + "types": [ + "Grass" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 60, + "atk": 60, + "def": 75, + "spa": 60, + "spd": 75, + "spe": 83 + }, + "abilities": { + "0": "Overgrow", + "H": "Contrary" + }, + "heightm": 0.8, + "weightkg": 16, + "color": "Green", + "prevo": "snivy", + "evos": [ + "serperior" + ], + "evoLevel": 17, + "eggGroups": [ + "Field", + "Grass" + ] + }, + "serperior": { + "num": 497, + "species": "Serperior", + "types": [ + "Grass" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 75, + "atk": 75, + "def": 95, + "spa": 75, + "spd": 95, + "spe": 113 + }, + "abilities": { + "0": "Overgrow", + "H": "Contrary" + }, + "heightm": 3.3, + "weightkg": 63, + "color": "Green", + "prevo": "servine", + "evoLevel": 36, + "eggGroups": [ + "Field", + "Grass" + ] + }, + "tepig": { + "num": 498, + "species": "Tepig", + "types": [ + "Fire" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 65, + "atk": 63, + "def": 45, + "spa": 45, + "spd": 45, + "spe": 45 + }, + "abilities": { + "0": "Blaze", + "H": "Thick Fat" + }, + "heightm": 0.5, + "weightkg": 9.9, + "color": "Red", + "evos": [ + "pignite" + ], + "eggGroups": [ + "Field" + ] + }, + "pignite": { + "num": 499, + "species": "Pignite", + "types": [ + "Fire", + "Fighting" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 90, + "atk": 93, + "def": 55, + "spa": 70, + "spd": 55, + "spe": 55 + }, + "abilities": { + "0": "Blaze", + "H": "Thick Fat" + }, + "heightm": 1, + "weightkg": 55.5, + "color": "Red", + "prevo": "tepig", + "evos": [ + "emboar" + ], + "evoLevel": 17, + "eggGroups": [ + "Field" + ] + }, + "emboar": { + "num": 500, + "species": "Emboar", + "types": [ + "Fire", + "Fighting" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 110, + "atk": 123, + "def": 65, + "spa": 100, + "spd": 65, + "spe": 65 + }, + "abilities": { + "0": "Blaze", + "H": "Reckless" + }, + "heightm": 1.6, + "weightkg": 150, + "color": "Red", + "prevo": "pignite", + "evoLevel": 36, + "eggGroups": [ + "Field" + ] + }, + "oshawott": { + "num": 501, + "species": "Oshawott", + "types": [ + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 55, + "atk": 55, + "def": 45, + "spa": 63, + "spd": 45, + "spe": 45 + }, + "abilities": { + "0": "Torrent", + "H": "Shell Armor" + }, + "heightm": 0.5, + "weightkg": 5.9, + "color": "Blue", + "evos": [ + "dewott" + ], + "eggGroups": [ + "Field" + ] + }, + "dewott": { + "num": 502, + "species": "Dewott", + "types": [ + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 75, + "atk": 75, + "def": 60, + "spa": 83, + "spd": 60, + "spe": 60 + }, + "abilities": { + "0": "Torrent", + "H": "Shell Armor" + }, + "heightm": 0.8, + "weightkg": 24.5, + "color": "Blue", + "prevo": "oshawott", + "evos": [ + "samurott" + ], + "evoLevel": 17, + "eggGroups": [ + "Field" + ] + }, + "samurott": { + "num": 503, + "species": "Samurott", + "types": [ + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 95, + "atk": 100, + "def": 85, + "spa": 108, + "spd": 70, + "spe": 70 + }, + "abilities": { + "0": "Torrent", + "H": "Shell Armor" + }, + "heightm": 1.5, + "weightkg": 94.6, + "color": "Blue", + "prevo": "dewott", + "evoLevel": 36, + "eggGroups": [ + "Field" + ] + }, + "patrat": { + "num": 504, + "species": "Patrat", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 45, + "atk": 55, + "def": 39, + "spa": 35, + "spd": 39, + "spe": 42 + }, + "abilities": { + "0": "Run Away", + "1": "Keen Eye", + "H": "Analytic" + }, + "heightm": 0.5, + "weightkg": 11.6, + "color": "Brown", + "evos": [ + "watchog" + ], + "eggGroups": [ + "Field" + ] + }, + "watchog": { + "num": 505, + "species": "Watchog", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 60, + "atk": 85, + "def": 69, + "spa": 60, + "spd": 69, + "spe": 77 + }, + "abilities": { + "0": "Illuminate", + "1": "Keen Eye", + "H": "Analytic" + }, + "heightm": 1.1, + "weightkg": 27, + "color": "Brown", + "prevo": "patrat", + "evoLevel": 20, + "eggGroups": [ + "Field" + ] + }, + "lillipup": { + "num": 506, + "species": "Lillipup", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 45, + "atk": 60, + "def": 45, + "spa": 25, + "spd": 45, + "spe": 55 + }, + "abilities": { + "0": "Vital Spirit", + "1": "Pickup", + "H": "Run Away" + }, + "heightm": 0.4, + "weightkg": 4.1, + "color": "Brown", + "evos": [ + "herdier" + ], + "eggGroups": [ + "Field" + ] + }, + "herdier": { + "num": 507, + "species": "Herdier", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 65, + "atk": 80, + "def": 65, + "spa": 35, + "spd": 65, + "spe": 60 + }, + "abilities": { + "0": "Intimidate", + "1": "Sand Rush", + "H": "Scrappy" + }, + "heightm": 0.9, + "weightkg": 14.7, + "color": "Gray", + "prevo": "lillipup", + "evos": [ + "stoutland" + ], + "evoLevel": 16, + "eggGroups": [ + "Field" + ] + }, + "stoutland": { + "num": 508, + "species": "Stoutland", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 85, + "atk": 110, + "def": 90, + "spa": 45, + "spd": 90, + "spe": 80 + }, + "abilities": { + "0": "Intimidate", + "1": "Sand Rush", + "H": "Scrappy" + }, + "heightm": 1.2, + "weightkg": 61, + "color": "Gray", + "prevo": "herdier", + "evoLevel": 32, + "eggGroups": [ + "Field" + ] + }, + "purrloin": { + "num": 509, + "species": "Purrloin", + "types": [ + "Dark" + ], + "baseStats": { + "hp": 41, + "atk": 50, + "def": 37, + "spa": 50, + "spd": 37, + "spe": 66 + }, + "abilities": { + "0": "Limber", + "1": "Unburden", + "H": "Prankster" + }, + "heightm": 0.4, + "weightkg": 10.1, + "color": "Purple", + "evos": [ + "liepard" + ], + "eggGroups": [ + "Field" + ] + }, + "liepard": { + "num": 510, + "species": "Liepard", + "types": [ + "Dark" + ], + "baseStats": { + "hp": 64, + "atk": 88, + "def": 50, + "spa": 88, + "spd": 50, + "spe": 106 + }, + "abilities": { + "0": "Limber", + "1": "Unburden", + "H": "Prankster" + }, + "heightm": 1.1, + "weightkg": 37.5, + "color": "Purple", + "prevo": "purrloin", + "evoLevel": 20, + "eggGroups": [ + "Field" + ] + }, + "pansage": { + "num": 511, + "species": "Pansage", + "types": [ + "Grass" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 50, + "atk": 53, + "def": 48, + "spa": 53, + "spd": 48, + "spe": 64 + }, + "abilities": { + "0": "Gluttony", + "H": "Overgrow" + }, + "heightm": 0.6, + "weightkg": 10.5, + "color": "Green", + "evos": [ + "simisage" + ], + "eggGroups": [ + "Field" + ] + }, + "simisage": { + "num": 512, + "species": "Simisage", + "types": [ + "Grass" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 75, + "atk": 98, + "def": 63, + "spa": 98, + "spd": 63, + "spe": 101 + }, + "abilities": { + "0": "Gluttony", + "H": "Overgrow" + }, + "heightm": 1.1, + "weightkg": 30.5, + "color": "Green", + "prevo": "pansage", + "evoLevel": 1, + "eggGroups": [ + "Field" + ] + }, + "pansear": { + "num": 513, + "species": "Pansear", + "types": [ + "Fire" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 50, + "atk": 53, + "def": 48, + "spa": 53, + "spd": 48, + "spe": 64 + }, + "abilities": { + "0": "Gluttony", + "H": "Blaze" + }, + "heightm": 0.6, + "weightkg": 11, + "color": "Red", + "evos": [ + "simisear" + ], + "eggGroups": [ + "Field" + ] + }, + "simisear": { + "num": 514, + "species": "Simisear", + "types": [ + "Fire" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 75, + "atk": 98, + "def": 63, + "spa": 98, + "spd": 63, + "spe": 101 + }, + "abilities": { + "0": "Gluttony", + "H": "Blaze" + }, + "heightm": 1, + "weightkg": 28, + "color": "Red", + "prevo": "pansear", + "evoLevel": 1, + "eggGroups": [ + "Field" + ] + }, + "panpour": { + "num": 515, + "species": "Panpour", + "types": [ + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 50, + "atk": 53, + "def": 48, + "spa": 53, + "spd": 48, + "spe": 64 + }, + "abilities": { + "0": "Gluttony", + "H": "Torrent" + }, + "heightm": 0.6, + "weightkg": 13.5, + "color": "Blue", + "evos": [ + "simipour" + ], + "eggGroups": [ + "Field" + ] + }, + "simipour": { + "num": 516, + "species": "Simipour", + "types": [ + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 75, + "atk": 98, + "def": 63, + "spa": 98, + "spd": 63, + "spe": 101 + }, + "abilities": { + "0": "Gluttony", + "H": "Torrent" + }, + "heightm": 1, + "weightkg": 29, + "color": "Blue", + "prevo": "panpour", + "evoLevel": 1, + "eggGroups": [ + "Field" + ] + }, + "munna": { + "num": 517, + "species": "Munna", + "types": [ + "Psychic" + ], + "baseStats": { + "hp": 76, + "atk": 25, + "def": 45, + "spa": 67, + "spd": 55, + "spe": 24 + }, + "abilities": { + "0": "Forewarn", + "1": "Synchronize", + "H": "Telepathy" + }, + "heightm": 0.6, + "weightkg": 23.3, + "color": "Pink", + "evos": [ + "musharna" + ], + "eggGroups": [ + "Field" + ] + }, + "musharna": { + "num": 518, + "species": "Musharna", + "types": [ + "Psychic" + ], + "baseStats": { + "hp": 116, + "atk": 55, + "def": 85, + "spa": 107, + "spd": 95, + "spe": 29 + }, + "abilities": { + "0": "Forewarn", + "1": "Synchronize", + "H": "Telepathy" + }, + "heightm": 1.1, + "weightkg": 60.5, + "color": "Pink", + "prevo": "munna", + "evoLevel": 1, + "eggGroups": [ + "Field" + ] + }, + "pidove": { + "num": 519, + "species": "Pidove", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 50, + "atk": 55, + "def": 50, + "spa": 36, + "spd": 30, + "spe": 43 + }, + "abilities": { + "0": "Big Pecks", + "1": "Super Luck", + "H": "Rivalry" + }, + "heightm": 0.3, + "weightkg": 2.1, + "color": "Gray", + "evos": [ + "tranquill" + ], + "eggGroups": [ + "Flying" + ] + }, + "tranquill": { + "num": 520, + "species": "Tranquill", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 62, + "atk": 77, + "def": 62, + "spa": 50, + "spd": 42, + "spe": 65 + }, + "abilities": { + "0": "Big Pecks", + "1": "Super Luck", + "H": "Rivalry" + }, + "heightm": 0.6, + "weightkg": 15, + "color": "Gray", + "prevo": "pidove", + "evos": [ + "unfezant" + ], + "evoLevel": 21, + "eggGroups": [ + "Flying" + ] + }, + "unfezant": { + "num": 521, + "species": "Unfezant", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 80, + "atk": 115, + "def": 80, + "spa": 65, + "spd": 55, + "spe": 93 + }, + "abilities": { + "0": "Big Pecks", + "1": "Super Luck", + "H": "Rivalry" + }, + "heightm": 1.2, + "weightkg": 29, + "color": "Gray", + "prevo": "tranquill", + "evoLevel": 32, + "eggGroups": [ + "Flying" + ] + }, + "blitzle": { + "num": 522, + "species": "Blitzle", + "types": [ + "Electric" + ], + "baseStats": { + "hp": 45, + "atk": 60, + "def": 32, + "spa": 50, + "spd": 32, + "spe": 76 + }, + "abilities": { + "0": "Lightning Rod", + "1": "Motor Drive", + "H": "Sap Sipper" + }, + "heightm": 0.8, + "weightkg": 29.8, + "color": "Black", + "evos": [ + "zebstrika" + ], + "eggGroups": [ + "Field" + ] + }, + "zebstrika": { + "num": 523, + "species": "Zebstrika", + "types": [ + "Electric" + ], + "baseStats": { + "hp": 75, + "atk": 100, + "def": 63, + "spa": 80, + "spd": 63, + "spe": 116 + }, + "abilities": { + "0": "Lightning Rod", + "1": "Motor Drive", + "H": "Sap Sipper" + }, + "heightm": 1.6, + "weightkg": 79.5, + "color": "Black", + "prevo": "blitzle", + "evoLevel": 27, + "eggGroups": [ + "Field" + ] + }, + "roggenrola": { + "num": 524, + "species": "Roggenrola", + "types": [ + "Rock" + ], + "baseStats": { + "hp": 55, + "atk": 75, + "def": 85, + "spa": 25, + "spd": 25, + "spe": 15 + }, + "abilities": { + "0": "Sturdy", + "H": "Sand Force" + }, + "heightm": 0.4, + "weightkg": 18, + "color": "Blue", + "evos": [ + "boldore" + ], + "eggGroups": [ + "Mineral" + ] + }, + "boldore": { + "num": 525, + "species": "Boldore", + "types": [ + "Rock" + ], + "baseStats": { + "hp": 70, + "atk": 105, + "def": 105, + "spa": 50, + "spd": 40, + "spe": 20 + }, + "abilities": { + "0": "Sturdy", + "H": "Sand Force" + }, + "heightm": 0.9, + "weightkg": 102, + "color": "Blue", + "prevo": "roggenrola", + "evos": [ + "gigalith" + ], + "evoLevel": 25, + "eggGroups": [ + "Mineral" + ] + }, + "gigalith": { + "num": 526, + "species": "Gigalith", + "types": [ + "Rock" + ], + "baseStats": { + "hp": 85, + "atk": 135, + "def": 130, + "spa": 60, + "spd": 80, + "spe": 25 + }, + "abilities": { + "0": "Sturdy", + "H": "Sand Force" + }, + "heightm": 1.7, + "weightkg": 260, + "color": "Blue", + "prevo": "boldore", + "evoLevel": 25, + "eggGroups": [ + "Mineral" + ] + }, + "woobat": { + "num": 527, + "species": "Woobat", + "types": [ + "Psychic", + "Flying" + ], + "baseStats": { + "hp": 55, + "atk": 45, + "def": 43, + "spa": 55, + "spd": 43, + "spe": 72 + }, + "abilities": { + "0": "Unaware", + "1": "Klutz", + "H": "Simple" + }, + "heightm": 0.4, + "weightkg": 2.1, + "color": "Blue", + "evos": [ + "swoobat" + ], + "eggGroups": [ + "Flying", + "Field" + ] + }, + "swoobat": { + "num": 528, + "species": "Swoobat", + "types": [ + "Psychic", + "Flying" + ], + "baseStats": { + "hp": 67, + "atk": 57, + "def": 55, + "spa": 77, + "spd": 55, + "spe": 114 + }, + "abilities": { + "0": "Unaware", + "1": "Klutz", + "H": "Simple" + }, + "heightm": 0.9, + "weightkg": 10.5, + "color": "Blue", + "prevo": "woobat", + "evoLevel": 2, + "eggGroups": [ + "Flying", + "Field" + ] + }, + "drilbur": { + "num": 529, + "species": "Drilbur", + "types": [ + "Ground" + ], + "baseStats": { + "hp": 60, + "atk": 85, + "def": 40, + "spa": 30, + "spd": 45, + "spe": 68 + }, + "abilities": { + "0": "Sand Rush", + "1": "Sand Force", + "H": "Mold Breaker" + }, + "heightm": 0.3, + "weightkg": 8.5, + "color": "Gray", + "evos": [ + "excadrill" + ], + "eggGroups": [ + "Field" + ] + }, + "excadrill": { + "num": 530, + "species": "Excadrill", + "types": [ + "Ground", + "Steel" + ], + "baseStats": { + "hp": 110, + "atk": 135, + "def": 60, + "spa": 50, + "spd": 65, + "spe": 88 + }, + "abilities": { + "0": "Sand Rush", + "1": "Sand Force", + "H": "Mold Breaker" + }, + "heightm": 0.7, + "weightkg": 40.4, + "color": "Gray", + "prevo": "drilbur", + "evoLevel": 31, + "eggGroups": [ + "Field" + ] + }, + "audino": { + "num": 531, + "species": "Audino", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 103, + "atk": 60, + "def": 86, + "spa": 60, + "spd": 86, + "spe": 50 + }, + "abilities": { + "0": "Healer", + "1": "Regenerator", + "H": "Klutz" + }, + "heightm": 1.1, + "weightkg": 31, + "color": "Pink", + "eggGroups": [ + "Fairy" + ], + "otherFormes": [ + "audinomega" + ] + }, + "audinomega": { + "num": 531, + "species": "Audino-Mega", + "baseSpecies": "Audino", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Normal", + "Fairy" + ], + "baseStats": { + "hp": 103, + "atk": 60, + "def": 126, + "spa": 80, + "spd": 126, + "spe": 50 + }, + "abilities": { + "0": "Healer" + }, + "heightm": 1.5, + "weightkg": 32, + "color": "Pink", + "eggGroups": [ + "Fairy" + ] + }, + "timburr": { + "num": 532, + "species": "Timburr", + "types": [ + "Fighting" + ], + "genderRatio": { + "M": 0.75, + "F": 0.25 + }, + "baseStats": { + "hp": 75, + "atk": 80, + "def": 55, + "spa": 25, + "spd": 35, + "spe": 35 + }, + "abilities": { + "0": "Guts", + "1": "Sheer Force", + "H": "Iron Fist" + }, + "heightm": 0.6, + "weightkg": 12.5, + "color": "Gray", + "evos": [ + "gurdurr" + ], + "eggGroups": [ + "Human-Like" + ] + }, + "gurdurr": { + "num": 533, + "species": "Gurdurr", + "types": [ + "Fighting" + ], + "genderRatio": { + "M": 0.75, + "F": 0.25 + }, + "baseStats": { + "hp": 85, + "atk": 105, + "def": 85, + "spa": 40, + "spd": 50, + "spe": 40 + }, + "abilities": { + "0": "Guts", + "1": "Sheer Force", + "H": "Iron Fist" + }, + "heightm": 1.2, + "weightkg": 40, + "color": "Gray", + "prevo": "timburr", + "evos": [ + "conkeldurr" + ], + "evoLevel": 25, + "eggGroups": [ + "Human-Like" + ] + }, + "conkeldurr": { + "num": 534, + "species": "Conkeldurr", + "types": [ + "Fighting" + ], + "genderRatio": { + "M": 0.75, + "F": 0.25 + }, + "baseStats": { + "hp": 105, + "atk": 140, + "def": 95, + "spa": 55, + "spd": 65, + "spe": 45 + }, + "abilities": { + "0": "Guts", + "1": "Sheer Force", + "H": "Iron Fist" + }, + "heightm": 1.4, + "weightkg": 87, + "color": "Brown", + "prevo": "gurdurr", + "evoLevel": 25, + "eggGroups": [ + "Human-Like" + ] + }, + "tympole": { + "num": 535, + "species": "Tympole", + "types": [ + "Water" + ], + "baseStats": { + "hp": 50, + "atk": 50, + "def": 40, + "spa": 50, + "spd": 40, + "spe": 64 + }, + "abilities": { + "0": "Swift Swim", + "1": "Hydration", + "H": "Water Absorb" + }, + "heightm": 0.5, + "weightkg": 4.5, + "color": "Blue", + "evos": [ + "palpitoad" + ], + "eggGroups": [ + "Water 1" + ] + }, + "palpitoad": { + "num": 536, + "species": "Palpitoad", + "types": [ + "Water", + "Ground" + ], + "baseStats": { + "hp": 75, + "atk": 65, + "def": 55, + "spa": 65, + "spd": 55, + "spe": 69 + }, + "abilities": { + "0": "Swift Swim", + "1": "Hydration", + "H": "Water Absorb" + }, + "heightm": 0.8, + "weightkg": 17, + "color": "Blue", + "prevo": "tympole", + "evos": [ + "seismitoad" + ], + "evoLevel": 25, + "eggGroups": [ + "Water 1" + ] + }, + "seismitoad": { + "num": 537, + "species": "Seismitoad", + "types": [ + "Water", + "Ground" + ], + "baseStats": { + "hp": 105, + "atk": 95, + "def": 75, + "spa": 85, + "spd": 75, + "spe": 74 + }, + "abilities": { + "0": "Swift Swim", + "1": "Poison Touch", + "H": "Water Absorb" + }, + "heightm": 1.5, + "weightkg": 62, + "color": "Blue", + "prevo": "palpitoad", + "evoLevel": 36, + "eggGroups": [ + "Water 1" + ] + }, + "throh": { + "num": 538, + "species": "Throh", + "types": [ + "Fighting" + ], + "gender": "M", + "baseStats": { + "hp": 120, + "atk": 100, + "def": 85, + "spa": 30, + "spd": 85, + "spe": 45 + }, + "abilities": { + "0": "Guts", + "1": "Inner Focus", + "H": "Mold Breaker" + }, + "heightm": 1.3, + "weightkg": 55.5, + "color": "Red", + "eggGroups": [ + "Human-Like" + ] + }, + "sawk": { + "num": 539, + "species": "Sawk", + "types": [ + "Fighting" + ], + "gender": "M", + "baseStats": { + "hp": 75, + "atk": 125, + "def": 75, + "spa": 30, + "spd": 75, + "spe": 85 + }, + "abilities": { + "0": "Sturdy", + "1": "Inner Focus", + "H": "Mold Breaker" + }, + "heightm": 1.4, + "weightkg": 51, + "color": "Blue", + "eggGroups": [ + "Human-Like" + ] + }, + "sewaddle": { + "num": 540, + "species": "Sewaddle", + "types": [ + "Bug", + "Grass" + ], + "baseStats": { + "hp": 45, + "atk": 53, + "def": 70, + "spa": 40, + "spd": 60, + "spe": 42 + }, + "abilities": { + "0": "Swarm", + "1": "Chlorophyll", + "H": "Overcoat" + }, + "heightm": 0.3, + "weightkg": 2.5, + "color": "Yellow", + "evos": [ + "swadloon" + ], + "eggGroups": [ + "Bug" + ] + }, + "swadloon": { + "num": 541, + "species": "Swadloon", + "types": [ + "Bug", + "Grass" + ], + "baseStats": { + "hp": 55, + "atk": 63, + "def": 90, + "spa": 50, + "spd": 80, + "spe": 42 + }, + "abilities": { + "0": "Leaf Guard", + "1": "Chlorophyll", + "H": "Overcoat" + }, + "heightm": 0.5, + "weightkg": 7.3, + "color": "Green", + "prevo": "sewaddle", + "evos": [ + "leavanny" + ], + "evoLevel": 20, + "eggGroups": [ + "Bug" + ] + }, + "leavanny": { + "num": 542, + "species": "Leavanny", + "types": [ + "Bug", + "Grass" + ], + "baseStats": { + "hp": 75, + "atk": 103, + "def": 80, + "spa": 70, + "spd": 80, + "spe": 92 + }, + "abilities": { + "0": "Swarm", + "1": "Chlorophyll", + "H": "Overcoat" + }, + "heightm": 1.2, + "weightkg": 20.5, + "color": "Yellow", + "prevo": "swadloon", + "evoLevel": 21, + "eggGroups": [ + "Bug" + ] + }, + "venipede": { + "num": 543, + "species": "Venipede", + "types": [ + "Bug", + "Poison" + ], + "baseStats": { + "hp": 30, + "atk": 45, + "def": 59, + "spa": 30, + "spd": 39, + "spe": 57 + }, + "abilities": { + "0": "Poison Point", + "1": "Swarm", + "H": "Speed Boost" + }, + "heightm": 0.4, + "weightkg": 5.3, + "color": "Red", + "evos": [ + "whirlipede" + ], + "eggGroups": [ + "Bug" + ] + }, + "whirlipede": { + "num": 544, + "species": "Whirlipede", + "types": [ + "Bug", + "Poison" + ], + "baseStats": { + "hp": 40, + "atk": 55, + "def": 99, + "spa": 40, + "spd": 79, + "spe": 47 + }, + "abilities": { + "0": "Poison Point", + "1": "Swarm", + "H": "Speed Boost" + }, + "heightm": 1.2, + "weightkg": 58.5, + "color": "Gray", + "prevo": "venipede", + "evos": [ + "scolipede" + ], + "evoLevel": 22, + "eggGroups": [ + "Bug" + ] + }, + "scolipede": { + "num": 545, + "species": "Scolipede", + "types": [ + "Bug", + "Poison" + ], + "baseStats": { + "hp": 60, + "atk": 100, + "def": 89, + "spa": 55, + "spd": 69, + "spe": 112 + }, + "abilities": { + "0": "Poison Point", + "1": "Swarm", + "H": "Speed Boost" + }, + "heightm": 2.5, + "weightkg": 200.5, + "color": "Red", + "prevo": "whirlipede", + "evoLevel": 30, + "eggGroups": [ + "Bug" + ] + }, + "cottonee": { + "num": 546, + "species": "Cottonee", + "types": [ + "Grass", + "Fairy" + ], + "baseStats": { + "hp": 40, + "atk": 27, + "def": 60, + "spa": 37, + "spd": 50, + "spe": 66 + }, + "abilities": { + "0": "Prankster", + "1": "Infiltrator", + "H": "Chlorophyll" + }, + "heightm": 0.3, + "weightkg": 0.6, + "color": "Green", + "evos": [ + "whimsicott" + ], + "eggGroups": [ + "Fairy", + "Grass" + ] + }, + "whimsicott": { + "num": 547, + "species": "Whimsicott", + "types": [ + "Grass", + "Fairy" + ], + "baseStats": { + "hp": 60, + "atk": 67, + "def": 85, + "spa": 77, + "spd": 75, + "spe": 116 + }, + "abilities": { + "0": "Prankster", + "1": "Infiltrator", + "H": "Chlorophyll" + }, + "heightm": 0.7, + "weightkg": 6.6, + "color": "Green", + "prevo": "cottonee", + "evoLevel": 1, + "eggGroups": [ + "Fairy", + "Grass" + ] + }, + "petilil": { + "num": 548, + "species": "Petilil", + "types": [ + "Grass" + ], + "gender": "F", + "baseStats": { + "hp": 45, + "atk": 35, + "def": 50, + "spa": 70, + "spd": 50, + "spe": 30 + }, + "abilities": { + "0": "Chlorophyll", + "1": "Own Tempo", + "H": "Leaf Guard" + }, + "heightm": 0.5, + "weightkg": 6.6, + "color": "Green", + "evos": [ + "lilligant" + ], + "eggGroups": [ + "Grass" + ] + }, + "lilligant": { + "num": 549, + "species": "Lilligant", + "types": [ + "Grass" + ], + "gender": "F", + "baseStats": { + "hp": 70, + "atk": 60, + "def": 75, + "spa": 110, + "spd": 75, + "spe": 90 + }, + "abilities": { + "0": "Chlorophyll", + "1": "Own Tempo", + "H": "Leaf Guard" + }, + "heightm": 1.1, + "weightkg": 16.3, + "color": "Green", + "prevo": "petilil", + "evoLevel": 1, + "eggGroups": [ + "Grass" + ] + }, + "basculin": { + "num": 550, + "species": "Basculin", + "baseForme": "Red-Striped", + "types": [ + "Water" + ], + "baseStats": { + "hp": 70, + "atk": 92, + "def": 65, + "spa": 80, + "spd": 55, + "spe": 98 + }, + "abilities": { + "0": "Reckless", + "1": "Adaptability", + "H": "Mold Breaker" + }, + "heightm": 1, + "weightkg": 18, + "color": "Green", + "eggGroups": [ + "Water 2" + ], + "otherFormes": [ + "basculinbluestriped" + ] + }, + "basculinbluestriped": { + "num": 550, + "species": "Basculin-Blue-Striped", + "baseSpecies": "Basculin", + "forme": "Blue-Striped", + "formeLetter": "B", + "types": [ + "Water" + ], + "baseStats": { + "hp": 70, + "atk": 92, + "def": 65, + "spa": 80, + "spd": 55, + "spe": 98 + }, + "abilities": { + "0": "Rock Head", + "1": "Adaptability", + "H": "Mold Breaker" + }, + "heightm": 1, + "weightkg": 18, + "color": "Green", + "eggGroups": [ + "Water 2" + ] + }, + "sandile": { + "num": 551, + "species": "Sandile", + "types": [ + "Ground", + "Dark" + ], + "baseStats": { + "hp": 50, + "atk": 72, + "def": 35, + "spa": 35, + "spd": 35, + "spe": 65 + }, + "abilities": { + "0": "Intimidate", + "1": "Moxie", + "H": "Anger Point" + }, + "heightm": 0.7, + "weightkg": 15.2, + "color": "Brown", + "evos": [ + "krokorok" + ], + "eggGroups": [ + "Field" + ] + }, + "krokorok": { + "num": 552, + "species": "Krokorok", + "types": [ + "Ground", + "Dark" + ], + "baseStats": { + "hp": 60, + "atk": 82, + "def": 45, + "spa": 45, + "spd": 45, + "spe": 74 + }, + "abilities": { + "0": "Intimidate", + "1": "Moxie", + "H": "Anger Point" + }, + "heightm": 1, + "weightkg": 33.4, + "color": "Brown", + "prevo": "sandile", + "evos": [ + "krookodile" + ], + "evoLevel": 29, + "eggGroups": [ + "Field" + ] + }, + "krookodile": { + "num": 553, + "species": "Krookodile", + "types": [ + "Ground", + "Dark" + ], + "baseStats": { + "hp": 95, + "atk": 117, + "def": 80, + "spa": 65, + "spd": 70, + "spe": 92 + }, + "abilities": { + "0": "Intimidate", + "1": "Moxie", + "H": "Anger Point" + }, + "heightm": 1.5, + "weightkg": 96.3, + "color": "Red", + "prevo": "krokorok", + "evoLevel": 40, + "eggGroups": [ + "Field" + ] + }, + "darumaka": { + "num": 554, + "species": "Darumaka", + "types": [ + "Fire" + ], + "baseStats": { + "hp": 70, + "atk": 90, + "def": 45, + "spa": 15, + "spd": 45, + "spe": 50 + }, + "abilities": { + "0": "Hustle", + "H": "Inner Focus" + }, + "heightm": 0.6, + "weightkg": 37.5, + "color": "Red", + "evos": [ + "darmanitan" + ], + "eggGroups": [ + "Field" + ] + }, + "darmanitan": { + "num": 555, + "species": "Darmanitan", + "baseForme": "Standard", + "types": [ + "Fire" + ], + "baseStats": { + "hp": 105, + "atk": 140, + "def": 55, + "spa": 30, + "spd": 55, + "spe": 95 + }, + "abilities": { + "0": "Sheer Force", + "H": "Zen Mode" + }, + "heightm": 1.3, + "weightkg": 92.9, + "color": "Red", + "prevo": "darumaka", + "evoLevel": 35, + "eggGroups": [ + "Field" + ], + "otherFormes": [ + "darmanitanzen" + ] + }, + "darmanitanzen": { + "num": 555, + "species": "Darmanitan-Zen", + "baseSpecies": "Darmanitan", + "forme": "Zen", + "formeLetter": "Z", + "types": [ + "Fire", + "Psychic" + ], + "baseStats": { + "hp": 105, + "atk": 30, + "def": 105, + "spa": 140, + "spd": 105, + "spe": 55 + }, + "abilities": { + "0": "Zen Mode" + }, + "heightm": 1.3, + "weightkg": 92.9, + "color": "Red", + "prevo": "darumaka", + "evoLevel": 35, + "eggGroups": [ + "Field" + ] + }, + "maractus": { + "num": 556, + "species": "Maractus", + "types": [ + "Grass" + ], + "baseStats": { + "hp": 75, + "atk": 86, + "def": 67, + "spa": 106, + "spd": 67, + "spe": 60 + }, + "abilities": { + "0": "Water Absorb", + "1": "Chlorophyll", + "H": "Storm Drain" + }, + "heightm": 1, + "weightkg": 28, + "color": "Green", + "eggGroups": [ + "Grass" + ] + }, + "dwebble": { + "num": 557, + "species": "Dwebble", + "types": [ + "Bug", + "Rock" + ], + "baseStats": { + "hp": 50, + "atk": 65, + "def": 85, + "spa": 35, + "spd": 35, + "spe": 55 + }, + "abilities": { + "0": "Sturdy", + "1": "Shell Armor", + "H": "Weak Armor" + }, + "heightm": 0.3, + "weightkg": 14.5, + "color": "Red", + "evos": [ + "crustle" + ], + "eggGroups": [ + "Bug", + "Mineral" + ] + }, + "crustle": { + "num": 558, + "species": "Crustle", + "types": [ + "Bug", + "Rock" + ], + "baseStats": { + "hp": 70, + "atk": 95, + "def": 125, + "spa": 65, + "spd": 75, + "spe": 45 + }, + "abilities": { + "0": "Sturdy", + "1": "Shell Armor", + "H": "Weak Armor" + }, + "heightm": 1.4, + "weightkg": 200, + "color": "Red", + "prevo": "dwebble", + "evoLevel": 34, + "eggGroups": [ + "Bug", + "Mineral" + ] + }, + "scraggy": { + "num": 559, + "species": "Scraggy", + "types": [ + "Dark", + "Fighting" + ], + "baseStats": { + "hp": 50, + "atk": 75, + "def": 70, + "spa": 35, + "spd": 70, + "spe": 48 + }, + "abilities": { + "0": "Shed Skin", + "1": "Moxie", + "H": "Intimidate" + }, + "heightm": 0.6, + "weightkg": 11.8, + "color": "Yellow", + "evos": [ + "scrafty" + ], + "eggGroups": [ + "Field", + "Dragon" + ] + }, + "scrafty": { + "num": 560, + "species": "Scrafty", + "types": [ + "Dark", + "Fighting" + ], + "baseStats": { + "hp": 65, + "atk": 90, + "def": 115, + "spa": 45, + "spd": 115, + "spe": 58 + }, + "abilities": { + "0": "Shed Skin", + "1": "Moxie", + "H": "Intimidate" + }, + "heightm": 1.1, + "weightkg": 30, + "color": "Red", + "prevo": "scraggy", + "evoLevel": 39, + "eggGroups": [ + "Field", + "Dragon" + ] + }, + "sigilyph": { + "num": 561, + "species": "Sigilyph", + "types": [ + "Psychic", + "Flying" + ], + "baseStats": { + "hp": 72, + "atk": 58, + "def": 80, + "spa": 103, + "spd": 80, + "spe": 97 + }, + "abilities": { + "0": "Wonder Skin", + "1": "Magic Guard", + "H": "Tinted Lens" + }, + "heightm": 1.4, + "weightkg": 14, + "color": "Black", + "eggGroups": [ + "Flying" + ] + }, + "yamask": { + "num": 562, + "species": "Yamask", + "types": [ + "Ghost" + ], + "baseStats": { + "hp": 38, + "atk": 30, + "def": 85, + "spa": 55, + "spd": 65, + "spe": 30 + }, + "abilities": { + "0": "Mummy" + }, + "heightm": 0.5, + "weightkg": 1.5, + "color": "Black", + "evos": [ + "cofagrigus" + ], + "eggGroups": [ + "Mineral", + "Amorphous" + ] + }, + "cofagrigus": { + "num": 563, + "species": "Cofagrigus", + "types": [ + "Ghost" + ], + "baseStats": { + "hp": 58, + "atk": 50, + "def": 145, + "spa": 95, + "spd": 105, + "spe": 30 + }, + "abilities": { + "0": "Mummy" + }, + "heightm": 1.7, + "weightkg": 76.5, + "color": "Yellow", + "prevo": "yamask", + "evoLevel": 34, + "eggGroups": [ + "Mineral", + "Amorphous" + ] + }, + "tirtouga": { + "num": 564, + "species": "Tirtouga", + "types": [ + "Water", + "Rock" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 54, + "atk": 78, + "def": 103, + "spa": 53, + "spd": 45, + "spe": 22 + }, + "abilities": { + "0": "Solid Rock", + "1": "Sturdy", + "H": "Swift Swim" + }, + "heightm": 0.7, + "weightkg": 16.5, + "color": "Blue", + "evos": [ + "carracosta" + ], + "eggGroups": [ + "Water 1", + "Water 3" + ] + }, + "carracosta": { + "num": 565, + "species": "Carracosta", + "types": [ + "Water", + "Rock" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 74, + "atk": 108, + "def": 133, + "spa": 83, + "spd": 65, + "spe": 32 + }, + "abilities": { + "0": "Solid Rock", + "1": "Sturdy", + "H": "Swift Swim" + }, + "heightm": 1.2, + "weightkg": 81, + "color": "Blue", + "prevo": "tirtouga", + "evoLevel": 37, + "eggGroups": [ + "Water 1", + "Water 3" + ] + }, + "archen": { + "num": 566, + "species": "Archen", + "types": [ + "Rock", + "Flying" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 55, + "atk": 112, + "def": 45, + "spa": 74, + "spd": 45, + "spe": 70 + }, + "abilities": { + "0": "Defeatist" + }, + "heightm": 0.5, + "weightkg": 9.5, + "color": "Yellow", + "evos": [ + "archeops" + ], + "eggGroups": [ + "Flying", + "Water 3" + ] + }, + "archeops": { + "num": 567, + "species": "Archeops", + "types": [ + "Rock", + "Flying" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 75, + "atk": 140, + "def": 65, + "spa": 112, + "spd": 65, + "spe": 110 + }, + "abilities": { + "0": "Defeatist" + }, + "heightm": 1.4, + "weightkg": 32, + "color": "Yellow", + "prevo": "archen", + "evoLevel": 37, + "eggGroups": [ + "Flying", + "Water 3" + ] + }, + "trubbish": { + "num": 568, + "species": "Trubbish", + "types": [ + "Poison" + ], + "baseStats": { + "hp": 50, + "atk": 50, + "def": 62, + "spa": 40, + "spd": 62, + "spe": 65 + }, + "abilities": { + "0": "Stench", + "1": "Sticky Hold", + "H": "Aftermath" + }, + "heightm": 0.6, + "weightkg": 31, + "color": "Green", + "evos": [ + "garbodor" + ], + "eggGroups": [ + "Mineral" + ] + }, + "garbodor": { + "num": 569, + "species": "Garbodor", + "types": [ + "Poison" + ], + "baseStats": { + "hp": 80, + "atk": 95, + "def": 82, + "spa": 60, + "spd": 82, + "spe": 75 + }, + "abilities": { + "0": "Stench", + "1": "Weak Armor", + "H": "Aftermath" + }, + "heightm": 1.9, + "weightkg": 107.3, + "color": "Green", + "prevo": "trubbish", + "evoLevel": 36, + "eggGroups": [ + "Mineral" + ] + }, + "zorua": { + "num": 570, + "species": "Zorua", + "types": [ + "Dark" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 40, + "atk": 65, + "def": 40, + "spa": 80, + "spd": 40, + "spe": 65 + }, + "abilities": { + "0": "Illusion" + }, + "heightm": 0.7, + "weightkg": 12.5, + "color": "Gray", + "evos": [ + "zoroark" + ], + "eggGroups": [ + "Field" + ] + }, + "zoroark": { + "num": 571, + "species": "Zoroark", + "types": [ + "Dark" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 60, + "atk": 105, + "def": 60, + "spa": 120, + "spd": 60, + "spe": 105 + }, + "abilities": { + "0": "Illusion" + }, + "heightm": 1.6, + "weightkg": 81.1, + "color": "Gray", + "prevo": "zorua", + "evoLevel": 30, + "eggGroups": [ + "Field" + ] + }, + "minccino": { + "num": 572, + "species": "Minccino", + "types": [ + "Normal" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 55, + "atk": 50, + "def": 40, + "spa": 40, + "spd": 40, + "spe": 75 + }, + "abilities": { + "0": "Cute Charm", + "1": "Technician", + "H": "Skill Link" + }, + "heightm": 0.4, + "weightkg": 5.8, + "color": "Gray", + "evos": [ + "cinccino" + ], + "eggGroups": [ + "Field" + ] + }, + "cinccino": { + "num": 573, + "species": "Cinccino", + "types": [ + "Normal" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 75, + "atk": 95, + "def": 60, + "spa": 65, + "spd": 60, + "spe": 115 + }, + "abilities": { + "0": "Cute Charm", + "1": "Technician", + "H": "Skill Link" + }, + "heightm": 0.5, + "weightkg": 7.5, + "color": "Gray", + "prevo": "minccino", + "evoLevel": 1, + "eggGroups": [ + "Field" + ] + }, + "gothita": { + "num": 574, + "species": "Gothita", + "types": [ + "Psychic" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 45, + "atk": 30, + "def": 50, + "spa": 55, + "spd": 65, + "spe": 45 + }, + "abilities": { + "0": "Frisk", + "1": "Competitive", + "H": "Shadow Tag" + }, + "heightm": 0.4, + "weightkg": 5.8, + "color": "Purple", + "evos": [ + "gothorita" + ], + "eggGroups": [ + "Human-Like" + ] + }, + "gothorita": { + "num": 575, + "species": "Gothorita", + "types": [ + "Psychic" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 60, + "atk": 45, + "def": 70, + "spa": 75, + "spd": 85, + "spe": 55 + }, + "abilities": { + "0": "Frisk", + "1": "Competitive", + "H": "Shadow Tag" + }, + "heightm": 0.7, + "weightkg": 18, + "color": "Purple", + "prevo": "gothita", + "evos": [ + "gothitelle" + ], + "evoLevel": 32, + "eggGroups": [ + "Human-Like" + ] + }, + "gothitelle": { + "num": 576, + "species": "Gothitelle", + "types": [ + "Psychic" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 70, + "atk": 55, + "def": 95, + "spa": 95, + "spd": 110, + "spe": 65 + }, + "abilities": { + "0": "Frisk", + "1": "Competitive", + "H": "Shadow Tag" + }, + "heightm": 1.5, + "weightkg": 44, + "color": "Purple", + "prevo": "gothorita", + "evoLevel": 41, + "eggGroups": [ + "Human-Like" + ] + }, + "solosis": { + "num": 577, + "species": "Solosis", + "types": [ + "Psychic" + ], + "baseStats": { + "hp": 45, + "atk": 30, + "def": 40, + "spa": 105, + "spd": 50, + "spe": 20 + }, + "abilities": { + "0": "Overcoat", + "1": "Magic Guard", + "H": "Regenerator" + }, + "heightm": 0.3, + "weightkg": 1, + "color": "Green", + "evos": [ + "duosion" + ], + "eggGroups": [ + "Amorphous" + ] + }, + "duosion": { + "num": 578, + "species": "Duosion", + "types": [ + "Psychic" + ], + "baseStats": { + "hp": 65, + "atk": 40, + "def": 50, + "spa": 125, + "spd": 60, + "spe": 30 + }, + "abilities": { + "0": "Overcoat", + "1": "Magic Guard", + "H": "Regenerator" + }, + "heightm": 0.6, + "weightkg": 8, + "color": "Green", + "prevo": "solosis", + "evos": [ + "reuniclus" + ], + "evoLevel": 32, + "eggGroups": [ + "Amorphous" + ] + }, + "reuniclus": { + "num": 579, + "species": "Reuniclus", + "types": [ + "Psychic" + ], + "baseStats": { + "hp": 110, + "atk": 65, + "def": 75, + "spa": 125, + "spd": 85, + "spe": 30 + }, + "abilities": { + "0": "Overcoat", + "1": "Magic Guard", + "H": "Regenerator" + }, + "heightm": 1, + "weightkg": 20.1, + "color": "Green", + "prevo": "duosion", + "evoLevel": 41, + "eggGroups": [ + "Amorphous" + ] + }, + "ducklett": { + "num": 580, + "species": "Ducklett", + "types": [ + "Water", + "Flying" + ], + "baseStats": { + "hp": 62, + "atk": 44, + "def": 50, + "spa": 44, + "spd": 50, + "spe": 55 + }, + "abilities": { + "0": "Keen Eye", + "1": "Big Pecks", + "H": "Hydration" + }, + "heightm": 0.5, + "weightkg": 5.5, + "color": "Blue", + "evos": [ + "swanna" + ], + "eggGroups": [ + "Water 1", + "Flying" + ] + }, + "swanna": { + "num": 581, + "species": "Swanna", + "types": [ + "Water", + "Flying" + ], + "baseStats": { + "hp": 75, + "atk": 87, + "def": 63, + "spa": 87, + "spd": 63, + "spe": 98 + }, + "abilities": { + "0": "Keen Eye", + "1": "Big Pecks", + "H": "Hydration" + }, + "heightm": 1.3, + "weightkg": 24.2, + "color": "White", + "prevo": "ducklett", + "evoLevel": 35, + "eggGroups": [ + "Water 1", + "Flying" + ] + }, + "vanillite": { + "num": 582, + "species": "Vanillite", + "types": [ + "Ice" + ], + "baseStats": { + "hp": 36, + "atk": 50, + "def": 50, + "spa": 65, + "spd": 60, + "spe": 44 + }, + "abilities": { + "0": "Ice Body", + "H": "Weak Armor" + }, + "heightm": 0.4, + "weightkg": 5.7, + "color": "White", + "evos": [ + "vanillish" + ], + "eggGroups": [ + "Mineral" + ] + }, + "vanillish": { + "num": 583, + "species": "Vanillish", + "types": [ + "Ice" + ], + "baseStats": { + "hp": 51, + "atk": 65, + "def": 65, + "spa": 80, + "spd": 75, + "spe": 59 + }, + "abilities": { + "0": "Ice Body", + "H": "Weak Armor" + }, + "heightm": 1.1, + "weightkg": 41, + "color": "White", + "prevo": "vanillite", + "evos": [ + "vanilluxe" + ], + "evoLevel": 35, + "eggGroups": [ + "Mineral" + ] + }, + "vanilluxe": { + "num": 584, + "species": "Vanilluxe", + "types": [ + "Ice" + ], + "baseStats": { + "hp": 71, + "atk": 95, + "def": 85, + "spa": 110, + "spd": 95, + "spe": 79 + }, + "abilities": { + "0": "Ice Body", + "H": "Weak Armor" + }, + "heightm": 1.3, + "weightkg": 57.5, + "color": "White", + "prevo": "vanillish", + "evoLevel": 47, + "eggGroups": [ + "Mineral" + ] + }, + "deerling": { + "num": 585, + "species": "Deerling", + "baseForme": "Spring", + "types": [ + "Normal", + "Grass" + ], + "baseStats": { + "hp": 60, + "atk": 60, + "def": 50, + "spa": 40, + "spd": 50, + "spe": 75 + }, + "abilities": { + "0": "Chlorophyll", + "1": "Sap Sipper", + "H": "Serene Grace" + }, + "heightm": 0.6, + "weightkg": 19.5, + "color": "Yellow", + "evos": [ + "sawsbuck" + ], + "eggGroups": [ + "Field" + ], + "otherForms": [ + "deerlingsummer", + "deerlingautumn", + "deerlingwinter" + ] + }, + "sawsbuck": { + "num": 586, + "species": "Sawsbuck", + "baseForme": "Spring", + "types": [ + "Normal", + "Grass" + ], + "baseStats": { + "hp": 80, + "atk": 100, + "def": 70, + "spa": 60, + "spd": 70, + "spe": 95 + }, + "abilities": { + "0": "Chlorophyll", + "1": "Sap Sipper", + "H": "Serene Grace" + }, + "heightm": 1.9, + "weightkg": 92.5, + "color": "Brown", + "prevo": "deerling", + "evoLevel": 34, + "eggGroups": [ + "Field" + ], + "otherForms": [ + "sawsbucksummer", + "sawsbuckautumn", + "sawsbuckwinter" + ] + }, + "emolga": { + "num": 587, + "species": "Emolga", + "types": [ + "Electric", + "Flying" + ], + "baseStats": { + "hp": 55, + "atk": 75, + "def": 60, + "spa": 75, + "spd": 60, + "spe": 103 + }, + "abilities": { + "0": "Static", + "H": "Motor Drive" + }, + "heightm": 0.4, + "weightkg": 5, + "color": "White", + "eggGroups": [ + "Field" + ] + }, + "karrablast": { + "num": 588, + "species": "Karrablast", + "types": [ + "Bug" + ], + "baseStats": { + "hp": 50, + "atk": 75, + "def": 45, + "spa": 40, + "spd": 45, + "spe": 60 + }, + "abilities": { + "0": "Swarm", + "1": "Shed Skin", + "H": "No Guard" + }, + "heightm": 0.5, + "weightkg": 5.9, + "color": "Blue", + "evos": [ + "escavalier" + ], + "eggGroups": [ + "Bug" + ] + }, + "escavalier": { + "num": 589, + "species": "Escavalier", + "types": [ + "Bug", + "Steel" + ], + "baseStats": { + "hp": 70, + "atk": 135, + "def": 105, + "spa": 60, + "spd": 105, + "spe": 20 + }, + "abilities": { + "0": "Swarm", + "1": "Shell Armor", + "H": "Overcoat" + }, + "heightm": 1, + "weightkg": 33, + "color": "Gray", + "prevo": "karrablast", + "evoLevel": 1, + "eggGroups": [ + "Bug" + ] + }, + "foongus": { + "num": 590, + "species": "Foongus", + "types": [ + "Grass", + "Poison" + ], + "baseStats": { + "hp": 69, + "atk": 55, + "def": 45, + "spa": 55, + "spd": 55, + "spe": 15 + }, + "abilities": { + "0": "Effect Spore", + "H": "Regenerator" + }, + "heightm": 0.2, + "weightkg": 1, + "color": "White", + "evos": [ + "amoonguss" + ], + "eggGroups": [ + "Grass" + ] + }, + "amoonguss": { + "num": 591, + "species": "Amoonguss", + "types": [ + "Grass", + "Poison" + ], + "baseStats": { + "hp": 114, + "atk": 85, + "def": 70, + "spa": 85, + "spd": 80, + "spe": 30 + }, + "abilities": { + "0": "Effect Spore", + "H": "Regenerator" + }, + "heightm": 0.6, + "weightkg": 10.5, + "color": "White", + "prevo": "foongus", + "evoLevel": 39, + "eggGroups": [ + "Grass" + ] + }, + "frillish": { + "num": 592, + "species": "Frillish", + "types": [ + "Water", + "Ghost" + ], + "baseStats": { + "hp": 55, + "atk": 40, + "def": 50, + "spa": 65, + "spd": 85, + "spe": 40 + }, + "abilities": { + "0": "Water Absorb", + "1": "Cursed Body", + "H": "Damp" + }, + "heightm": 1.2, + "weightkg": 33, + "color": "White", + "evos": [ + "jellicent" + ], + "eggGroups": [ + "Amorphous" + ] + }, + "jellicent": { + "num": 593, + "species": "Jellicent", + "types": [ + "Water", + "Ghost" + ], + "baseStats": { + "hp": 100, + "atk": 60, + "def": 70, + "spa": 85, + "spd": 105, + "spe": 60 + }, + "abilities": { + "0": "Water Absorb", + "1": "Cursed Body", + "H": "Damp" + }, + "heightm": 2.2, + "weightkg": 135, + "color": "White", + "prevo": "frillish", + "evoLevel": 40, + "eggGroups": [ + "Amorphous" + ] + }, + "alomomola": { + "num": 594, + "species": "Alomomola", + "types": [ + "Water" + ], + "baseStats": { + "hp": 165, + "atk": 75, + "def": 80, + "spa": 40, + "spd": 45, + "spe": 65 + }, + "abilities": { + "0": "Healer", + "1": "Hydration", + "H": "Regenerator" + }, + "heightm": 1.2, + "weightkg": 31.6, + "color": "Pink", + "eggGroups": [ + "Water 1", + "Water 2" + ] + }, + "joltik": { + "num": 595, + "species": "Joltik", + "types": [ + "Bug", + "Electric" + ], + "baseStats": { + "hp": 50, + "atk": 47, + "def": 50, + "spa": 57, + "spd": 50, + "spe": 65 + }, + "abilities": { + "0": "Compound Eyes", + "1": "Unnerve", + "H": "Swarm" + }, + "heightm": 0.1, + "weightkg": 0.6, + "color": "Yellow", + "evos": [ + "galvantula" + ], + "eggGroups": [ + "Bug" + ] + }, + "galvantula": { + "num": 596, + "species": "Galvantula", + "types": [ + "Bug", + "Electric" + ], + "baseStats": { + "hp": 70, + "atk": 77, + "def": 60, + "spa": 97, + "spd": 60, + "spe": 108 + }, + "abilities": { + "0": "Compound Eyes", + "1": "Unnerve", + "H": "Swarm" + }, + "heightm": 0.8, + "weightkg": 14.3, + "color": "Yellow", + "prevo": "joltik", + "evoLevel": 36, + "eggGroups": [ + "Bug" + ] + }, + "ferroseed": { + "num": 597, + "species": "Ferroseed", + "types": [ + "Grass", + "Steel" + ], + "baseStats": { + "hp": 44, + "atk": 50, + "def": 91, + "spa": 24, + "spd": 86, + "spe": 10 + }, + "abilities": { + "0": "Iron Barbs" + }, + "heightm": 0.6, + "weightkg": 18.8, + "color": "Gray", + "evos": [ + "ferrothorn" + ], + "eggGroups": [ + "Grass", + "Mineral" + ] + }, + "ferrothorn": { + "num": 598, + "species": "Ferrothorn", + "types": [ + "Grass", + "Steel" + ], + "baseStats": { + "hp": 74, + "atk": 94, + "def": 131, + "spa": 54, + "spd": 116, + "spe": 20 + }, + "abilities": { + "0": "Iron Barbs", + "H": "Anticipation" + }, + "heightm": 1, + "weightkg": 110, + "color": "Gray", + "prevo": "ferroseed", + "evoLevel": 40, + "eggGroups": [ + "Grass", + "Mineral" + ] + }, + "klink": { + "num": 599, + "species": "Klink", + "types": [ + "Steel" + ], + "gender": "N", + "baseStats": { + "hp": 40, + "atk": 55, + "def": 70, + "spa": 45, + "spd": 60, + "spe": 30 + }, + "abilities": { + "0": "Plus", + "1": "Minus", + "H": "Clear Body" + }, + "heightm": 0.3, + "weightkg": 21, + "color": "Gray", + "evos": [ + "klang" + ], + "eggGroups": [ + "Mineral" + ] + }, + "klang": { + "num": 600, + "species": "Klang", + "types": [ + "Steel" + ], + "gender": "N", + "baseStats": { + "hp": 60, + "atk": 80, + "def": 95, + "spa": 70, + "spd": 85, + "spe": 50 + }, + "abilities": { + "0": "Plus", + "1": "Minus", + "H": "Clear Body" + }, + "heightm": 0.6, + "weightkg": 51, + "color": "Gray", + "prevo": "klink", + "evos": [ + "klinklang" + ], + "evoLevel": 38, + "eggGroups": [ + "Mineral" + ] + }, + "klinklang": { + "num": 601, + "species": "Klinklang", + "types": [ + "Steel" + ], + "gender": "N", + "baseStats": { + "hp": 60, + "atk": 100, + "def": 115, + "spa": 70, + "spd": 85, + "spe": 90 + }, + "abilities": { + "0": "Plus", + "1": "Minus", + "H": "Clear Body" + }, + "heightm": 0.6, + "weightkg": 81, + "color": "Gray", + "prevo": "klang", + "evoLevel": 49, + "eggGroups": [ + "Mineral" + ] + }, + "tynamo": { + "num": 602, + "species": "Tynamo", + "types": [ + "Electric" + ], + "baseStats": { + "hp": 35, + "atk": 55, + "def": 40, + "spa": 45, + "spd": 40, + "spe": 60 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 0.2, + "weightkg": 0.3, + "color": "White", + "evos": [ + "eelektrik" + ], + "eggGroups": [ + "Amorphous" + ] + }, + "eelektrik": { + "num": 603, + "species": "Eelektrik", + "types": [ + "Electric" + ], + "baseStats": { + "hp": 65, + "atk": 85, + "def": 70, + "spa": 75, + "spd": 70, + "spe": 40 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 1.2, + "weightkg": 22, + "color": "Blue", + "prevo": "tynamo", + "evos": [ + "eelektross" + ], + "evoLevel": 39, + "eggGroups": [ + "Amorphous" + ] + }, + "eelektross": { + "num": 604, + "species": "Eelektross", + "types": [ + "Electric" + ], + "baseStats": { + "hp": 85, + "atk": 115, + "def": 80, + "spa": 105, + "spd": 80, + "spe": 50 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 2.1, + "weightkg": 80.5, + "color": "Blue", + "prevo": "eelektrik", + "evoLevel": 39, + "eggGroups": [ + "Amorphous" + ] + }, + "elgyem": { + "num": 605, + "species": "Elgyem", + "types": [ + "Psychic" + ], + "baseStats": { + "hp": 55, + "atk": 55, + "def": 55, + "spa": 85, + "spd": 55, + "spe": 30 + }, + "abilities": { + "0": "Telepathy", + "1": "Synchronize", + "H": "Analytic" + }, + "heightm": 0.5, + "weightkg": 9, + "color": "Blue", + "evos": [ + "beheeyem" + ], + "eggGroups": [ + "Human-Like" + ] + }, + "beheeyem": { + "num": 606, + "species": "Beheeyem", + "types": [ + "Psychic" + ], + "baseStats": { + "hp": 75, + "atk": 75, + "def": 75, + "spa": 125, + "spd": 95, + "spe": 40 + }, + "abilities": { + "0": "Telepathy", + "1": "Synchronize", + "H": "Analytic" + }, + "heightm": 1, + "weightkg": 34.5, + "color": "Brown", + "prevo": "elgyem", + "evoLevel": 42, + "eggGroups": [ + "Human-Like" + ] + }, + "litwick": { + "num": 607, + "species": "Litwick", + "types": [ + "Ghost", + "Fire" + ], + "baseStats": { + "hp": 50, + "atk": 30, + "def": 55, + "spa": 65, + "spd": 55, + "spe": 20 + }, + "abilities": { + "0": "Flash Fire", + "1": "Flame Body", + "H": "Infiltrator" + }, + "heightm": 0.3, + "weightkg": 3.1, + "color": "White", + "evos": [ + "lampent" + ], + "eggGroups": [ + "Amorphous" + ] + }, + "lampent": { + "num": 608, + "species": "Lampent", + "types": [ + "Ghost", + "Fire" + ], + "baseStats": { + "hp": 60, + "atk": 40, + "def": 60, + "spa": 95, + "spd": 60, + "spe": 55 + }, + "abilities": { + "0": "Flash Fire", + "1": "Flame Body", + "H": "Infiltrator" + }, + "heightm": 0.6, + "weightkg": 13, + "color": "Black", + "prevo": "litwick", + "evos": [ + "chandelure" + ], + "evoLevel": 41, + "eggGroups": [ + "Amorphous" + ] + }, + "chandelure": { + "num": 609, + "species": "Chandelure", + "types": [ + "Ghost", + "Fire" + ], + "baseStats": { + "hp": 60, + "atk": 55, + "def": 90, + "spa": 145, + "spd": 90, + "spe": 80 + }, + "abilities": { + "0": "Flash Fire", + "1": "Flame Body", + "H": "Infiltrator" + }, + "heightm": 1, + "weightkg": 34.3, + "color": "Black", + "prevo": "lampent", + "evoLevel": 41, + "eggGroups": [ + "Amorphous" + ] + }, + "axew": { + "num": 610, + "species": "Axew", + "types": [ + "Dragon" + ], + "baseStats": { + "hp": 46, + "atk": 87, + "def": 60, + "spa": 30, + "spd": 40, + "spe": 57 + }, + "abilities": { + "0": "Rivalry", + "1": "Mold Breaker", + "H": "Unnerve" + }, + "heightm": 0.6, + "weightkg": 18, + "color": "Green", + "evos": [ + "fraxure" + ], + "eggGroups": [ + "Monster", + "Dragon" + ] + }, + "fraxure": { + "num": 611, + "species": "Fraxure", + "types": [ + "Dragon" + ], + "baseStats": { + "hp": 66, + "atk": 117, + "def": 70, + "spa": 40, + "spd": 50, + "spe": 67 + }, + "abilities": { + "0": "Rivalry", + "1": "Mold Breaker", + "H": "Unnerve" + }, + "heightm": 1, + "weightkg": 36, + "color": "Green", + "prevo": "axew", + "evos": [ + "haxorus" + ], + "evoLevel": 38, + "eggGroups": [ + "Monster", + "Dragon" + ] + }, + "haxorus": { + "num": 612, + "species": "Haxorus", + "types": [ + "Dragon" + ], + "baseStats": { + "hp": 76, + "atk": 147, + "def": 90, + "spa": 60, + "spd": 70, + "spe": 97 + }, + "abilities": { + "0": "Rivalry", + "1": "Mold Breaker", + "H": "Unnerve" + }, + "heightm": 1.8, + "weightkg": 105.5, + "color": "Yellow", + "prevo": "fraxure", + "evoLevel": 48, + "eggGroups": [ + "Monster", + "Dragon" + ] + }, + "cubchoo": { + "num": 613, + "species": "Cubchoo", + "types": [ + "Ice" + ], + "baseStats": { + "hp": 55, + "atk": 70, + "def": 40, + "spa": 60, + "spd": 40, + "spe": 40 + }, + "abilities": { + "0": "Snow Cloak", + "H": "Rattled" + }, + "heightm": 0.5, + "weightkg": 8.5, + "color": "White", + "evos": [ + "beartic" + ], + "eggGroups": [ + "Field" + ] + }, + "beartic": { + "num": 614, + "species": "Beartic", + "types": [ + "Ice" + ], + "baseStats": { + "hp": 95, + "atk": 110, + "def": 80, + "spa": 70, + "spd": 80, + "spe": 50 + }, + "abilities": { + "0": "Snow Cloak", + "H": "Swift Swim" + }, + "heightm": 2.6, + "weightkg": 260, + "color": "White", + "prevo": "cubchoo", + "evoLevel": 37, + "eggGroups": [ + "Field" + ] + }, + "cryogonal": { + "num": 615, + "species": "Cryogonal", + "types": [ + "Ice" + ], + "gender": "N", + "baseStats": { + "hp": 70, + "atk": 50, + "def": 30, + "spa": 95, + "spd": 135, + "spe": 105 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 1.1, + "weightkg": 148, + "color": "Blue", + "eggGroups": [ + "Mineral" + ] + }, + "shelmet": { + "num": 616, + "species": "Shelmet", + "types": [ + "Bug" + ], + "baseStats": { + "hp": 50, + "atk": 40, + "def": 85, + "spa": 40, + "spd": 65, + "spe": 25 + }, + "abilities": { + "0": "Hydration", + "1": "Shell Armor", + "H": "Overcoat" + }, + "heightm": 0.4, + "weightkg": 7.7, + "color": "Red", + "evos": [ + "accelgor" + ], + "eggGroups": [ + "Bug" + ] + }, + "accelgor": { + "num": 617, + "species": "Accelgor", + "types": [ + "Bug" + ], + "baseStats": { + "hp": 80, + "atk": 70, + "def": 40, + "spa": 100, + "spd": 60, + "spe": 145 + }, + "abilities": { + "0": "Hydration", + "1": "Sticky Hold", + "H": "Unburden" + }, + "heightm": 0.8, + "weightkg": 25.3, + "color": "Red", + "prevo": "shelmet", + "evoLevel": 1, + "eggGroups": [ + "Bug" + ] + }, + "stunfisk": { + "num": 618, + "species": "Stunfisk", + "types": [ + "Ground", + "Electric" + ], + "baseStats": { + "hp": 109, + "atk": 66, + "def": 84, + "spa": 81, + "spd": 99, + "spe": 32 + }, + "abilities": { + "0": "Static", + "1": "Limber", + "H": "Sand Veil" + }, + "heightm": 0.7, + "weightkg": 11, + "color": "Brown", + "eggGroups": [ + "Water 1", + "Amorphous" + ] + }, + "mienfoo": { + "num": 619, + "species": "Mienfoo", + "types": [ + "Fighting" + ], + "baseStats": { + "hp": 45, + "atk": 85, + "def": 50, + "spa": 55, + "spd": 50, + "spe": 65 + }, + "abilities": { + "0": "Inner Focus", + "1": "Regenerator", + "H": "Reckless" + }, + "heightm": 0.9, + "weightkg": 20, + "color": "Yellow", + "evos": [ + "mienshao" + ], + "eggGroups": [ + "Field", + "Human-Like" + ] + }, + "mienshao": { + "num": 620, + "species": "Mienshao", + "types": [ + "Fighting" + ], + "baseStats": { + "hp": 65, + "atk": 125, + "def": 60, + "spa": 95, + "spd": 60, + "spe": 105 + }, + "abilities": { + "0": "Inner Focus", + "1": "Regenerator", + "H": "Reckless" + }, + "heightm": 1.4, + "weightkg": 35.5, + "color": "Purple", + "prevo": "mienfoo", + "evoLevel": 50, + "eggGroups": [ + "Field", + "Human-Like" + ] + }, + "druddigon": { + "num": 621, + "species": "Druddigon", + "types": [ + "Dragon" + ], + "baseStats": { + "hp": 77, + "atk": 120, + "def": 90, + "spa": 60, + "spd": 90, + "spe": 48 + }, + "abilities": { + "0": "Rough Skin", + "1": "Sheer Force", + "H": "Mold Breaker" + }, + "heightm": 1.6, + "weightkg": 139, + "color": "Red", + "eggGroups": [ + "Monster", + "Dragon" + ] + }, + "golett": { + "num": 622, + "species": "Golett", + "types": [ + "Ground", + "Ghost" + ], + "gender": "N", + "baseStats": { + "hp": 59, + "atk": 74, + "def": 50, + "spa": 35, + "spd": 50, + "spe": 35 + }, + "abilities": { + "0": "Iron Fist", + "1": "Klutz", + "H": "No Guard" + }, + "heightm": 1, + "weightkg": 92, + "color": "Green", + "evos": [ + "golurk" + ], + "eggGroups": [ + "Mineral" + ] + }, + "golurk": { + "num": 623, + "species": "Golurk", + "types": [ + "Ground", + "Ghost" + ], + "gender": "N", + "baseStats": { + "hp": 89, + "atk": 124, + "def": 80, + "spa": 55, + "spd": 80, + "spe": 55 + }, + "abilities": { + "0": "Iron Fist", + "1": "Klutz", + "H": "No Guard" + }, + "heightm": 2.8, + "weightkg": 330, + "color": "Green", + "prevo": "golett", + "evoLevel": 43, + "eggGroups": [ + "Mineral" + ] + }, + "pawniard": { + "num": 624, + "species": "Pawniard", + "types": [ + "Dark", + "Steel" + ], + "baseStats": { + "hp": 45, + "atk": 85, + "def": 70, + "spa": 40, + "spd": 40, + "spe": 60 + }, + "abilities": { + "0": "Defiant", + "1": "Inner Focus", + "H": "Pressure" + }, + "heightm": 0.5, + "weightkg": 10.2, + "color": "Red", + "evos": [ + "bisharp" + ], + "eggGroups": [ + "Human-Like" + ] + }, + "bisharp": { + "num": 625, + "species": "Bisharp", + "types": [ + "Dark", + "Steel" + ], + "baseStats": { + "hp": 65, + "atk": 125, + "def": 100, + "spa": 60, + "spd": 70, + "spe": 70 + }, + "abilities": { + "0": "Defiant", + "1": "Inner Focus", + "H": "Pressure" + }, + "heightm": 1.6, + "weightkg": 70, + "color": "Red", + "prevo": "pawniard", + "evoLevel": 52, + "eggGroups": [ + "Human-Like" + ] + }, + "bouffalant": { + "num": 626, + "species": "Bouffalant", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 95, + "atk": 110, + "def": 95, + "spa": 40, + "spd": 95, + "spe": 55 + }, + "abilities": { + "0": "Reckless", + "1": "Sap Sipper", + "H": "Soundproof" + }, + "heightm": 1.6, + "weightkg": 94.6, + "color": "Brown", + "eggGroups": [ + "Field" + ] + }, + "rufflet": { + "num": 627, + "species": "Rufflet", + "types": [ + "Normal", + "Flying" + ], + "gender": "M", + "baseStats": { + "hp": 70, + "atk": 83, + "def": 50, + "spa": 37, + "spd": 50, + "spe": 60 + }, + "abilities": { + "0": "Keen Eye", + "1": "Sheer Force", + "H": "Hustle" + }, + "heightm": 0.5, + "weightkg": 10.5, + "color": "White", + "evos": [ + "braviary" + ], + "eggGroups": [ + "Flying" + ] + }, + "braviary": { + "num": 628, + "species": "Braviary", + "types": [ + "Normal", + "Flying" + ], + "gender": "M", + "baseStats": { + "hp": 100, + "atk": 123, + "def": 75, + "spa": 57, + "spd": 75, + "spe": 80 + }, + "abilities": { + "0": "Keen Eye", + "1": "Sheer Force", + "H": "Defiant" + }, + "heightm": 1.5, + "weightkg": 41, + "color": "Red", + "prevo": "rufflet", + "evoLevel": 54, + "eggGroups": [ + "Flying" + ] + }, + "vullaby": { + "num": 629, + "species": "Vullaby", + "types": [ + "Dark", + "Flying" + ], + "gender": "F", + "baseStats": { + "hp": 70, + "atk": 55, + "def": 75, + "spa": 45, + "spd": 65, + "spe": 60 + }, + "abilities": { + "0": "Big Pecks", + "1": "Overcoat", + "H": "Weak Armor" + }, + "heightm": 0.5, + "weightkg": 9, + "color": "Brown", + "evos": [ + "mandibuzz" + ], + "eggGroups": [ + "Flying" + ] + }, + "mandibuzz": { + "num": 630, + "species": "Mandibuzz", + "types": [ + "Dark", + "Flying" + ], + "gender": "F", + "baseStats": { + "hp": 110, + "atk": 65, + "def": 105, + "spa": 55, + "spd": 95, + "spe": 80 + }, + "abilities": { + "0": "Big Pecks", + "1": "Overcoat", + "H": "Weak Armor" + }, + "heightm": 1.2, + "weightkg": 39.5, + "color": "Brown", + "prevo": "vullaby", + "evoLevel": 54, + "eggGroups": [ + "Flying" + ] + }, + "heatmor": { + "num": 631, + "species": "Heatmor", + "types": [ + "Fire" + ], + "baseStats": { + "hp": 85, + "atk": 97, + "def": 66, + "spa": 105, + "spd": 66, + "spe": 65 + }, + "abilities": { + "0": "Gluttony", + "1": "Flash Fire", + "H": "White Smoke" + }, + "heightm": 1.4, + "weightkg": 58, + "color": "Red", + "eggGroups": [ + "Field" + ] + }, + "durant": { + "num": 632, + "species": "Durant", + "types": [ + "Bug", + "Steel" + ], + "baseStats": { + "hp": 58, + "atk": 109, + "def": 112, + "spa": 48, + "spd": 48, + "spe": 109 + }, + "abilities": { + "0": "Swarm", + "1": "Hustle", + "H": "Truant" + }, + "heightm": 0.3, + "weightkg": 33, + "color": "Gray", + "eggGroups": [ + "Bug" + ] + }, + "deino": { + "num": 633, + "species": "Deino", + "types": [ + "Dark", + "Dragon" + ], + "baseStats": { + "hp": 52, + "atk": 65, + "def": 50, + "spa": 45, + "spd": 50, + "spe": 38 + }, + "abilities": { + "0": "Hustle" + }, + "heightm": 0.8, + "weightkg": 17.3, + "color": "Blue", + "evos": [ + "zweilous" + ], + "eggGroups": [ + "Dragon" + ] + }, + "zweilous": { + "num": 634, + "species": "Zweilous", + "types": [ + "Dark", + "Dragon" + ], + "baseStats": { + "hp": 72, + "atk": 85, + "def": 70, + "spa": 65, + "spd": 70, + "spe": 58 + }, + "abilities": { + "0": "Hustle" + }, + "heightm": 1.4, + "weightkg": 50, + "color": "Blue", + "prevo": "deino", + "evos": [ + "hydreigon" + ], + "evoLevel": 50, + "eggGroups": [ + "Dragon" + ] + }, + "hydreigon": { + "num": 635, + "species": "Hydreigon", + "types": [ + "Dark", + "Dragon" + ], + "baseStats": { + "hp": 92, + "atk": 105, + "def": 90, + "spa": 125, + "spd": 90, + "spe": 98 + }, + "abilities": { + "0": "Levitate" + }, + "heightm": 1.8, + "weightkg": 160, + "color": "Blue", + "prevo": "zweilous", + "evoLevel": 64, + "eggGroups": [ + "Dragon" + ] + }, + "larvesta": { + "num": 636, + "species": "Larvesta", + "types": [ + "Bug", + "Fire" + ], + "baseStats": { + "hp": 55, + "atk": 85, + "def": 55, + "spa": 50, + "spd": 55, + "spe": 60 + }, + "abilities": { + "0": "Flame Body", + "H": "Swarm" + }, + "heightm": 1.1, + "weightkg": 28.8, + "color": "White", + "evos": [ + "volcarona" + ], + "eggGroups": [ + "Bug" + ] + }, + "volcarona": { + "num": 637, + "species": "Volcarona", + "types": [ + "Bug", + "Fire" + ], + "baseStats": { + "hp": 85, + "atk": 60, + "def": 65, + "spa": 135, + "spd": 105, + "spe": 100 + }, + "abilities": { + "0": "Flame Body", + "H": "Swarm" + }, + "heightm": 1.6, + "weightkg": 46, + "color": "White", + "prevo": "larvesta", + "evoLevel": 59, + "eggGroups": [ + "Bug" + ] + }, + "cobalion": { + "num": 638, + "species": "Cobalion", + "types": [ + "Steel", + "Fighting" + ], + "gender": "N", + "baseStats": { + "hp": 91, + "atk": 90, + "def": 129, + "spa": 90, + "spd": 72, + "spe": 108 + }, + "abilities": { + "0": "Justified" + }, + "heightm": 2.1, + "weightkg": 250, + "color": "Blue", + "eggGroups": [ + "Undiscovered" + ] + }, + "terrakion": { + "num": 639, + "species": "Terrakion", + "types": [ + "Rock", + "Fighting" + ], + "gender": "N", + "baseStats": { + "hp": 91, + "atk": 129, + "def": 90, + "spa": 72, + "spd": 90, + "spe": 108 + }, + "abilities": { + "0": "Justified" + }, + "heightm": 1.9, + "weightkg": 260, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "virizion": { + "num": 640, + "species": "Virizion", + "types": [ + "Grass", + "Fighting" + ], + "gender": "N", + "baseStats": { + "hp": 91, + "atk": 90, + "def": 72, + "spa": 90, + "spd": 129, + "spe": 108 + }, + "abilities": { + "0": "Justified" + }, + "heightm": 2, + "weightkg": 200, + "color": "Green", + "eggGroups": [ + "Undiscovered" + ] + }, + "tornadus": { + "num": 641, + "species": "Tornadus", + "baseForme": "Incarnate", + "types": [ + "Flying" + ], + "gender": "M", + "baseStats": { + "hp": 79, + "atk": 115, + "def": 70, + "spa": 125, + "spd": 80, + "spe": 111 + }, + "abilities": { + "0": "Prankster", + "H": "Defiant" + }, + "heightm": 1.5, + "weightkg": 63, + "color": "Green", + "eggGroups": [ + "Undiscovered" + ], + "otherFormes": [ + "tornadustherian" + ] + }, + "tornadustherian": { + "num": 641, + "species": "Tornadus-Therian", + "baseSpecies": "Tornadus", + "forme": "Therian", + "formeLetter": "T", + "types": [ + "Flying" + ], + "gender": "M", + "baseStats": { + "hp": 79, + "atk": 100, + "def": 80, + "spa": 110, + "spd": 90, + "spe": 121 + }, + "abilities": { + "0": "Regenerator" + }, + "heightm": 1.4, + "weightkg": 63, + "color": "Green", + "eggGroups": [ + "Undiscovered" + ] + }, + "thundurus": { + "num": 642, + "species": "Thundurus", + "baseForme": "Incarnate", + "types": [ + "Electric", + "Flying" + ], + "gender": "M", + "baseStats": { + "hp": 79, + "atk": 115, + "def": 70, + "spa": 125, + "spd": 80, + "spe": 111 + }, + "abilities": { + "0": "Prankster", + "H": "Defiant" + }, + "heightm": 1.5, + "weightkg": 61, + "color": "Blue", + "eggGroups": [ + "Undiscovered" + ], + "otherFormes": [ + "thundurustherian" + ] + }, + "thundurustherian": { + "num": 642, + "species": "Thundurus-Therian", + "baseSpecies": "Thundurus", + "forme": "Therian", + "formeLetter": "T", + "types": [ + "Electric", + "Flying" + ], + "gender": "M", + "baseStats": { + "hp": 79, + "atk": 105, + "def": 70, + "spa": 145, + "spd": 80, + "spe": 101 + }, + "abilities": { + "0": "Volt Absorb" + }, + "heightm": 3, + "weightkg": 61, + "color": "Blue", + "eggGroups": [ + "Undiscovered" + ] + }, + "reshiram": { + "num": 643, + "species": "Reshiram", + "types": [ + "Dragon", + "Fire" + ], + "gender": "N", + "baseStats": { + "hp": 100, + "atk": 120, + "def": 100, + "spa": 150, + "spd": 120, + "spe": 90 + }, + "abilities": { + "0": "Turboblaze" + }, + "heightm": 3.2, + "weightkg": 330, + "color": "White", + "eggGroups": [ + "Undiscovered" + ] + }, + "zekrom": { + "num": 644, + "species": "Zekrom", + "types": [ + "Dragon", + "Electric" + ], + "gender": "N", + "baseStats": { + "hp": 100, + "atk": 150, + "def": 120, + "spa": 120, + "spd": 100, + "spe": 90 + }, + "abilities": { + "0": "Teravolt" + }, + "heightm": 2.9, + "weightkg": 345, + "color": "Black", + "eggGroups": [ + "Undiscovered" + ] + }, + "landorus": { + "num": 645, + "species": "Landorus", + "baseForme": "Incarnate", + "types": [ + "Ground", + "Flying" + ], + "gender": "M", + "baseStats": { + "hp": 89, + "atk": 125, + "def": 90, + "spa": 115, + "spd": 80, + "spe": 101 + }, + "abilities": { + "0": "Sand Force", + "H": "Sheer Force" + }, + "heightm": 1.5, + "weightkg": 68, + "color": "Brown", + "eggGroups": [ + "Undiscovered" + ], + "otherFormes": [ + "landorustherian" + ] + }, + "landorustherian": { + "num": 645, + "species": "Landorus-Therian", + "baseSpecies": "Landorus", + "forme": "Therian", + "formeLetter": "T", + "types": [ + "Ground", + "Flying" + ], + "gender": "M", + "baseStats": { + "hp": 89, + "atk": 145, + "def": 90, + "spa": 105, + "spd": 80, + "spe": 91 + }, + "abilities": { + "0": "Intimidate" + }, + "heightm": 1.3, + "weightkg": 68, + "color": "Brown", + "eggGroups": [ + "Undiscovered" + ] + }, + "kyurem": { + "num": 646, + "species": "Kyurem", + "types": [ + "Dragon", + "Ice" + ], + "gender": "N", + "baseStats": { + "hp": 125, + "atk": 130, + "def": 90, + "spa": 130, + "spd": 90, + "spe": 95 + }, + "abilities": { + "0": "Pressure" + }, + "heightm": 3, + "weightkg": 325, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ], + "otherFormes": [ + "kyuremblack", + "kyuremwhite" + ] + }, + "kyuremblack": { + "num": 646, + "species": "Kyurem-Black", + "baseSpecies": "Kyurem", + "forme": "Black", + "formeLetter": "B", + "types": [ + "Dragon", + "Ice" + ], + "gender": "N", + "baseStats": { + "hp": 125, + "atk": 170, + "def": 100, + "spa": 120, + "spd": 90, + "spe": 95 + }, + "abilities": { + "0": "Teravolt" + }, + "heightm": 3.3, + "weightkg": 325, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "kyuremwhite": { + "num": 646, + "species": "Kyurem-White", + "baseSpecies": "Kyurem", + "forme": "White", + "formeLetter": "W", + "types": [ + "Dragon", + "Ice" + ], + "gender": "N", + "baseStats": { + "hp": 125, + "atk": 120, + "def": 90, + "spa": 170, + "spd": 100, + "spe": 95 + }, + "abilities": { + "0": "Turboblaze" + }, + "heightm": 3.6, + "weightkg": 325, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "keldeo": { + "num": 647, + "species": "Keldeo", + "baseForme": "Ordinary", + "types": [ + "Water", + "Fighting" + ], + "gender": "N", + "baseStats": { + "hp": 91, + "atk": 72, + "def": 90, + "spa": 129, + "spd": 90, + "spe": 108 + }, + "abilities": { + "0": "Justified" + }, + "heightm": 1.4, + "weightkg": 48.5, + "color": "Yellow", + "eggGroups": [ + "Undiscovered" + ], + "otherFormes": [ + "keldeoresolute" + ] + }, + "keldeoresolute": { + "num": 647, + "species": "Keldeo-Resolute", + "baseSpecies": "Keldeo", + "forme": "Resolute", + "formeLetter": "R", + "types": [ + "Water", + "Fighting" + ], + "gender": "N", + "baseStats": { + "hp": 91, + "atk": 72, + "def": 90, + "spa": 129, + "spd": 90, + "spe": 108 + }, + "abilities": { + "0": "Justified" + }, + "heightm": 1.4, + "weightkg": 48.5, + "color": "Yellow", + "eggGroups": [ + "Undiscovered" + ] + }, + "meloetta": { + "num": 648, + "species": "Meloetta", + "baseForme": "Aria", + "types": [ + "Normal", + "Psychic" + ], + "gender": "N", + "baseStats": { + "hp": 100, + "atk": 77, + "def": 77, + "spa": 128, + "spd": 128, + "spe": 90 + }, + "abilities": { + "0": "Serene Grace" + }, + "heightm": 0.6, + "weightkg": 6.5, + "color": "White", + "eggGroups": [ + "Undiscovered" + ], + "otherFormes": [ + "meloettapirouette" + ] + }, + "meloettapirouette": { + "num": 648, + "species": "Meloetta-Pirouette", + "baseSpecies": "Meloetta", + "forme": "Pirouette", + "formeLetter": "P", + "types": [ + "Normal", + "Fighting" + ], + "gender": "N", + "baseStats": { + "hp": 100, + "atk": 128, + "def": 90, + "spa": 77, + "spd": 77, + "spe": 128 + }, + "abilities": { + "0": "Serene Grace" + }, + "heightm": 0.6, + "weightkg": 6.5, + "color": "White", + "eggGroups": [ + "Undiscovered" + ] + }, + "genesect": { + "num": 649, + "species": "Genesect", + "types": [ + "Bug", + "Steel" + ], + "gender": "N", + "baseStats": { + "hp": 71, + "atk": 120, + "def": 95, + "spa": 120, + "spd": 95, + "spe": 99 + }, + "abilities": { + "0": "Download" + }, + "heightm": 1.5, + "weightkg": 82.5, + "color": "Purple", + "eggGroups": [ + "Undiscovered" + ], + "otherFormes": [ + "genesectdouse", + "genesectshock", + "genesectburn", + "genesectchill" + ] + }, + "genesectdouse": { + "num": 649, + "species": "Genesect-Douse", + "baseSpecies": "Genesect", + "forme": "Douse", + "formeLetter": "D", + "types": [ + "Bug", + "Steel" + ], + "gender": "N", + "baseStats": { + "hp": 71, + "atk": 120, + "def": 95, + "spa": 120, + "spd": 95, + "spe": 99 + }, + "abilities": { + "0": "Download" + }, + "heightm": 1.5, + "weightkg": 82.5, + "color": "Purple", + "eggGroups": [ + "Undiscovered" + ] + }, + "genesectshock": { + "num": 649, + "species": "Genesect-Shock", + "baseSpecies": "Genesect", + "forme": "Shock", + "formeLetter": "S", + "types": [ + "Bug", + "Steel" + ], + "gender": "N", + "baseStats": { + "hp": 71, + "atk": 120, + "def": 95, + "spa": 120, + "spd": 95, + "spe": 99 + }, + "abilities": { + "0": "Download" + }, + "heightm": 1.5, + "weightkg": 82.5, + "color": "Purple", + "eggGroups": [ + "Undiscovered" + ] + }, + "genesectburn": { + "num": 649, + "species": "Genesect-Burn", + "baseSpecies": "Genesect", + "forme": "Burn", + "formeLetter": "B", + "types": [ + "Bug", + "Steel" + ], + "gender": "N", + "baseStats": { + "hp": 71, + "atk": 120, + "def": 95, + "spa": 120, + "spd": 95, + "spe": 99 + }, + "abilities": { + "0": "Download" + }, + "heightm": 1.5, + "weightkg": 82.5, + "color": "Purple", + "eggGroups": [ + "Undiscovered" + ] + }, + "genesectchill": { + "num": 649, + "species": "Genesect-Chill", + "baseSpecies": "Genesect", + "forme": "Chill", + "formeLetter": "C", + "types": [ + "Bug", + "Steel" + ], + "gender": "N", + "baseStats": { + "hp": 71, + "atk": 120, + "def": 95, + "spa": 120, + "spd": 95, + "spe": 99 + }, + "abilities": { + "0": "Download" + }, + "heightm": 1.5, + "weightkg": 82.5, + "color": "Purple", + "eggGroups": [ + "Undiscovered" + ] + }, + "chespin": { + "num": 650, + "species": "Chespin", + "types": [ + "Grass" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 56, + "atk": 61, + "def": 65, + "spa": 48, + "spd": 45, + "spe": 38 + }, + "abilities": { + "0": "Overgrow", + "H": "Bulletproof" + }, + "heightm": 0.4, + "weightkg": 9, + "color": "Green", + "evos": [ + "quilladin" + ], + "eggGroups": [ + "Field" + ] + }, + "quilladin": { + "num": 651, + "species": "Quilladin", + "types": [ + "Grass" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 61, + "atk": 78, + "def": 95, + "spa": 56, + "spd": 58, + "spe": 57 + }, + "abilities": { + "0": "Overgrow", + "H": "Bulletproof" + }, + "heightm": 0.7, + "weightkg": 29, + "color": "Green", + "prevo": "chespin", + "evos": [ + "chesnaught" + ], + "evoLevel": 16, + "eggGroups": [ + "Field" + ] + }, + "chesnaught": { + "num": 652, + "species": "Chesnaught", + "types": [ + "Grass", + "Fighting" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 88, + "atk": 107, + "def": 122, + "spa": 74, + "spd": 75, + "spe": 64 + }, + "abilities": { + "0": "Overgrow", + "H": "Bulletproof" + }, + "heightm": 1.6, + "weightkg": 90, + "color": "Green", + "prevo": "quilladin", + "evoLevel": 36, + "eggGroups": [ + "Field" + ] + }, + "fennekin": { + "num": 653, + "species": "Fennekin", + "types": [ + "Fire" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 40, + "atk": 45, + "def": 40, + "spa": 62, + "spd": 60, + "spe": 60 + }, + "abilities": { + "0": "Blaze", + "H": "Magician" + }, + "heightm": 0.4, + "weightkg": 9.4, + "color": "Red", + "evos": [ + "braixen" + ], + "eggGroups": [ + "Field" + ] + }, + "braixen": { + "num": 654, + "species": "Braixen", + "types": [ + "Fire" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 59, + "atk": 59, + "def": 58, + "spa": 90, + "spd": 70, + "spe": 73 + }, + "abilities": { + "0": "Blaze", + "H": "Magician" + }, + "heightm": 1, + "weightkg": 14.5, + "color": "Red", + "prevo": "fennekin", + "evos": [ + "delphox" + ], + "evoLevel": 16, + "eggGroups": [ + "Field" + ] + }, + "delphox": { + "num": 655, + "species": "Delphox", + "types": [ + "Fire", + "Psychic" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 75, + "atk": 69, + "def": 72, + "spa": 114, + "spd": 100, + "spe": 104 + }, + "abilities": { + "0": "Blaze", + "H": "Magician" + }, + "heightm": 1.5, + "weightkg": 39, + "color": "Red", + "prevo": "braixen", + "evoLevel": 36, + "eggGroups": [ + "Field" + ] + }, + "froakie": { + "num": 656, + "species": "Froakie", + "types": [ + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 41, + "atk": 56, + "def": 40, + "spa": 62, + "spd": 44, + "spe": 71 + }, + "abilities": { + "0": "Torrent", + "H": "Protean" + }, + "heightm": 0.3, + "weightkg": 7, + "color": "Blue", + "evos": [ + "frogadier" + ], + "eggGroups": [ + "Water 1" + ] + }, + "frogadier": { + "num": 657, + "species": "Frogadier", + "types": [ + "Water" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 54, + "atk": 63, + "def": 52, + "spa": 83, + "spd": 56, + "spe": 97 + }, + "abilities": { + "0": "Torrent", + "H": "Protean" + }, + "heightm": 0.6, + "weightkg": 10.9, + "color": "Blue", + "prevo": "froakie", + "evos": [ + "greninja" + ], + "evoLevel": 16, + "eggGroups": [ + "Water 1" + ] + }, + "greninja": { + "num": 658, + "species": "Greninja", + "types": [ + "Water", + "Dark" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 72, + "atk": 95, + "def": 67, + "spa": 103, + "spd": 71, + "spe": 122 + }, + "abilities": { + "0": "Torrent", + "H": "Protean" + }, + "heightm": 1.5, + "weightkg": 40, + "color": "Blue", + "prevo": "frogadier", + "evoLevel": 36, + "eggGroups": [ + "Water 1" + ] + }, + "bunnelby": { + "num": 659, + "species": "Bunnelby", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 38, + "atk": 36, + "def": 38, + "spa": 32, + "spd": 36, + "spe": 57 + }, + "abilities": { + "0": "Pickup", + "1": "Cheek Pouch", + "H": "Huge Power" + }, + "heightm": 0.4, + "weightkg": 5, + "color": "Brown", + "evos": [ + "diggersby" + ], + "eggGroups": [ + "Field" + ] + }, + "diggersby": { + "num": 660, + "species": "Diggersby", + "types": [ + "Normal", + "Ground" + ], + "baseStats": { + "hp": 85, + "atk": 56, + "def": 77, + "spa": 50, + "spd": 77, + "spe": 78 + }, + "abilities": { + "0": "Pickup", + "1": "Cheek Pouch", + "H": "Huge Power" + }, + "heightm": 1, + "weightkg": 42.4, + "color": "Brown", + "prevo": "bunnelby", + "evoLevel": 20, + "eggGroups": [ + "Field" + ] + }, + "fletchling": { + "num": 661, + "species": "Fletchling", + "types": [ + "Normal", + "Flying" + ], + "baseStats": { + "hp": 45, + "atk": 50, + "def": 43, + "spa": 40, + "spd": 38, + "spe": 62 + }, + "abilities": { + "0": "Big Pecks", + "H": "Gale Wings" + }, + "heightm": 0.3, + "weightkg": 1.7, + "color": "Red", + "evos": [ + "fletchinder" + ], + "eggGroups": [ + "Flying" + ] + }, + "fletchinder": { + "num": 662, + "species": "Fletchinder", + "types": [ + "Fire", + "Flying" + ], + "baseStats": { + "hp": 62, + "atk": 73, + "def": 55, + "spa": 56, + "spd": 52, + "spe": 84 + }, + "abilities": { + "0": "Flame Body", + "H": "Gale Wings" + }, + "heightm": 0.7, + "weightkg": 16, + "color": "Red", + "prevo": "fletchling", + "evos": [ + "talonflame" + ], + "evoLevel": 17, + "eggGroups": [ + "Flying" + ] + }, + "talonflame": { + "num": 663, + "species": "Talonflame", + "types": [ + "Fire", + "Flying" + ], + "baseStats": { + "hp": 78, + "atk": 81, + "def": 71, + "spa": 74, + "spd": 69, + "spe": 126 + }, + "abilities": { + "0": "Flame Body", + "H": "Gale Wings" + }, + "heightm": 1.2, + "weightkg": 24.5, + "color": "Red", + "prevo": "fletchinder", + "evoLevel": 35, + "eggGroups": [ + "Flying" + ] + }, + "scatterbug": { + "num": 664, + "species": "Scatterbug", + "types": [ + "Bug" + ], + "baseStats": { + "hp": 38, + "atk": 35, + "def": 40, + "spa": 27, + "spd": 25, + "spe": 35 + }, + "abilities": { + "0": "Shield Dust", + "1": "Compound Eyes", + "H": "Friend Guard" + }, + "heightm": 0.3, + "weightkg": 2.5, + "color": "Black", + "evos": [ + "spewpa" + ], + "eggGroups": [ + "Bug" + ] + }, + "spewpa": { + "num": 665, + "species": "Spewpa", + "types": [ + "Bug" + ], + "baseStats": { + "hp": 45, + "atk": 22, + "def": 60, + "spa": 27, + "spd": 30, + "spe": 29 + }, + "abilities": { + "0": "Shed Skin", + "H": "Friend Guard" + }, + "heightm": 0.3, + "weightkg": 8.4, + "color": "Black", + "prevo": "scatterbug", + "evos": [ + "vivillon" + ], + "evoLevel": 9, + "eggGroups": [ + "Bug" + ] + }, + "vivillon": { + "num": 666, + "species": "Vivillon", + "types": [ + "Bug", + "Flying" + ], + "baseStats": { + "hp": 80, + "atk": 52, + "def": 50, + "spa": 90, + "spd": 50, + "spe": 89 + }, + "abilities": { + "0": "Shield Dust", + "1": "Compound Eyes", + "H": "Friend Guard" + }, + "heightm": 1.2, + "weightkg": 17, + "color": "Black", + "prevo": "spewpa", + "evoLevel": 12, + "eggGroups": [ + "Bug" + ], + "otherForms": [ + "vivillonarchipelago", + "vivilloncontinental", + "vivillonelegant", + "vivillongarden", + "vivillonhighplains", + "vivillonicysnow", + "vivillonjungle", + "vivillonmarine", + "vivillonmodern", + "vivillonmonsoon", + "vivillonocean", + "vivillonpolar", + "vivillonriver", + "vivillonsandstorm", + "vivillonsavanna", + "vivillonsun", + "vivillontundra" + ] + }, + "litleo": { + "num": 667, + "species": "Litleo", + "types": [ + "Fire", + "Normal" + ], + "baseStats": { + "hp": 62, + "atk": 50, + "def": 58, + "spa": 73, + "spd": 54, + "spe": 72 + }, + "abilities": { + "0": "Rivalry", + "1": "Unnerve", + "H": "Moxie" + }, + "heightm": 0.6, + "weightkg": 13.5, + "color": "Brown", + "evos": [ + "pyroar" + ], + "eggGroups": [ + "Field" + ] + }, + "pyroar": { + "num": 668, + "species": "Pyroar", + "types": [ + "Fire", + "Normal" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 86, + "atk": 68, + "def": 72, + "spa": 109, + "spd": 66, + "spe": 106 + }, + "abilities": { + "0": "Rivalry", + "1": "Unnerve", + "H": "Moxie" + }, + "heightm": 1.5, + "weightkg": 81.5, + "color": "Brown", + "prevo": "litleo", + "evoLevel": 35, + "eggGroups": [ + "Field" + ] + }, + "flabebe": { + "num": 669, + "species": "Flabebe", + "types": [ + "Fairy" + ], + "gender": "F", + "baseStats": { + "hp": 44, + "atk": 38, + "def": 39, + "spa": 61, + "spd": 79, + "spe": 42 + }, + "abilities": { + "0": "Flower Veil", + "H": "Symbiosis" + }, + "heightm": 0.1, + "weightkg": 0.1, + "color": "White", + "evos": [ + "floette" + ], + "eggGroups": [ + "Fairy" + ], + "otherForms": [ + "flabebeblue", + "flabebeorange", + "flabebewhite", + "flabebeyellow" + ] + }, + "floette": { + "num": 670, + "species": "Floette", + "baseForme": "Red-Flower", + "types": [ + "Fairy" + ], + "gender": "F", + "baseStats": { + "hp": 54, + "atk": 45, + "def": 47, + "spa": 75, + "spd": 98, + "spe": 52 + }, + "abilities": { + "0": "Flower Veil", + "H": "Symbiosis" + }, + "heightm": 0.2, + "weightkg": 0.9, + "color": "White", + "prevo": "flabebe", + "evos": [ + "florges" + ], + "evoLevel": 19, + "eggGroups": [ + "Fairy" + ], + "otherForms": [ + "floetteblue", + "floetteorange", + "floettewhite", + "floetteyellow" + ], + "otherFormes": [ + "floetteeternal" + ] + }, + "floetteeternal": { + "num": 670, + "species": "Floette-Eternal", + "baseSpecies": "Floette", + "forme": "Eternal", + "formeLetter": "E", + "types": [ + "Fairy" + ], + "gender": "F", + "baseStats": { + "hp": 74, + "atk": 65, + "def": 67, + "spa": 125, + "spd": 128, + "spe": 92 + }, + "abilities": { + "0": "Flower Veil" + }, + "heightm": 0.2, + "weightkg": 0.9, + "color": "White", + "eggGroups": [ + "Undiscovered" + ] + }, + "florges": { + "num": 671, + "species": "Florges", + "types": [ + "Fairy" + ], + "gender": "F", + "baseStats": { + "hp": 78, + "atk": 65, + "def": 68, + "spa": 112, + "spd": 154, + "spe": 75 + }, + "abilities": { + "0": "Flower Veil", + "H": "Symbiosis" + }, + "heightm": 1.1, + "weightkg": 10, + "color": "White", + "prevo": "floette", + "evoLevel": 19, + "eggGroups": [ + "Fairy" + ], + "otherForms": [ + "florgesblue", + "florgesorange", + "florgeswhite", + "florgesyellow" + ] + }, + "skiddo": { + "num": 672, + "species": "Skiddo", + "types": [ + "Grass" + ], + "baseStats": { + "hp": 66, + "atk": 65, + "def": 48, + "spa": 62, + "spd": 57, + "spe": 52 + }, + "abilities": { + "0": "Sap Sipper", + "H": "Grass Pelt" + }, + "heightm": 0.9, + "weightkg": 31, + "color": "Brown", + "evos": [ + "gogoat" + ], + "eggGroups": [ + "Field" + ] + }, + "gogoat": { + "num": 673, + "species": "Gogoat", + "types": [ + "Grass" + ], + "baseStats": { + "hp": 123, + "atk": 100, + "def": 62, + "spa": 97, + "spd": 81, + "spe": 68 + }, + "abilities": { + "0": "Sap Sipper", + "H": "Grass Pelt" + }, + "heightm": 1.7, + "weightkg": 91, + "color": "Brown", + "prevo": "skiddo", + "evoLevel": 32, + "eggGroups": [ + "Field" + ] + }, + "pancham": { + "num": 674, + "species": "Pancham", + "types": [ + "Fighting" + ], + "baseStats": { + "hp": 67, + "atk": 82, + "def": 62, + "spa": 46, + "spd": 48, + "spe": 43 + }, + "abilities": { + "0": "Iron Fist", + "1": "Mold Breaker", + "H": "Scrappy" + }, + "heightm": 0.6, + "weightkg": 8, + "color": "White", + "evos": [ + "pangoro" + ], + "eggGroups": [ + "Field", + "Human-Like" + ] + }, + "pangoro": { + "num": 675, + "species": "Pangoro", + "types": [ + "Fighting", + "Dark" + ], + "baseStats": { + "hp": 95, + "atk": 124, + "def": 78, + "spa": 69, + "spd": 71, + "spe": 58 + }, + "abilities": { + "0": "Iron Fist", + "1": "Mold Breaker", + "H": "Scrappy" + }, + "heightm": 2.1, + "weightkg": 136, + "color": "White", + "prevo": "pancham", + "evoLevel": 32, + "eggGroups": [ + "Field", + "Human-Like" + ] + }, + "furfrou": { + "num": 676, + "species": "Furfrou", + "types": [ + "Normal" + ], + "baseStats": { + "hp": 75, + "atk": 80, + "def": 60, + "spa": 65, + "spd": 90, + "spe": 102 + }, + "abilities": { + "0": "Fur Coat" + }, + "heightm": 1.2, + "weightkg": 28, + "color": "White", + "eggGroups": [ + "Field" + ] + }, + "espurr": { + "num": 677, + "species": "Espurr", + "types": [ + "Psychic" + ], + "baseStats": { + "hp": 62, + "atk": 48, + "def": 54, + "spa": 63, + "spd": 60, + "spe": 68 + }, + "abilities": { + "0": "Keen Eye", + "1": "Infiltrator", + "H": "Own Tempo" + }, + "heightm": 0.3, + "weightkg": 3.5, + "color": "Gray", + "evos": [ + "meowstic" + ], + "eggGroups": [ + "Field" + ] + }, + "meowstic": { + "num": 678, + "species": "Meowstic", + "baseForme": "M", + "types": [ + "Psychic" + ], + "gender": "M", + "baseStats": { + "hp": 74, + "atk": 48, + "def": 76, + "spa": 83, + "spd": 81, + "spe": 104 + }, + "abilities": { + "0": "Keen Eye", + "1": "Infiltrator", + "H": "Prankster" + }, + "heightm": 0.6, + "weightkg": 8.5, + "color": "White", + "prevo": "espurr", + "evoLevel": 25, + "eggGroups": [ + "Field" + ], + "otherFormes": [ + "meowsticf" + ] + }, + "meowsticf": { + "num": 678, + "species": "Meowstic-F", + "baseSpecies": "Meowstic", + "forme": "F", + "formeLetter": "F", + "types": [ + "Psychic" + ], + "gender": "F", + "baseStats": { + "hp": 74, + "atk": 48, + "def": 76, + "spa": 83, + "spd": 81, + "spe": 104 + }, + "abilities": { + "0": "Keen Eye", + "1": "Infiltrator", + "H": "Competitive" + }, + "heightm": 0.6, + "weightkg": 8.5, + "color": "White", + "prevo": "espurr", + "evoLevel": 25, + "eggGroups": [ + "Field" + ] + }, + "honedge": { + "num": 679, + "species": "Honedge", + "types": [ + "Steel", + "Ghost" + ], + "baseStats": { + "hp": 45, + "atk": 80, + "def": 100, + "spa": 35, + "spd": 37, + "spe": 28 + }, + "abilities": { + "0": "No Guard" + }, + "heightm": 0.8, + "weightkg": 2, + "color": "Brown", + "evos": [ + "doublade" + ], + "eggGroups": [ + "Mineral" + ] + }, + "doublade": { + "num": 680, + "species": "Doublade", + "types": [ + "Steel", + "Ghost" + ], + "baseStats": { + "hp": 59, + "atk": 110, + "def": 150, + "spa": 45, + "spd": 49, + "spe": 35 + }, + "abilities": { + "0": "No Guard" + }, + "heightm": 0.8, + "weightkg": 4.5, + "color": "Brown", + "prevo": "honedge", + "evos": [ + "aegislash" + ], + "evoLevel": 35, + "eggGroups": [ + "Mineral" + ] + }, + "aegislash": { + "num": 681, + "species": "Aegislash", + "baseForme": "Shield", + "types": [ + "Steel", + "Ghost" + ], + "baseStats": { + "hp": 60, + "atk": 50, + "def": 150, + "spa": 50, + "spd": 150, + "spe": 60 + }, + "abilities": { + "0": "Stance Change" + }, + "heightm": 1.7, + "weightkg": 53, + "color": "Brown", + "prevo": "doublade", + "evoLevel": 35, + "eggGroups": [ + "Mineral" + ], + "otherFormes": [ + "aegislashblade" + ] + }, + "aegislashblade": { + "num": 681, + "species": "Aegislash-Blade", + "baseSpecies": "Aegislash", + "forme": "Blade", + "formeLetter": "B", + "types": [ + "Steel", + "Ghost" + ], + "baseStats": { + "hp": 60, + "atk": 150, + "def": 50, + "spa": 150, + "spd": 50, + "spe": 60 + }, + "abilities": { + "0": "Stance Change" + }, + "heightm": 1.7, + "weightkg": 53, + "color": "Brown", + "prevo": "doublade", + "evoLevel": 35, + "eggGroups": [ + "Mineral" + ] + }, + "spritzee": { + "num": 682, + "species": "Spritzee", + "types": [ + "Fairy" + ], + "baseStats": { + "hp": 78, + "atk": 52, + "def": 60, + "spa": 63, + "spd": 65, + "spe": 23 + }, + "abilities": { + "0": "Healer", + "H": "Aroma Veil" + }, + "heightm": 0.2, + "weightkg": 0.5, + "color": "Pink", + "evos": [ + "aromatisse" + ], + "eggGroups": [ + "Fairy" + ] + }, + "aromatisse": { + "num": 683, + "species": "Aromatisse", + "types": [ + "Fairy" + ], + "baseStats": { + "hp": 101, + "atk": 72, + "def": 72, + "spa": 99, + "spd": 89, + "spe": 29 + }, + "abilities": { + "0": "Healer", + "H": "Aroma Veil" + }, + "heightm": 0.8, + "weightkg": 15.5, + "color": "Pink", + "prevo": "spritzee", + "evoLevel": 1, + "eggGroups": [ + "Fairy" + ] + }, + "swirlix": { + "num": 684, + "species": "Swirlix", + "types": [ + "Fairy" + ], + "baseStats": { + "hp": 62, + "atk": 48, + "def": 66, + "spa": 59, + "spd": 57, + "spe": 49 + }, + "abilities": { + "0": "Sweet Veil", + "H": "Unburden" + }, + "heightm": 0.4, + "weightkg": 3.5, + "color": "White", + "evos": [ + "slurpuff" + ], + "eggGroups": [ + "Fairy" + ] + }, + "slurpuff": { + "num": 685, + "species": "Slurpuff", + "types": [ + "Fairy" + ], + "baseStats": { + "hp": 82, + "atk": 80, + "def": 86, + "spa": 85, + "spd": 75, + "spe": 72 + }, + "abilities": { + "0": "Sweet Veil", + "H": "Unburden" + }, + "heightm": 0.8, + "weightkg": 5, + "color": "White", + "prevo": "swirlix", + "evoLevel": 1, + "eggGroups": [ + "Fairy" + ] + }, + "inkay": { + "num": 686, + "species": "Inkay", + "types": [ + "Dark", + "Psychic" + ], + "baseStats": { + "hp": 53, + "atk": 54, + "def": 53, + "spa": 37, + "spd": 46, + "spe": 45 + }, + "abilities": { + "0": "Contrary", + "1": "Suction Cups", + "H": "Infiltrator" + }, + "heightm": 0.4, + "weightkg": 3.5, + "color": "Blue", + "evos": [ + "malamar" + ], + "eggGroups": [ + "Water 1", + "Water 2" + ] + }, + "malamar": { + "num": 687, + "species": "Malamar", + "types": [ + "Dark", + "Psychic" + ], + "baseStats": { + "hp": 86, + "atk": 92, + "def": 88, + "spa": 68, + "spd": 75, + "spe": 73 + }, + "abilities": { + "0": "Contrary", + "1": "Suction Cups", + "H": "Infiltrator" + }, + "heightm": 1.5, + "weightkg": 47, + "color": "Blue", + "prevo": "inkay", + "evoLevel": 30, + "eggGroups": [ + "Water 1", + "Water 2" + ] + }, + "binacle": { + "num": 688, + "species": "Binacle", + "types": [ + "Rock", + "Water" + ], + "baseStats": { + "hp": 42, + "atk": 52, + "def": 67, + "spa": 39, + "spd": 56, + "spe": 50 + }, + "abilities": { + "0": "Tough Claws", + "1": "Sniper", + "H": "Pickpocket" + }, + "heightm": 0.5, + "weightkg": 31, + "color": "Brown", + "evos": [ + "barbaracle" + ], + "eggGroups": [ + "Water 3" + ] + }, + "barbaracle": { + "num": 689, + "species": "Barbaracle", + "types": [ + "Rock", + "Water" + ], + "baseStats": { + "hp": 72, + "atk": 105, + "def": 115, + "spa": 54, + "spd": 86, + "spe": 68 + }, + "abilities": { + "0": "Tough Claws", + "1": "Sniper", + "H": "Pickpocket" + }, + "heightm": 1.3, + "weightkg": 96, + "color": "Brown", + "prevo": "binacle", + "evoLevel": 39, + "eggGroups": [ + "Water 3" + ] + }, + "skrelp": { + "num": 690, + "species": "Skrelp", + "types": [ + "Poison", + "Water" + ], + "baseStats": { + "hp": 50, + "atk": 60, + "def": 60, + "spa": 60, + "spd": 60, + "spe": 30 + }, + "abilities": { + "0": "Poison Point", + "1": "Poison Touch", + "H": "Adaptability" + }, + "heightm": 0.5, + "weightkg": 7.3, + "color": "Brown", + "evos": [ + "dragalge" + ], + "eggGroups": [ + "Water 1", + "Dragon" + ] + }, + "dragalge": { + "num": 691, + "species": "Dragalge", + "types": [ + "Poison", + "Dragon" + ], + "baseStats": { + "hp": 65, + "atk": 75, + "def": 90, + "spa": 97, + "spd": 123, + "spe": 44 + }, + "abilities": { + "0": "Poison Point", + "1": "Poison Touch", + "H": "Adaptability" + }, + "heightm": 1.8, + "weightkg": 81.5, + "color": "Brown", + "prevo": "skrelp", + "evoLevel": 48, + "eggGroups": [ + "Water 1", + "Dragon" + ] + }, + "clauncher": { + "num": 692, + "species": "Clauncher", + "types": [ + "Water" + ], + "baseStats": { + "hp": 50, + "atk": 53, + "def": 62, + "spa": 58, + "spd": 63, + "spe": 44 + }, + "abilities": { + "0": "Mega Launcher" + }, + "heightm": 0.5, + "weightkg": 8.3, + "color": "Blue", + "evos": [ + "clawitzer" + ], + "eggGroups": [ + "Water 1", + "Water 3" + ] + }, + "clawitzer": { + "num": 693, + "species": "Clawitzer", + "types": [ + "Water" + ], + "baseStats": { + "hp": 71, + "atk": 73, + "def": 88, + "spa": 120, + "spd": 89, + "spe": 59 + }, + "abilities": { + "0": "Mega Launcher" + }, + "heightm": 1.3, + "weightkg": 35.3, + "color": "Blue", + "prevo": "clauncher", + "evoLevel": 37, + "eggGroups": [ + "Water 1", + "Water 3" + ] + }, + "helioptile": { + "num": 694, + "species": "Helioptile", + "types": [ + "Electric", + "Normal" + ], + "baseStats": { + "hp": 44, + "atk": 38, + "def": 33, + "spa": 61, + "spd": 43, + "spe": 70 + }, + "abilities": { + "0": "Dry Skin", + "1": "Sand Veil", + "H": "Solar Power" + }, + "heightm": 0.5, + "weightkg": 6, + "color": "Yellow", + "evos": [ + "heliolisk" + ], + "eggGroups": [ + "Monster", + "Dragon" + ] + }, + "heliolisk": { + "num": 695, + "species": "Heliolisk", + "types": [ + "Electric", + "Normal" + ], + "baseStats": { + "hp": 62, + "atk": 55, + "def": 52, + "spa": 109, + "spd": 94, + "spe": 109 + }, + "abilities": { + "0": "Dry Skin", + "1": "Sand Veil", + "H": "Solar Power" + }, + "heightm": 1, + "weightkg": 21, + "color": "Yellow", + "prevo": "helioptile", + "evoLevel": 1, + "eggGroups": [ + "Monster", + "Dragon" + ] + }, + "tyrunt": { + "num": 696, + "species": "Tyrunt", + "types": [ + "Rock", + "Dragon" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 58, + "atk": 89, + "def": 77, + "spa": 45, + "spd": 45, + "spe": 48 + }, + "abilities": { + "0": "Strong Jaw", + "H": "Sturdy" + }, + "heightm": 0.8, + "weightkg": 26, + "color": "Brown", + "evos": [ + "tyrantrum" + ], + "eggGroups": [ + "Monster", + "Dragon" + ] + }, + "tyrantrum": { + "num": 697, + "species": "Tyrantrum", + "types": [ + "Rock", + "Dragon" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 82, + "atk": 121, + "def": 119, + "spa": 69, + "spd": 59, + "spe": 71 + }, + "abilities": { + "0": "Strong Jaw", + "H": "Rock Head" + }, + "heightm": 2.5, + "weightkg": 270, + "color": "Red", + "prevo": "tyrunt", + "evoLevel": 39, + "eggGroups": [ + "Monster", + "Dragon" + ] + }, + "amaura": { + "num": 698, + "species": "Amaura", + "types": [ + "Rock", + "Ice" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 77, + "atk": 59, + "def": 50, + "spa": 67, + "spd": 63, + "spe": 46 + }, + "abilities": { + "0": "Refrigerate", + "H": "Snow Warning" + }, + "heightm": 1.3, + "weightkg": 25.2, + "color": "Blue", + "evos": [ + "aurorus" + ], + "eggGroups": [ + "Monster" + ] + }, + "aurorus": { + "num": 699, + "species": "Aurorus", + "types": [ + "Rock", + "Ice" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 123, + "atk": 77, + "def": 72, + "spa": 99, + "spd": 92, + "spe": 58 + }, + "abilities": { + "0": "Refrigerate", + "H": "Snow Warning" + }, + "heightm": 2.7, + "weightkg": 225, + "color": "Blue", + "prevo": "amaura", + "evoLevel": 39, + "eggGroups": [ + "Monster" + ] + }, + "sylveon": { + "num": 700, + "species": "Sylveon", + "types": [ + "Fairy" + ], + "genderRatio": { + "M": 0.875, + "F": 0.125 + }, + "baseStats": { + "hp": 95, + "atk": 65, + "def": 65, + "spa": 110, + "spd": 130, + "spe": 60 + }, + "abilities": { + "0": "Cute Charm", + "H": "Pixilate" + }, + "heightm": 1, + "weightkg": 23.5, + "color": "Pink", + "prevo": "eevee", + "evoLevel": 2, + "eggGroups": [ + "Field" + ] + }, + "hawlucha": { + "num": 701, + "species": "Hawlucha", + "types": [ + "Fighting", + "Flying" + ], + "baseStats": { + "hp": 78, + "atk": 92, + "def": 75, + "spa": 74, + "spd": 63, + "spe": 118 + }, + "abilities": { + "0": "Limber", + "1": "Unburden", + "H": "Mold Breaker" + }, + "heightm": 0.8, + "weightkg": 21.5, + "color": "Green", + "eggGroups": [ + "Human-Like" + ] + }, + "dedenne": { + "num": 702, + "species": "Dedenne", + "types": [ + "Electric", + "Fairy" + ], + "baseStats": { + "hp": 67, + "atk": 58, + "def": 57, + "spa": 81, + "spd": 67, + "spe": 101 + }, + "abilities": { + "0": "Cheek Pouch", + "1": "Pickup", + "H": "Plus" + }, + "heightm": 0.2, + "weightkg": 2.2, + "color": "Yellow", + "eggGroups": [ + "Field", + "Fairy" + ] + }, + "carbink": { + "num": 703, + "species": "Carbink", + "types": [ + "Rock", + "Fairy" + ], + "gender": "N", + "baseStats": { + "hp": 50, + "atk": 50, + "def": 150, + "spa": 50, + "spd": 150, + "spe": 50 + }, + "abilities": { + "0": "Clear Body", + "H": "Sturdy" + }, + "heightm": 0.3, + "weightkg": 5.7, + "color": "Gray", + "eggGroups": [ + "Fairy", + "Mineral" + ] + }, + "goomy": { + "num": 704, + "species": "Goomy", + "types": [ + "Dragon" + ], + "baseStats": { + "hp": 45, + "atk": 50, + "def": 35, + "spa": 55, + "spd": 75, + "spe": 40 + }, + "abilities": { + "0": "Sap Sipper", + "1": "Hydration", + "H": "Gooey" + }, + "heightm": 0.3, + "weightkg": 2.8, + "color": "Purple", + "evos": [ + "sliggoo" + ], + "eggGroups": [ + "Dragon" + ] + }, + "sliggoo": { + "num": 705, + "species": "Sliggoo", + "types": [ + "Dragon" + ], + "baseStats": { + "hp": 68, + "atk": 75, + "def": 53, + "spa": 83, + "spd": 113, + "spe": 60 + }, + "abilities": { + "0": "Sap Sipper", + "1": "Hydration", + "H": "Gooey" + }, + "heightm": 0.8, + "weightkg": 17.5, + "color": "Purple", + "prevo": "goomy", + "evos": [ + "goodra" + ], + "evoLevel": 40, + "eggGroups": [ + "Dragon" + ] + }, + "goodra": { + "num": 706, + "species": "Goodra", + "types": [ + "Dragon" + ], + "baseStats": { + "hp": 90, + "atk": 100, + "def": 70, + "spa": 110, + "spd": 150, + "spe": 80 + }, + "abilities": { + "0": "Sap Sipper", + "1": "Hydration", + "H": "Gooey" + }, + "heightm": 2, + "weightkg": 150.5, + "color": "Purple", + "prevo": "sliggoo", + "evoLevel": 50, + "eggGroups": [ + "Dragon" + ] + }, + "klefki": { + "num": 707, + "species": "Klefki", + "types": [ + "Steel", + "Fairy" + ], + "baseStats": { + "hp": 57, + "atk": 80, + "def": 91, + "spa": 80, + "spd": 87, + "spe": 75 + }, + "abilities": { + "0": "Prankster", + "H": "Magician" + }, + "heightm": 0.2, + "weightkg": 3, + "color": "Gray", + "eggGroups": [ + "Mineral" + ] + }, + "phantump": { + "num": 708, + "species": "Phantump", + "types": [ + "Ghost", + "Grass" + ], + "baseStats": { + "hp": 43, + "atk": 70, + "def": 48, + "spa": 50, + "spd": 60, + "spe": 38 + }, + "abilities": { + "0": "Natural Cure", + "1": "Frisk", + "H": "Harvest" + }, + "heightm": 0.4, + "weightkg": 7, + "color": "Brown", + "evos": [ + "trevenant" + ], + "eggGroups": [ + "Grass", + "Amorphous" + ] + }, + "trevenant": { + "num": 709, + "species": "Trevenant", + "types": [ + "Ghost", + "Grass" + ], + "baseStats": { + "hp": 85, + "atk": 110, + "def": 76, + "spa": 65, + "spd": 82, + "spe": 56 + }, + "abilities": { + "0": "Natural Cure", + "1": "Frisk", + "H": "Harvest" + }, + "heightm": 1.5, + "weightkg": 71, + "color": "Brown", + "prevo": "phantump", + "evoLevel": 1, + "eggGroups": [ + "Grass", + "Amorphous" + ] + }, + "pumpkaboo": { + "num": 710, + "species": "Pumpkaboo", + "baseForme": "Average", + "types": [ + "Ghost", + "Grass" + ], + "baseStats": { + "hp": 49, + "atk": 66, + "def": 70, + "spa": 44, + "spd": 55, + "spe": 51 + }, + "abilities": { + "0": "Pickup", + "1": "Frisk", + "H": "Insomnia" + }, + "heightm": 0.4, + "weightkg": 5, + "color": "Brown", + "evos": [ + "gourgeist" + ], + "eggGroups": [ + "Amorphous" + ], + "otherFormes": [ + "pumpkaboosmall", + "pumpkaboolarge", + "pumpkaboosuper" + ] + }, + "pumpkaboosmall": { + "num": 710, + "species": "Pumpkaboo-Small", + "baseSpecies": "Pumpkaboo", + "forme": "Small", + "formeLetter": "S", + "types": [ + "Ghost", + "Grass" + ], + "baseStats": { + "hp": 44, + "atk": 66, + "def": 70, + "spa": 44, + "spd": 55, + "spe": 56 + }, + "abilities": { + "0": "Pickup", + "1": "Frisk", + "H": "Insomnia" + }, + "heightm": 0.3, + "weightkg": 3.5, + "color": "Brown", + "evos": [ + "gourgeistsmall" + ], + "eggGroups": [ + "Amorphous" + ] + }, + "pumpkaboolarge": { + "num": 710, + "species": "Pumpkaboo-Large", + "baseSpecies": "Pumpkaboo", + "forme": "Large", + "formeLetter": "L", + "types": [ + "Ghost", + "Grass" + ], + "baseStats": { + "hp": 54, + "atk": 66, + "def": 70, + "spa": 44, + "spd": 55, + "spe": 46 + }, + "abilities": { + "0": "Pickup", + "1": "Frisk", + "H": "Insomnia" + }, + "heightm": 0.5, + "weightkg": 7.5, + "color": "Brown", + "evos": [ + "gourgeistlarge" + ], + "eggGroups": [ + "Amorphous" + ] + }, + "pumpkaboosuper": { + "num": 710, + "species": "Pumpkaboo-Super", + "baseSpecies": "Pumpkaboo", + "forme": "Super", + "formeLetter": "S", + "types": [ + "Ghost", + "Grass" + ], + "baseStats": { + "hp": 59, + "atk": 66, + "def": 70, + "spa": 44, + "spd": 55, + "spe": 41 + }, + "abilities": { + "0": "Pickup", + "1": "Frisk", + "H": "Insomnia" + }, + "heightm": 0.8, + "weightkg": 15, + "color": "Brown", + "evos": [ + "gourgeistsuper" + ], + "eggGroups": [ + "Amorphous" + ] + }, + "gourgeist": { + "num": 711, + "species": "Gourgeist", + "baseForme": "Average", + "types": [ + "Ghost", + "Grass" + ], + "baseStats": { + "hp": 65, + "atk": 90, + "def": 122, + "spa": 58, + "spd": 75, + "spe": 84 + }, + "abilities": { + "0": "Pickup", + "1": "Frisk", + "H": "Insomnia" + }, + "heightm": 0.9, + "weightkg": 12.5, + "color": "Brown", + "prevo": "pumpkaboo", + "evoLevel": 1, + "eggGroups": [ + "Amorphous" + ], + "otherFormes": [ + "gourgeistsmall", + "gourgeistlarge", + "gourgeistsuper" + ] + }, + "gourgeistsmall": { + "num": 711, + "species": "Gourgeist-Small", + "baseSpecies": "Gourgeist", + "forme": "Small", + "formeLetter": "S", + "types": [ + "Ghost", + "Grass" + ], + "baseStats": { + "hp": 55, + "atk": 85, + "def": 122, + "spa": 58, + "spd": 75, + "spe": 99 + }, + "abilities": { + "0": "Pickup", + "1": "Frisk", + "H": "Insomnia" + }, + "heightm": 0.7, + "weightkg": 9.5, + "color": "Brown", + "prevo": "pumpkaboosmall", + "evoLevel": 1, + "eggGroups": [ + "Amorphous" + ] + }, + "gourgeistlarge": { + "num": 711, + "species": "Gourgeist-Large", + "baseSpecies": "Gourgeist", + "forme": "Large", + "formeLetter": "L", + "types": [ + "Ghost", + "Grass" + ], + "baseStats": { + "hp": 75, + "atk": 95, + "def": 122, + "spa": 58, + "spd": 75, + "spe": 69 + }, + "abilities": { + "0": "Pickup", + "1": "Frisk", + "H": "Insomnia" + }, + "heightm": 1.1, + "weightkg": 14, + "color": "Brown", + "prevo": "pumpkaboolarge", + "evoLevel": 1, + "eggGroups": [ + "Amorphous" + ] + }, + "gourgeistsuper": { + "num": 711, + "species": "Gourgeist-Super", + "baseSpecies": "Gourgeist", + "forme": "Super", + "formeLetter": "S", + "types": [ + "Ghost", + "Grass" + ], + "baseStats": { + "hp": 85, + "atk": 100, + "def": 122, + "spa": 58, + "spd": 75, + "spe": 54 + }, + "abilities": { + "0": "Pickup", + "1": "Frisk", + "H": "Insomnia" + }, + "heightm": 1.7, + "weightkg": 39, + "color": "Brown", + "prevo": "pumpkaboosuper", + "evoLevel": 1, + "eggGroups": [ + "Amorphous" + ] + }, + "bergmite": { + "num": 712, + "species": "Bergmite", + "types": [ + "Ice" + ], + "baseStats": { + "hp": 55, + "atk": 69, + "def": 85, + "spa": 32, + "spd": 35, + "spe": 28 + }, + "abilities": { + "0": "Own Tempo", + "1": "Ice Body", + "H": "Sturdy" + }, + "heightm": 1, + "weightkg": 99.5, + "color": "Blue", + "evos": [ + "avalugg" + ], + "eggGroups": [ + "Monster" + ] + }, + "avalugg": { + "num": 713, + "species": "Avalugg", + "types": [ + "Ice" + ], + "baseStats": { + "hp": 95, + "atk": 117, + "def": 184, + "spa": 44, + "spd": 46, + "spe": 28 + }, + "abilities": { + "0": "Own Tempo", + "1": "Ice Body", + "H": "Sturdy" + }, + "heightm": 2, + "weightkg": 505, + "color": "Blue", + "prevo": "bergmite", + "evoLevel": 37, + "eggGroups": [ + "Monster" + ] + }, + "noibat": { + "num": 714, + "species": "Noibat", + "types": [ + "Flying", + "Dragon" + ], + "baseStats": { + "hp": 40, + "atk": 30, + "def": 35, + "spa": 45, + "spd": 40, + "spe": 55 + }, + "abilities": { + "0": "Frisk", + "1": "Infiltrator", + "H": "Telepathy" + }, + "heightm": 0.5, + "weightkg": 8, + "color": "Purple", + "evos": [ + "noivern" + ], + "eggGroups": [ + "Flying" + ] + }, + "noivern": { + "num": 715, + "species": "Noivern", + "types": [ + "Flying", + "Dragon" + ], + "baseStats": { + "hp": 85, + "atk": 70, + "def": 80, + "spa": 97, + "spd": 80, + "spe": 123 + }, + "abilities": { + "0": "Frisk", + "1": "Infiltrator", + "H": "Telepathy" + }, + "heightm": 1.5, + "weightkg": 85, + "color": "Purple", + "prevo": "noibat", + "evoLevel": 48, + "eggGroups": [ + "Flying" + ] + }, + "xerneas": { + "num": 716, + "species": "Xerneas", + "types": [ + "Fairy" + ], + "gender": "N", + "baseStats": { + "hp": 126, + "atk": 131, + "def": 95, + "spa": 131, + "spd": 98, + "spe": 99 + }, + "abilities": { + "0": "Fairy Aura" + }, + "heightm": 3, + "weightkg": 215, + "color": "Blue", + "eggGroups": [ + "Undiscovered" + ] + }, + "yveltal": { + "num": 717, + "species": "Yveltal", + "types": [ + "Dark", + "Flying" + ], + "gender": "N", + "baseStats": { + "hp": 126, + "atk": 131, + "def": 95, + "spa": 131, + "spd": 98, + "spe": 99 + }, + "abilities": { + "0": "Dark Aura" + }, + "heightm": 5.8, + "weightkg": 203, + "color": "Red", + "eggGroups": [ + "Undiscovered" + ] + }, + "zygarde": { + "num": 718, + "species": "Zygarde", + "types": [ + "Dragon", + "Ground" + ], + "gender": "N", + "baseStats": { + "hp": 108, + "atk": 100, + "def": 121, + "spa": 81, + "spd": 95, + "spe": 95 + }, + "abilities": { + "0": "Aura Break" + }, + "heightm": 5, + "weightkg": 305, + "color": "Green", + "eggGroups": [ + "Undiscovered" + ] + }, + "diancie": { + "num": 719, + "species": "Diancie", + "types": [ + "Rock", + "Fairy" + ], + "gender": "N", + "baseStats": { + "hp": 50, + "atk": 100, + "def": 150, + "spa": 100, + "spd": 150, + "spe": 50 + }, + "abilities": { + "0": "Clear Body" + }, + "heightm": 0.7, + "weightkg": 8.8, + "color": "Pink", + "eggGroups": [ + "Undiscovered" + ], + "otherFormes": [ + "dianciemega" + ] + }, + "dianciemega": { + "num": 719, + "species": "Diancie-Mega", + "baseSpecies": "Diancie", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Rock", + "Fairy" + ], + "gender": "N", + "baseStats": { + "hp": 50, + "atk": 160, + "def": 110, + "spa": 160, + "spd": 110, + "spe": 110 + }, + "abilities": { + "0": "Magic Bounce" + }, + "heightm": 1.1, + "weightkg": 27.8, + "color": "Pink", + "eggGroups": [ + "Undiscovered" + ] + }, + "hoopa": { + "num": 720, + "species": "Hoopa", + "baseForme": "Confined", + "types": [ + "Psychic", + "Ghost" + ], + "gender": "N", + "baseStats": { + "hp": 80, + "atk": 110, + "def": 60, + "spa": 150, + "spd": 130, + "spe": 70 + }, + "abilities": { + "0": "Magician" + }, + "heightm": 0.5, + "weightkg": 9, + "color": "Purple", + "eggGroups": [ + "Undiscovered" + ], + "otherFormes": [ + "hoopaunbound" + ] + }, + "hoopaunbound": { + "num": 720, + "species": "Hoopa-Unbound", + "baseSpecies": "Hoopa", + "forme": "Unbound", + "formeLetter": "U", + "types": [ + "Psychic", + "Dark" + ], + "gender": "N", + "baseStats": { + "hp": 80, + "atk": 160, + "def": 60, + "spa": 170, + "spd": 130, + "spe": 80 + }, + "abilities": { + "0": "Magician" + }, + "heightm": 6.5, + "weightkg": 490, + "color": "Purple", + "eggGroups": [ + "Undiscovered" + ] + }, + "volcanion": { + "num": 721, + "species": "Volcanion", + "types": [ + "Fire", + "Water" + ], + "gender": "N", + "baseStats": { + "hp": 80, + "atk": 110, + "def": 120, + "spa": 130, + "spd": 90, + "spe": 70 + }, + "abilities": { + "0": "Water Absorb" + }, + "heightm": 1.7, + "weightkg": 195, + "color": "Brown", + "eggGroups": [ + "Undiscovered" + ] + }, + "missingno": { + "num": 0, + "species": "Missingno.", + "types": [ + "Bird", + "Normal" + ], + "baseStats": { + "hp": 33, + "atk": 136, + "def": 0, + "spa": 6, + "spd": 6, + "spe": 29 + }, + "abilities": { + "0": "", + "H": "" + }, + "heightm": 3, + "weightkg": 1590.8, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "tomohawk": { + "num": -1, + "species": "Tomohawk", + "types": [ + "Flying", + "Fighting" + ], + "baseStats": { + "hp": 105, + "atk": 60, + "def": 90, + "spa": 115, + "spd": 80, + "spe": 85 + }, + "abilities": { + "0": "Intimidate", + "1": "Prankster", + "H": "Justified" + }, + "heightm": 1.27, + "weightkg": 37.2, + "color": "Red", + "eggGroups": [ + "Field", + "Flying" + ] + }, + "necturna": { + "num": -2, + "species": "Necturna", + "types": [ + "Grass", + "Ghost" + ], + "gender": "F", + "baseStats": { + "hp": 64, + "atk": 120, + "def": 100, + "spa": 85, + "spd": 120, + "spe": 81 + }, + "abilities": { + "0": "Forewarn", + "H": "Telepathy" + }, + "heightm": 1.65, + "weightkg": 49.6, + "color": "Black", + "eggGroups": [ + "Grass", + "Field" + ] + }, + "mollux": { + "num": -3, + "species": "Mollux", + "types": [ + "Fire", + "Poison" + ], + "baseStats": { + "hp": 95, + "atk": 45, + "def": 83, + "spa": 131, + "spd": 105, + "spe": 76 + }, + "abilities": { + "0": "Dry Skin", + "H": "Illuminate" + }, + "heightm": 1.2, + "weightkg": 41, + "color": "Pink", + "eggGroups": [ + "Fairy", + "Field" + ] + }, + "aurumoth": { + "num": -4, + "species": "Aurumoth", + "types": [ + "Bug", + "Psychic" + ], + "baseStats": { + "hp": 110, + "atk": 120, + "def": 99, + "spa": 117, + "spd": 60, + "spe": 94 + }, + "abilities": { + "0": "Weak Armor", + "1": "No Guard", + "H": "Illusion" + }, + "heightm": 2.1, + "weightkg": 193, + "color": "Purple", + "eggGroups": [ + "Bug" + ] + }, + "malaconda": { + "num": -5, + "species": "Malaconda", + "types": [ + "Dark", + "Grass" + ], + "baseStats": { + "hp": 115, + "atk": 100, + "def": 60, + "spa": 40, + "spd": 130, + "spe": 55 + }, + "abilities": { + "0": "Harvest", + "1": "Infiltrator" + }, + "heightm": 5.5, + "weightkg": 108.8, + "color": "Brown", + "eggGroups": [ + "Grass", + "Dragon" + ] + }, + "cawmodore": { + "num": -6, + "species": "Cawmodore", + "types": [ + "Steel", + "Flying" + ], + "baseStats": { + "hp": 50, + "atk": 92, + "def": 130, + "spa": 65, + "spd": 75, + "spe": 118 + }, + "abilities": { + "0": "Intimidate", + "1": "Volt Absorb", + "H": "Big Pecks" + }, + "heightm": 1.7, + "weightkg": 37, + "color": "Black", + "eggGroups": [ + "Flying" + ] + }, + "volkraken": { + "num": -7, + "species": "Volkraken", + "types": [ + "Water", + "Fire" + ], + "baseStats": { + "hp": 100, + "atk": 45, + "def": 80, + "spa": 135, + "spd": 100, + "spe": 95 + }, + "abilities": { + "0": "Analytic", + "1": "Infiltrator", + "H": "Pressure" + }, + "heightm": 1.3, + "weightkg": 44.5, + "color": "Red", + "eggGroups": [ + "Water 1", + "Water 2" + ] + }, + "plasmanta": { + "num": -8, + "species": "Plasmanta", + "types": [ + "Electric", + "Poison" + ], + "baseStats": { + "hp": 60, + "atk": 57, + "def": 119, + "spa": 131, + "spd": 98, + "spe": 100 + }, + "abilities": { + "0": "Storm Drain", + "1": "Vital Spirit", + "H": "Telepathy" + }, + "heightm": 7, + "weightkg": 460, + "color": "Purple", + "eggGroups": [ + "Water 1", + "Water 2" + ] + }, + "naviathan": { + "num": -9, + "species": "Naviathan", + "types": [ + "Water", + "Steel" + ], + "baseStats": { + "hp": 103, + "atk": 110, + "def": 90, + "spa": 95, + "spd": 65, + "spe": 97 + }, + "abilities": { + "0": "Water Veil", + "1": "Heatproof", + "H": "Light Metal" + }, + "heightm": 3, + "weightkg": 510, + "color": "Gray", + "eggGroups": [ + "Water 1", + "Field" + ] + }, + "crucibelle": { + "num": -10, + "species": "Crucibelle", + "types": [ + "Rock", + "Poison" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 106, + "atk": 105, + "def": 65, + "spa": 75, + "spd": 85, + "spe": 104 + }, + "abilities": { + "0": "Regenerator", + "1": "Mold Breaker", + "H": "Liquid Ooze" + }, + "heightm": 1.3, + "weightkg": 23.6, + "color": "Purple", + "eggGroups": [ + "Amorphous", + "Mineral" + ], + "otherFormes": [ + "crucibellemega" + ] + }, + "crucibellemega": { + "num": -10, + "species": "Crucibelle-Mega", + "baseSpecies": "Crucibelle", + "forme": "Mega", + "formeLetter": "M", + "types": [ + "Rock", + "Poison" + ], + "genderRatio": { + "M": 0.25, + "F": 0.75 + }, + "baseStats": { + "hp": 106, + "atk": 135, + "def": 75, + "spa": 85, + "spd": 125, + "spe": 114 + }, + "abilities": { + "0": "Magic Guard" + }, + "heightm": 1.4, + "weightkg": 22.5, + "color": "Purple", + "eggGroups": [ + "Amorphous", + "Mineral" + ] + }, + "syclant": { + "num": -51, + "species": "Syclant", + "types": [ + "Ice", + "Bug" + ], + "baseStats": { + "hp": 70, + "atk": 116, + "def": 70, + "spa": 114, + "spd": 64, + "spe": 121 + }, + "abilities": { + "0": "Compound Eyes", + "1": "Mountaineer" + }, + "heightm": 1.7, + "weightkg": 52, + "color": "Blue", + "eggGroups": [ + "Bug" + ] + }, + "revenankh": { + "num": -52, + "species": "Revenankh", + "types": [ + "Ghost", + "Fighting" + ], + "baseStats": { + "hp": 90, + "atk": 105, + "def": 90, + "spa": 65, + "spd": 110, + "spe": 65 + }, + "abilities": { + "0": "Shed Skin", + "1": "Air Lock" + }, + "heightm": 1.8, + "weightkg": 44, + "color": "White", + "eggGroups": [ + "Amorphous", + "Human-Like" + ] + }, + "pyroak": { + "num": -53, + "species": "Pyroak", + "types": [ + "Fire", + "Grass" + ], + "baseStats": { + "hp": 120, + "atk": 70, + "def": 105, + "spa": 95, + "spd": 90, + "spe": 60 + }, + "abilities": { + "0": "Rock Head", + "1": "Battle Armor" + }, + "heightm": 2.1, + "weightkg": 168, + "color": "Brown", + "eggGroups": [ + "Monster", + "Dragon" + ] + }, + "fidgit": { + "num": -54, + "species": "Fidgit", + "types": [ + "Poison", + "Ground" + ], + "baseStats": { + "hp": 95, + "atk": 76, + "def": 109, + "spa": 90, + "spd": 80, + "spe": 105 + }, + "abilities": { + "0": "Persistent", + "1": "Vital Spirit" + }, + "heightm": 0.9, + "weightkg": 53, + "color": "Purple", + "eggGroups": [ + "Field" + ] + }, + "stratagem": { + "num": -55, + "species": "Stratagem", + "types": [ + "Rock" + ], + "gender": "N", + "baseStats": { + "hp": 90, + "atk": 60, + "def": 65, + "spa": 120, + "spd": 70, + "spe": 130 + }, + "abilities": { + "0": "Levitate", + "1": "Technician" + }, + "heightm": 0.9, + "weightkg": 45, + "color": "Gray", + "eggGroups": [ + "Undiscovered" + ] + }, + "arghonaut": { + "num": -56, + "species": "Arghonaut", + "types": [ + "Water", + "Fighting" + ], + "baseStats": { + "hp": 105, + "atk": 110, + "def": 95, + "spa": 70, + "spd": 100, + "spe": 75 + }, + "abilities": { + "0": "Unaware" + }, + "heightm": 1.7, + "weightkg": 151, + "color": "Green", + "eggGroups": [ + "Water 1", + "Water 3" + ] + }, + "kitsunoh": { + "num": -57, + "species": "Kitsunoh", + "types": [ + "Steel", + "Ghost" + ], + "baseStats": { + "hp": 80, + "atk": 103, + "def": 85, + "spa": 55, + "spd": 80, + "spe": 110 + }, + "abilities": { + "0": "Frisk", + "1": "Limber" + }, + "heightm": 1.1, + "weightkg": 51, + "color": "Gray", + "eggGroups": [ + "Field" + ] + }, + "cyclohm": { + "num": -58, + "species": "Cyclohm", + "types": [ + "Electric", + "Dragon" + ], + "baseStats": { + "hp": 108, + "atk": 60, + "def": 118, + "spa": 112, + "spd": 70, + "spe": 80 + }, + "abilities": { + "0": "Shield Dust", + "1": "Static" + }, + "heightm": 1.6, + "weightkg": 59, + "color": "Yellow", + "eggGroups": [ + "Dragon", + "Monster" + ] + }, + "colossoil": { + "num": -59, + "species": "Colossoil", + "types": [ + "Dark", + "Ground" + ], + "baseStats": { + "hp": 133, + "atk": 122, + "def": 72, + "spa": 71, + "spd": 72, + "spe": 95 + }, + "abilities": { + "0": "Rebound", + "1": "Guts" + }, + "heightm": 2.6, + "weightkg": 683.6, + "color": "Brown", + "eggGroups": [ + "Water 2", + "Field" + ] + }, + "krilowatt": { + "num": -60, + "species": "Krilowatt", + "types": [ + "Electric", + "Water" + ], + "baseStats": { + "hp": 151, + "atk": 84, + "def": 73, + "spa": 83, + "spd": 74, + "spe": 105 + }, + "abilities": { + "0": "Trace", + "1": "Magic Guard" + }, + "heightm": 0.7, + "weightkg": 10.6, + "color": "Red", + "eggGroups": [ + "Water 1", + "Fairy" + ] + }, + "voodoom": { + "num": -61, + "species": "Voodoom", + "types": [ + "Fighting", + "Dark" + ], + "baseStats": { + "hp": 90, + "atk": 85, + "def": 80, + "spa": 105, + "spd": 80, + "spe": 110 + }, + "abilities": { + "0": "Volt Absorb", + "1": "Lightning Rod" + }, + "heightm": 2, + "weightkg": 75.5, + "color": "Brown", + "eggGroups": [ + "Human-Like", + "Ground" + ] + } +} \ No newline at end of file diff --git a/src/NadekoBot/data/triviaquestions.json b/src/NadekoBot/data/questions.json similarity index 100% rename from src/NadekoBot/data/triviaquestions.json rename to src/NadekoBot/data/questions.json diff --git a/src/NadekoBot/data/wowjokes.json b/src/NadekoBot/data/wowjokes.json new file mode 100644 index 00000000..464b56d6 --- /dev/null +++ b/src/NadekoBot/data/wowjokes.json @@ -0,0 +1,302 @@ +[ + { + "Question": "What do you call a gnome priest", + "Answer": "A compact disc" + }, + { + "Question": "Why does the best raiding guild smell so bad?", + "Answer": "because they never wipe" + }, + { + "Question": "Why are boomkins neither overpowered or underpowered?", + "Answer": "Because they're Balanced" + }, + { + "Question": "Who is George of the Jungle's other brother?", + "Answer": "Mark of the Wild." + }, + { + "Question": "What do you call a masturbating Tauren?", + "Answer": "Beef Stroganoff." + }, + { + "Question": "What's a rogue's favourite drink?", + "Answer": "Subtle Tea" + }, + { + "Question": "Classic: What to noobs and Rogues have in common?", + "Answer": "They both pick locks!" + }, + { + "Question": "What did Gul'dan do when he tripped?", + "Answer": "He fel" + }, + { + "Question": "Why didn't the warrior cross the road?", + "Answer": "No Path Available." + }, + { + "Question": "What are the chances we have gotten the last content patch before a new expansion?", + "Answer": "Slim Tanaan" + }, + { + "Question": "A trolls greeting is usually \"Eyy mon\" but what is a goblins?", + "Answer": "\"\"Mon-eyy\"\n\n^^^^^I'm ^^^^^so ^^^^^sorry..." + }, + { + "Question": "What musician is from ICC?", + "Answer": "What musician is from ICC?\n\nAn Arthas formally known as Prince." + }, + { + "Question": "How do you know if someone's been playing since Vanilla?", + "Answer": "Don't worry, they'll tell you" + }, + { + "Question": "What happens when a demon forgets his sunscreen?", + "Answer": "He ends up with a Burning Region" + }, + { + "Question": "Why are raid guilds recruiting rogues for the illidan fight?", + "Answer": "Because they are the only ones that have the required [preparation](http://www.wowhead.com/spell=14185/preparation) " + }, + { + "Question": "How does Naxxramas fly?", + "Answer": "with it's four wings" + }, + { + "Question": "Why is the Cenarion Circle neutral?", + "Answer": "Circles have no sides." + }, + { + "Question": "Why are rogues the best bar tenders?", + "Answer": "Because they always have cheap shots " + }, + { + "Question": "What does Gul'dan like on his hotdogs?", + "Answer": "EVERYTHIIING" + }, + { + "Question": "Why did a Felhunter win the spelling competition?", + "Answer": "Nobody else could Spell Lock." + }, + { + "Question": "What do you call it when Illidan teaches demon hunters in Legion?", + "Answer": "a 'demon-stration\"" + }, + { + "Question": "Why can't Paladins work out at Planet Fitness?", + "Answer": "Because it's a Judgement-free zone. " + }, + { + "Question": "Why didn't the rogue like his dagger upgrade?", + "Answer": "He wasn't a fan of knives." + }, + { + "Question": "What do you call a Gilnean church?", + "Answer": "Worgenized religion" + }, + { + "Question": "Why were night elves chosen to be Azeroth's first astronauts?", + "Answer": "Because they know the moon well." + }, + { + "Question": "Why are gnomes unable to be paladins?", + "Answer": "Because they cannot reach the Light." + }, + { + "Question": "Did you hear about the resto druid who never plays guardian?", + "Answer": "You could say he's all bark, no bite." + }, + { + "Question": "What's a dwarf rogue's favorite car?", + "Answer": "Dodge Ram" + }, + { + "Question": "Why can you only wear 1 shoe in the Emerald nightmare?", + "Answer": "Because they'll steal Ursoc." + }, + { + "Question": "Why is it impossible for a paladin and a rogue to make a baby?", + "Answer": "Because paladins use protection and rogues do it from behind.\n\n\nTaken from Sodapoppin's stream on December 1st. " + }, + { + "Question": "Do you know how Illidan hurt his knee?", + "Answer": "(this one came through in a GM ticket response today)\n\nDo you know how Illidan hurt his knee?\nIt's simple really...\nHe fel." + }, + { + "Question": "Icecrown Citadel was a pretty cool raid.", + "Answer": "Even thinking about it gives me the chills." + }, + { + "Question": "Why do Blood Elves tan so quickly?", + "Answer": "They use the Sun Well." + }, + { + "Question": "What is Bolvar doing lately?", + "Answer": "Just chillin." + }, + { + "Question": "What do you call 4 Mogu rolling down a hill?", + "Answer": "The Rolling Stones." + }, + { + "Question": "What is Taran Zhu's favorite cooking utensil?", + "Answer": "The Shado-Pan" + }, + { + "Question": "What do you call a vapid celebrity female night elf?", + "Answer": "Kim Darnassian" + }, + { + "Question": "Warlords of Draenor was an emotional expansion.", + "Answer": "Even the raids were in tiers." + }, + { + "Question": "Why do hunters never get married?", + "Answer": "Because they're always dis-engaging." + }, + { + "Question": "What do you call a kind warlock", + "Answer": "Affection lock" + }, + { + "Question": "Which dragon has the dream job?", + "Answer": "Ysera" + }, + { + "Question": "Healers are like artists", + "Answer": "No one appreciates them until they are dead" + }, + { + "Question": "What did Illidan say when one of his group mates' gear was broken?", + "Answer": "\"YOU ARE NOT REPAIRED!\"" + }, + { + "Question": "Why do bars hate rogues?", + "Answer": "Because they only want cheap shots." + }, + { + "Question": "What did the game tell the hunter when he dinged 40?", + "Answer": "You've got mail." + }, + { + "Question": "What do you call a Blood Elf who eats his vegetables?", + "Answer": "Kale'Thas" + }, + { + "Question": "Where do murlocs store their gold and treasure?", + "Answer": "At the River Bank!" + }, + { + "Question": "Why did the undead smell bad?", + "Answer": "He had no nose." + }, + { + "Question": "How did the Rogue one-shot Illidan?", + "Answer": "By using Preparation." + }, + { + "Question": "What's the first thing Illidan sees when he wakes up?", + "Answer": "NOTHING" + }, + { + "Question": "Why are all paladins so clean?", + "Answer": "...Because they are always taking Bubble baths!" + }, + { + "Question": "did you hear about the monk serial killer", + "Answer": "the murders were pre-meditated" + }, + { + "Question": "How much does a serving of Pandaren Cuisine weigh?", + "Answer": "About wonton." + }, + { + "Question": "What injury did Gul'Dan get from playing Tennis.", + "Answer": "Twisted Nethers." + }, + { + "Question": "A patch day joke...", + "Answer": "" + }, + { + "Question": "Yo mamma so fat....", + "Answer": "I tried to shadowstep her and I got a loading screen!" + }, + { + "Question": "What do you call it when the Argent Tournament catches on fire?", + "Answer": "Burning Crusade." + }, + { + "Question": "Why can you never take a good photo of a hunter?", + "Answer": "They are always out of focus" + }, + { + "Question": "How do impoverished Warriors get their weapons?", + "Answer": "They Rend-to-own." + }, + { + "Question": "What is Arthas' favorite camping snack?", + "Answer": "Frostsmores" + }, + { + "Question": "Why are warlocks faster after drinking vodka?", + "Answer": "Because it gives them a Burning Rush!" + }, + { + "Question": "How did the druid catch a fish?", + "Answer": "With his bear hands" + }, + { + "Question": "I really want the new Grove Warden moose mount...", + "Answer": "...you could say, I consider it a moost-have." + }, + { + "Question": "Heard about the time Millhouse Manastorm went to Blackrock Foundry to visit Oregorger?", + "Answer": "Me neither, but I've been assured there will be gnome ore puns." + }, + { + "Question": "So my new maid is a rogue...", + "Answer": "... And she keeps on using [Vanish](http://www.brockaghltd.com/wp/wp-content/uploads/2014/11/31900_4.1405683094.jpg) even when I told her I prefer [Resolve](http://ecx.images-amazon.com/images/I/81a1jTSQzbL._SY355_.jpg). I'm so fed up with her!" + }, + { + "Question": "What do fire elementals eat for breakfast?", + "Answer": "Ragnar-Os" + }, + { + "Question": "Why do mages share cane's?", + "Answer": "Because it's not his cane, it's R Cane!" + }, + { + "Question": "Why do sneaky rogues prefer leather armor?", + "Answer": "because it's made of hide" + }, + { + "Question": "What's it called when an animal spirit crashes your UI?", + "Answer": "A LOA error." + }, + { + "Question": "Man the 90s take so long", + "Answer": "" + }, + { + "Question": "What is Shadow-Lord Iskar's problem?", + "Answer": "Every time we get to him in Hellfire Citadel, he always seems to be in a Fowl mood." + }, + { + "Question": "Why are hunters bad at photography?", + "Answer": "They have no focus." + }, + { + "Question": "Why are paladins good at photography?", + "Answer": "They use the Light" + }, + { + "Question": "How did the paladins get clean?", + "Answer": "They had a bubble bath!" + }, + { + "Question": "You need to be careful of the trees in this game.", + "Answer": "Some of them are shady." + } +] \ No newline at end of file From 895727d0529e2d85a1f25f27a89682accd1d8d47 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sat, 8 Oct 2016 04:25:12 +0200 Subject: [PATCH 42/74] Work on custom reactions, fixed -modules --- .../CustomReactions/CustomReactions.cs | 136 ++++++++++++++++++ src/NadekoBot/Modules/Help/Help.cs | 24 ---- .../Services/Database/IUnitOfWork.cs | 6 + .../Database/Models/CustomReaction.cs | 26 ++++ .../Services/Database/NadekoContext.cs | 4 +- .../Repositories/ICustomReactionRepository.cs | 14 ++ .../Impl/CustomReactionRepository.cs | 22 +++ src/NadekoBot/Services/Database/UnitOfWork.cs | 5 +- src/NadekoBot/Services/DbHandler.cs | 4 +- src/NadekoBot/Services/Impl/BotCredentials.cs | 6 +- 10 files changed, 218 insertions(+), 29 deletions(-) create mode 100644 src/NadekoBot/Modules/CustomReactions/CustomReactions.cs create mode 100644 src/NadekoBot/Services/Database/Models/CustomReaction.cs create mode 100644 src/NadekoBot/Services/Database/Repositories/ICustomReactionRepository.cs create mode 100644 src/NadekoBot/Services/Database/Repositories/Impl/CustomReactionRepository.cs diff --git a/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs b/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs new file mode 100644 index 00000000..b50c9908 --- /dev/null +++ b/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs @@ -0,0 +1,136 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Discord.Commands; +using NadekoBot.Services; +using NadekoBot.Attributes; +using NadekoBot.Services.Database; +using System.Collections.Concurrent; +using NadekoBot.Services.Database.Models; +using Discord; +using NadekoBot.Extensions; + +namespace NadekoBot.Modules.CustomReactions +{ + [NadekoModule("CustomReactions",".")] + public class CustomReactions : DiscordModule + { + public static HashSet GlobalReactions { get; } = new HashSet(); + public static ConcurrentDictionary> AllReactions { get; } = new ConcurrentDictionary>(); + static CustomReactions() + { + using (var uow = DbHandler.UnitOfWork()) + { + var list = uow.CustomReactions.GetList(); + AllReactions = new ConcurrentDictionary>(list.Where(g => g.GuildId != null).GroupBy(k => k.GuildId.Value).ToDictionary(g => g.Key, g => new HashSet(g))); + GlobalReactions = new HashSet(list.Where(g => g.GuildId == null)); + } + } + public CustomReactions(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client) + { + } + + [NadekoCommand, Usage, Description, Aliases] + [RequirePermission(GuildPermission.Administrator)] + public async Task AddCustReact(IUserMessage imsg, string key, [Remainder] string message) + { + var channel = imsg.Channel as ITextChannel; + if (string.IsNullOrWhiteSpace(message) || string.IsNullOrWhiteSpace(key)) + return; + + if ((channel == null && NadekoBot.Credentials.IsOwner(imsg.Author)) || (channel != null && ((IGuildUser)imsg.Author).GuildPermissions.Administrator)) + { + try { await channel.SendMessageAsync("Insufficient permissions. Requires Bot ownership for global custom reactions, and Administrator for guild custom reactions."); } catch { } + return; + } + + var cr = new CustomReaction() + { + GuildId = channel?.Guild.Id, + IsRegex = false, + Trigger = key.ToLowerInvariant(), + Response = message, + }; + + using (var uow = DbHandler.UnitOfWork()) + { + uow.CustomReactions.Add(cr); + + await uow.CompleteAsync().ConfigureAwait(false); + } + + if (channel == null) + { + GlobalReactions.Add(cr); + } + else + { + var reactions = AllReactions.GetOrAdd(channel.Guild.Id, new HashSet()); + reactions.Add(cr); + } + + await channel.SendMessageAsync($"`Added new custom reaction:`\n\t`Trigger:` {key}\n\t`Response:` {message}").ConfigureAwait(false); + } + + [NadekoCommand, Usage, Description, Aliases] + public async Task ListCustReact(IUserMessage imsg,int page = 1) + { + var channel = imsg.Channel as ITextChannel; + + if (page < 1 || page > 1000) + return; + HashSet customReactions; + if (channel == null) + customReactions = GlobalReactions; + else + customReactions = AllReactions.GetOrAdd(channel.Guild.Id, new HashSet()); + + if (customReactions == null || !customReactions.Any()) + await channel.SendMessageAsync("`No custom reactions found`").ConfigureAwait(false); + else + await channel.SendTableAsync(customReactions.OrderBy(cr => cr.Trigger).Skip((page - 1) * 10).Take(10), c => c.ToString()) + .ConfigureAwait(false); + } + + [NadekoCommand, Usage, Description, Aliases] + public async Task DelCustReact(IUserMessage imsg, int id) + { + var channel = imsg.Channel as ITextChannel; + + if ((channel == null && NadekoBot.Credentials.IsOwner(imsg.Author)) || (channel != null && ((IGuildUser)imsg.Author).GuildPermissions.Administrator)) + { + try { await channel.SendMessageAsync("Insufficient permissions. Requires Bot ownership for global custom reactions, and Administrator for guild custom reactions."); } catch { } + return; + } + + var success = false; + CustomReaction toDelete; + using (var uow = DbHandler.UnitOfWork()) + { + toDelete = uow.CustomReactions.Get(id); + if (toDelete == null) //not found + return; + + if (toDelete.GuildId == null && channel == null) + { + uow.CustomReactions.Remove(toDelete); + success = true; + } + else if (toDelete.GuildId != null && channel.Guild.Id == toDelete.GuildId) + { + uow.CustomReactions.Remove(toDelete); + success = true; + } + if(success) + await uow.CompleteAsync().ConfigureAwait(false); + } + + if (success) + await channel.SendMessageAsync("**Successfully deleted custom reaction** " + toDelete.ToString()).ConfigureAwait(false); + else + await channel.SendMessageAsync("Failed to find that custom reaction.").ConfigureAwait(false); + } + } +} diff --git a/src/NadekoBot/Modules/Help/Help.cs b/src/NadekoBot/Modules/Help/Help.cs index ae8c725e..164a0b79 100644 --- a/src/NadekoBot/Modules/Help/Help.cs +++ b/src/NadekoBot/Modules/Help/Help.cs @@ -53,30 +53,6 @@ namespace NadekoBot.Modules.Help await umsg.Channel.SendMessageAsync("`List of modules:` ```xl\n• " + string.Join("\n• ", _commands.Modules.Select(m => m.Name)) + $"\n``` `Type \"-commands module_name\" to get a list of commands in that module.`") .ConfigureAwait(false); - - await RunWithTypingIntheBackgorund(async () => - { - await Task.Delay(100000); - }, umsg); - } - - private async Task RunWithTypingIntheBackgorund(Func someFUnc, IUserMessage ctx) - { - var cancelSource = new CancellationTokenSource(); - var cancelToken = cancelSource.Token; - var t = Task.Run(async () => - { - while (!cancelToken.IsCancellationRequested) - { - await Task.Delay(10000); - await ctx.Channel.TriggerTypingAsync(); - } - }, cancelToken); - try - { - await someFUnc(); - } - finally { cancelSource.Cancel(); } } [NadekoCommand, Usage, Description, Aliases] diff --git a/src/NadekoBot/Services/Database/IUnitOfWork.cs b/src/NadekoBot/Services/Database/IUnitOfWork.cs index 14719461..68d99b0e 100644 --- a/src/NadekoBot/Services/Database/IUnitOfWork.cs +++ b/src/NadekoBot/Services/Database/IUnitOfWork.cs @@ -9,6 +9,8 @@ namespace NadekoBot.Services.Database { public interface IUnitOfWork : IDisposable { + NadekoContext _context { get; } + IQuoteRepository Quotes { get; } IGuildConfigRepository GuildConfigs { get; } IDonatorsRepository Donators { get; } @@ -18,6 +20,10 @@ namespace NadekoBot.Services.Database IBotConfigRepository BotConfig { get; } IRepeaterRepository Repeaters { get; } IUnitConverterRepository ConverterUnits { get; } + ICustomReactionRepository CustomReactions { get; } + ICurrencyRepository Currency { get; } + ITypingArticlesRepository TypingArticles { get; } + IMusicPlaylistRepository MusicPlaylists { get; } int Complete(); Task CompleteAsync(); diff --git a/src/NadekoBot/Services/Database/Models/CustomReaction.cs b/src/NadekoBot/Services/Database/Models/CustomReaction.cs new file mode 100644 index 00000000..180b85b9 --- /dev/null +++ b/src/NadekoBot/Services/Database/Models/CustomReaction.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace NadekoBot.Services.Database.Models +{ + public class CustomReaction : DbEntity + { + public ulong? GuildId { get; set; } + [NotMapped] + public Regex Regex { get; set; } + public string Response { get; set; } + public string Trigger { get; set; } + public bool IsRegex { get; set; } + public override string ToString() => $"Id: {Id}\nTrigger: {Trigger}\n Regex: {IsRegex}"; + } + + public class ReactionResponse : DbEntity + { + public bool OwnerOnly { get; set; } + public string Text { get; set; } + } +} \ No newline at end of file diff --git a/src/NadekoBot/Services/Database/NadekoContext.cs b/src/NadekoBot/Services/Database/NadekoContext.cs index 2661bdf8..5df5512a 100644 --- a/src/NadekoBot/Services/Database/NadekoContext.cs +++ b/src/NadekoBot/Services/Database/NadekoContext.cs @@ -23,6 +23,7 @@ namespace NadekoBot.Services.Database public DbSet ConversionUnits { get; set; } public DbSet TypingArticles { get; set; } public DbSet MusicPlaylists { get; set; } + public DbSet CustomReactions { get; set; } //logging public DbSet LogSettings { get; set; } @@ -60,7 +61,8 @@ namespace NadekoBot.Services.Database new ModulePrefix() { ModuleName = "Gambling", Prefix = "$" }, new ModulePrefix() { ModuleName = "Permissions", Prefix = ";" }, new ModulePrefix() { ModuleName = "Pokemon", Prefix = ">" }, - new ModulePrefix() { ModuleName = "Utility", Prefix = "." } + new ModulePrefix() { ModuleName = "Utility", Prefix = "." }, + new ModulePrefix() { ModuleName = "CustomReactions", Prefix = "." } }); bc.RaceAnimals.AddRange(new HashSet { diff --git a/src/NadekoBot/Services/Database/Repositories/ICustomReactionRepository.cs b/src/NadekoBot/Services/Database/Repositories/ICustomReactionRepository.cs new file mode 100644 index 00000000..200a1a7c --- /dev/null +++ b/src/NadekoBot/Services/Database/Repositories/ICustomReactionRepository.cs @@ -0,0 +1,14 @@ +using NadekoBot.Services.Database.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NadekoBot.Services.Database.Repositories +{ + public interface ICustomReactionRepository : IRepository + { + List GetList(); + } +} diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/CustomReactionRepository.cs b/src/NadekoBot/Services/Database/Repositories/Impl/CustomReactionRepository.cs new file mode 100644 index 00000000..d0cb46a7 --- /dev/null +++ b/src/NadekoBot/Services/Database/Repositories/Impl/CustomReactionRepository.cs @@ -0,0 +1,22 @@ +using NadekoBot.Services.Database.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; + +namespace NadekoBot.Services.Database.Repositories.Impl +{ + public class CustomReactionsRepository : Repository, ICustomReactionRepository + { + public CustomReactionsRepository(DbContext context) : base(context) + { + } + + public List GetList() + { + return _set.Include(x => x.Responses).ToList(); + } + } +} diff --git a/src/NadekoBot/Services/Database/UnitOfWork.cs b/src/NadekoBot/Services/Database/UnitOfWork.cs index 33f5d1c1..7079b9ee 100644 --- a/src/NadekoBot/Services/Database/UnitOfWork.cs +++ b/src/NadekoBot/Services/Database/UnitOfWork.cs @@ -10,7 +10,7 @@ namespace NadekoBot.Services.Database { public class UnitOfWork : IUnitOfWork { - public NadekoContext _context; + public NadekoContext _context { get; } private IQuoteRepository _quotes; public IQuoteRepository Quotes => _quotes ?? (_quotes = new QuoteRepository(_context)); @@ -48,6 +48,9 @@ namespace NadekoBot.Services.Database private IMusicPlaylistRepository _musicPlaylists; public IMusicPlaylistRepository MusicPlaylists => _musicPlaylists ?? (_musicPlaylists = new MusicPlaylistRepository(_context)); + private ICustomReactionRepository _customReactions; + public ICustomReactionRepository CustomReactions => _customReactions ?? (_customReactions = new CustomReactionsRepository(_context)); + public UnitOfWork(NadekoContext context) { _context = context; diff --git a/src/NadekoBot/Services/DbHandler.cs b/src/NadekoBot/Services/DbHandler.cs index 76437166..ee1833dd 100644 --- a/src/NadekoBot/Services/DbHandler.cs +++ b/src/NadekoBot/Services/DbHandler.cs @@ -36,10 +36,10 @@ namespace NadekoBot.Services public NadekoContext GetDbContext() => Activator.CreateInstance(dbType) as NadekoContext; - public UnitOfWork GetUnitOfWork() => + public IUnitOfWork GetUnitOfWork() => new UnitOfWork(GetDbContext()); - public static UnitOfWork UnitOfWork() => + public static IUnitOfWork UnitOfWork() => DbHandler.Instance.GetUnitOfWork(); } } diff --git a/src/NadekoBot/Services/Impl/BotCredentials.cs b/src/NadekoBot/Services/Impl/BotCredentials.cs index 0d420528..5a540c5b 100644 --- a/src/NadekoBot/Services/Impl/BotCredentials.cs +++ b/src/NadekoBot/Services/Impl/BotCredentials.cs @@ -49,7 +49,11 @@ namespace NadekoBot.Services.Impl Db = new DB(cm.Db.Type, cm.Db.ConnectionString); } else - _log.Fatal("credentials.json is missing. Failed to start."); + { + File.WriteAllText("./credentials_example.json", JsonConvert.SerializeObject(new CredentialsModel(), Formatting.Indented)); + _log.Fatal($"credentials.json is missing. Failed to start. Example written to {Path.GetFullPath("./credentials_example.json")}"); + throw new FileNotFoundException(); + } } private class CredentialsModel From 2c3e97530154cd1518f02af4262c3195410ff541 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sat, 8 Oct 2016 04:35:39 +0200 Subject: [PATCH 43/74] Migrations --- ...20161008022813_customreactions.Designer.cs | 755 ++++++++++++++++++ .../20161008022813_customreactions.cs | 34 + .../NadekoSqliteContextModelSnapshot.cs | 18 + .../CustomReactions/CustomReactions.cs | 6 +- .../Services/Database/NadekoContext.cs | 4 +- .../Repositories/ICustomReactionRepository.cs | 2 +- .../Impl/CustomReactionRepository.cs | 5 - 7 files changed, 813 insertions(+), 11 deletions(-) create mode 100644 src/NadekoBot/Migrations/20161008022813_customreactions.Designer.cs create mode 100644 src/NadekoBot/Migrations/20161008022813_customreactions.cs diff --git a/src/NadekoBot/Migrations/20161008022813_customreactions.Designer.cs b/src/NadekoBot/Migrations/20161008022813_customreactions.Designer.cs new file mode 100644 index 00000000..ca6a19c5 --- /dev/null +++ b/src/NadekoBot/Migrations/20161008022813_customreactions.Designer.cs @@ -0,0 +1,755 @@ +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using NadekoBot.Services.Database.Impl; + +namespace NadekoBot.Migrations +{ + [DbContext(typeof(NadekoSqliteContext))] + [Migration("20161008022813_customreactions")] + partial class customreactions + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { + modelBuilder + .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ItemId"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("BlacklistItem"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BufferSize"); + + b.Property("CurrencyGenerationChance"); + + b.Property("CurrencyGenerationCooldown"); + + b.Property("CurrencyName"); + + b.Property("CurrencyPluralName"); + + b.Property("CurrencySign"); + + b.Property("DMHelpString"); + + b.Property("DontJoinServers"); + + b.Property("ForwardMessages"); + + b.Property("ForwardToAllOwners"); + + b.Property("HelpString"); + + b.Property("MigrationVersion"); + + b.Property("RemindMessageFormat"); + + b.Property("RotatingStatuses"); + + b.HasKey("Id"); + + 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("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("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.CommandCooldown", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CommandName"); + + b.Property("GuildConfigId"); + + b.Property("Seconds"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("CommandCooldown"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("InternalTrigger"); + + b.Property("Modifier"); + + b.Property("UnitType"); + + b.HasKey("Id"); + + b.ToTable("ConversionUnits"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Currency"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildId"); + + b.Property("IsRegex"); + + b.Property("Response"); + + b.Property("Trigger"); + + b.HasKey("Id"); + + b.ToTable("CustomReactions"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("Name"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Donators"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("EightBallResponses"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildConfigId"); + + b.Property("GuildConfigId1"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.HasIndex("GuildConfigId1"); + + b.ToTable("FilterChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildConfigId"); + + b.Property("Word"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FilteredWord"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("LastStatus"); + + b.Property("Type"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FollowedStream"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoAssignRoleId"); + + b.Property("AutoDeleteByeMessages"); + + b.Property("AutoDeleteGreetMessages"); + + b.Property("AutoDeleteGreetMessagesTimer"); + + b.Property("AutoDeleteSelfAssignedRoleMessages"); + + b.Property("ByeMessageChannelId"); + + b.Property("ChannelByeMessageText"); + + b.Property("ChannelGreetMessageText"); + + b.Property("DefaultMusicVolume"); + + b.Property("DeleteMessageOnCommand"); + + b.Property("DmGreetMessageText"); + + b.Property("ExclusiveSelfAssignedRoles"); + + b.Property("FilterInvites"); + + b.Property("FilterWords"); + + b.Property("GenerateCurrencyChannelId"); + + b.Property("GreetMessageChannelId"); + + b.Property("GuildId"); + + b.Property("LogSettingId"); + + b.Property("PermissionRole"); + + b.Property("RootPermissionId"); + + b.Property("SendChannelByeMessage"); + + b.Property("SendChannelGreetMessage"); + + b.Property("SendDmGreetMessage"); + + b.Property("VerbosePermissions"); + + b.Property("VoicePlusTextEnabled"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.HasIndex("LogSettingId"); + + b.HasIndex("RootPermissionId"); + + b.ToTable("GuildConfigs"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredLogChannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredVoicePresenceCHannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelCreated"); + + b.Property("ChannelDestroyed"); + + b.Property("ChannelId"); + + b.Property("ChannelUpdated"); + + b.Property("IsLogging"); + + b.Property("LogUserPresence"); + + b.Property("LogVoicePresence"); + + b.Property("MessageDeleted"); + + b.Property("MessageUpdated"); + + b.Property("UserBanned"); + + b.Property("UserJoined"); + + b.Property("UserLeft"); + + b.Property("UserPresenceChannelId"); + + b.Property("UserUnbanned"); + + b.Property("UserUpdated"); + + b.Property("VoicePresenceChannelId"); + + b.HasKey("Id"); + + b.ToTable("LogSettings"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ModuleName"); + + b.Property("Prefix"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("ModulePrefixes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("AuthorId"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.ToTable("MusicPlaylists"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + 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.Services.Database.Models.PlayingStatus", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Status"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("PlayingStatus"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + 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.Services.Database.Models.Quote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("AuthorName") + .IsRequired(); + + b.Property("GuildId"); + + b.Property("Keyword") + .IsRequired(); + + b.Property("Text") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("Quotes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Icon"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("RaceAnimals"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("IsPrivate"); + + b.Property("Message"); + + b.Property("ServerId"); + + b.Property("UserId"); + + b.Property("When"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildId"); + + b.Property("Interval"); + + b.Property("Message"); + + b.HasKey("Id"); + + b.HasIndex("ChannelId") + .IsUnique(); + + b.ToTable("Repeaters"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildId", "RoleId") + .IsUnique(); + + b.ToTable("SelfAssignableRoles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.ToTable("TypingArticles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("Blacklist") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + { + b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + .WithMany("Bases") + .HasForeignKey("ClashWarId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("CommandCooldowns") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("EightBallResponses") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FilterInvitesChannelIds") + .HasForeignKey("GuildConfigId"); + + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FilterWordsChannelIds") + .HasForeignKey("GuildConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FilteredWords") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FollowedStreams") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany() + .HasForeignKey("LogSettingId"); + + b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + .WithMany() + .HasForeignKey("RootPermissionId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredVoicePresenceChannelIds") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig", "BotConfig") + .WithMany("ModulePrefixes") + .HasForeignKey("BotConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + .WithOne("Previous") + .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RotatingStatusMessages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + { + b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + .WithMany("Songs") + .HasForeignKey("MusicPlaylistId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RaceAnimals") + .HasForeignKey("BotConfigId"); + }); + } + } +} diff --git a/src/NadekoBot/Migrations/20161008022813_customreactions.cs b/src/NadekoBot/Migrations/20161008022813_customreactions.cs new file mode 100644 index 00000000..7531b628 --- /dev/null +++ b/src/NadekoBot/Migrations/20161008022813_customreactions.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace NadekoBot.Migrations +{ + public partial class customreactions : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "CustomReactions", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("Autoincrement", true), + GuildId = table.Column(nullable: true), + IsRegex = table.Column(nullable: false), + Response = table.Column(nullable: true), + Trigger = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_CustomReactions", x => x.Id); + }); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "CustomReactions"); + } + } +} diff --git a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs index c74958b8..4dac2599 100644 --- a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs +++ b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs @@ -166,6 +166,24 @@ namespace NadekoBot.Migrations b.ToTable("Currency"); }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildId"); + + b.Property("IsRegex"); + + b.Property("Response"); + + b.Property("Trigger"); + + b.HasKey("Id"); + + b.ToTable("CustomReactions"); + }); + modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => { b.Property("Id") diff --git a/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs b/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs index b50c9908..0ecccb16 100644 --- a/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs +++ b/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs @@ -23,9 +23,9 @@ namespace NadekoBot.Modules.CustomReactions { using (var uow = DbHandler.UnitOfWork()) { - var list = uow.CustomReactions.GetList(); - AllReactions = new ConcurrentDictionary>(list.Where(g => g.GuildId != null).GroupBy(k => k.GuildId.Value).ToDictionary(g => g.Key, g => new HashSet(g))); - GlobalReactions = new HashSet(list.Where(g => g.GuildId == null)); + var items = uow.CustomReactions.GetAll(); + AllReactions = new ConcurrentDictionary>(items.Where(g => g.GuildId != null).GroupBy(k => k.GuildId.Value).ToDictionary(g => g.Key, g => new HashSet(g))); + GlobalReactions = new HashSet(items.Where(g => g.GuildId == null)); } } public CustomReactions(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client) diff --git a/src/NadekoBot/Services/Database/NadekoContext.cs b/src/NadekoBot/Services/Database/NadekoContext.cs index 5df5512a..8a229565 100644 --- a/src/NadekoBot/Services/Database/NadekoContext.cs +++ b/src/NadekoBot/Services/Database/NadekoContext.cs @@ -37,8 +37,8 @@ namespace NadekoBot.Services.Database public NadekoContext() { - this.Database.Migrate(); - EnsureSeedData(); + // this.Database.Migrate(); + // EnsureSeedData(); } public void EnsureSeedData() diff --git a/src/NadekoBot/Services/Database/Repositories/ICustomReactionRepository.cs b/src/NadekoBot/Services/Database/Repositories/ICustomReactionRepository.cs index 200a1a7c..a5daccfc 100644 --- a/src/NadekoBot/Services/Database/Repositories/ICustomReactionRepository.cs +++ b/src/NadekoBot/Services/Database/Repositories/ICustomReactionRepository.cs @@ -9,6 +9,6 @@ namespace NadekoBot.Services.Database.Repositories { public interface ICustomReactionRepository : IRepository { - List GetList(); + } } diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/CustomReactionRepository.cs b/src/NadekoBot/Services/Database/Repositories/Impl/CustomReactionRepository.cs index d0cb46a7..f4c1b5d2 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/CustomReactionRepository.cs +++ b/src/NadekoBot/Services/Database/Repositories/Impl/CustomReactionRepository.cs @@ -13,10 +13,5 @@ namespace NadekoBot.Services.Database.Repositories.Impl public CustomReactionsRepository(DbContext context) : base(context) { } - - public List GetList() - { - return _set.Include(x => x.Responses).ToList(); - } } } From 81a3a33fff50da5960d379f76b48b094b159a464 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sat, 8 Oct 2016 11:07:58 +0200 Subject: [PATCH 44/74] Woopsie, fixed auto migration and seeding --- src/NadekoBot/Services/Database/NadekoContext.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/NadekoBot/Services/Database/NadekoContext.cs b/src/NadekoBot/Services/Database/NadekoContext.cs index 8a229565..243582d7 100644 --- a/src/NadekoBot/Services/Database/NadekoContext.cs +++ b/src/NadekoBot/Services/Database/NadekoContext.cs @@ -37,8 +37,8 @@ namespace NadekoBot.Services.Database public NadekoContext() { - // this.Database.Migrate(); - // EnsureSeedData(); + this.Database.Migrate(); + EnsureSeedData(); } public void EnsureSeedData() From 24978b7cb522391ffca9ac746be3f5a1f3415b3c Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sat, 8 Oct 2016 11:55:56 +0200 Subject: [PATCH 45/74] Fixed bugs Fearnlj01 found --- .../Modules/Administration/Administration.cs | 12 +- .../Modules/Gambling/Commands/DrawCommand.cs | 2 +- src/NadekoBot/Modules/Music/Music.cs | 30 +--- src/NadekoBot/Modules/Searches/Searches.cs | 4 +- .../Modules/Utility/Commands/QuoteCommands.cs | 2 +- .../Modules/Utility/Commands/Remind.cs | 2 +- .../Resources/CommandStrings.Designer.cs | 139 +++++++++++------- src/NadekoBot/Resources/CommandStrings.resx | 57 ++++--- 8 files changed, 125 insertions(+), 123 deletions(-) diff --git a/src/NadekoBot/Modules/Administration/Administration.cs b/src/NadekoBot/Modules/Administration/Administration.cs index 5f5a7d5d..ee120b2f 100644 --- a/src/NadekoBot/Modules/Administration/Administration.cs +++ b/src/NadekoBot/Modules/Administration/Administration.cs @@ -475,15 +475,9 @@ namespace NadekoBot.Modules.Administration { var channel = (ITextChannel)msg.Channel; await (msg as IUserMessage).DeleteAsync(); - while (count > 0) - { - int limit = (count < 100) ? count : 100; - var enumerable = (await msg.Channel.GetMessagesAsync(limit: limit)); - await msg.Channel.DeleteMessagesAsync(enumerable); - await Task.Delay(1000); // there is a 1 per second per guild ratelimit for deletemessages - if (enumerable.Count < limit) break; - count -= limit; - } + int limit = (count < 100) ? count : 100; + var enumerable = (await msg.Channel.GetMessagesAsync(limit: limit)); + await msg.Channel.DeleteMessagesAsync(enumerable); } //prune @user [x] diff --git a/src/NadekoBot/Modules/Gambling/Commands/DrawCommand.cs b/src/NadekoBot/Modules/Gambling/Commands/DrawCommand.cs index 410d0cd1..1de5650a 100644 --- a/src/NadekoBot/Modules/Gambling/Commands/DrawCommand.cs +++ b/src/NadekoBot/Modules/Gambling/Commands/DrawCommand.cs @@ -63,7 +63,7 @@ namespace NadekoBot.Modules.Gambling [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] - public async Task Shuffle(IUserMessage imsg) + public async Task ShuffleDeck(IUserMessage imsg) { var channel = (ITextChannel)imsg.Channel; diff --git a/src/NadekoBot/Modules/Music/Music.cs b/src/NadekoBot/Modules/Music/Music.cs index 5cc2eb80..aabe19cf 100644 --- a/src/NadekoBot/Modules/Music/Music.cs +++ b/src/NadekoBot/Modules/Music/Music.cs @@ -208,35 +208,7 @@ namespace NadekoBot.Modules.Music [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] - public Task Mute(IUserMessage umsg) - { - var channel = (ITextChannel)umsg.Channel; - MusicPlayer musicPlayer; - if (!MusicPlayers.TryGetValue(channel.Guild.Id, out musicPlayer)) - return Task.CompletedTask; - if (((IGuildUser)umsg.Author).VoiceChannel != musicPlayer.PlaybackVoiceChannel) - return Task.CompletedTask; - musicPlayer.SetVolume(0); - return Task.CompletedTask; - } - - [NadekoCommand, Usage, Description, Aliases] - [RequireContext(ContextType.Guild)] - public Task Max(IUserMessage umsg) - { - var channel = (ITextChannel)umsg.Channel; - MusicPlayer musicPlayer; - if (!MusicPlayers.TryGetValue(channel.Guild.Id, out musicPlayer)) - return Task.CompletedTask; - if (((IGuildUser)umsg.Author).VoiceChannel != musicPlayer.PlaybackVoiceChannel) - return Task.CompletedTask; - musicPlayer.SetVolume(100); - return Task.CompletedTask; - } - - [NadekoCommand, Usage, Description, Aliases] - [RequireContext(ContextType.Guild)] - public async Task Shuffle(IUserMessage umsg) + public async Task ShufflePlaylist(IUserMessage umsg) { var channel = (ITextChannel)umsg.Channel; MusicPlayer musicPlayer; diff --git a/src/NadekoBot/Modules/Searches/Searches.cs b/src/NadekoBot/Modules/Searches/Searches.cs index 47aeb05c..541d0f0d 100644 --- a/src/NadekoBot/Modules/Searches/Searches.cs +++ b/src/NadekoBot/Modules/Searches/Searches.cs @@ -258,7 +258,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] - public async Task Ud(IUserMessage umsg, [Remainder] string query = null) + public async Task UrbanDict(IUserMessage umsg, [Remainder] string query = null) { var channel = (ITextChannel)umsg.Channel; @@ -404,7 +404,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】 [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] - public async Task Clr(IUserMessage umsg, [Remainder] string color = null) + public async Task Color(IUserMessage umsg, [Remainder] string color = null) { var channel = (ITextChannel)umsg.Channel; diff --git a/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs b/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs index f9c3ef7b..c69f030b 100644 --- a/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs +++ b/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs @@ -93,7 +93,7 @@ namespace NadekoBot.Modules.Utility [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] - public async Task DelAllQuotes(IUserMessage umsg, string keyword) + public async Task DelAllQuotes(IUserMessage umsg, [Remainder] string keyword) { var channel = (ITextChannel)umsg.Channel; diff --git a/src/NadekoBot/Modules/Utility/Commands/Remind.cs b/src/NadekoBot/Modules/Utility/Commands/Remind.cs index 67e297b2..c9268ea8 100644 --- a/src/NadekoBot/Modules/Utility/Commands/Remind.cs +++ b/src/NadekoBot/Modules/Utility/Commands/Remind.cs @@ -198,7 +198,7 @@ namespace NadekoBot.Modules.Utility uow.BotConfig.GetOrCreate().RemindMessageFormat = arg.Trim(); await uow.CompleteAsync().ConfigureAwait(false); } - await channel.SendMessageAsync("`New remind message set.`"); + await channel.SendMessageAsync("`New remind template set.`"); } } } diff --git a/src/NadekoBot/Resources/CommandStrings.Designer.cs b/src/NadekoBot/Resources/CommandStrings.Designer.cs index 93a1032b..e99a1739 100644 --- a/src/NadekoBot/Resources/CommandStrings.Designer.cs +++ b/src/NadekoBot/Resources/CommandStrings.Designer.cs @@ -305,27 +305,27 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to ani anime aq. /// - public static string ani_cmd { + public static string anime_cmd { get { - return ResourceManager.GetString("ani_cmd", resourceCulture); + return ResourceManager.GetString("anime_cmd", resourceCulture); } } /// /// Looks up a localized string similar to Queries anilist for an anime and shows the first result.. /// - public static string ani_desc { + public static string anime_desc { get { - return ResourceManager.GetString("ani_desc", resourceCulture); + return ResourceManager.GetString("anime_desc", resourceCulture); } } /// /// Looks up a localized string similar to `~ani aquarion evol`. /// - public static string ani_usage { + public static string anime_usage { get { - return ResourceManager.GetString("ani_usage", resourceCulture); + return ResourceManager.GetString("anime_usage", resourceCulture); } } @@ -807,7 +807,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `.calcops`. + /// Looks up a localized string similar to `~calcops`. /// public static string calcops_usage { get { @@ -1463,33 +1463,6 @@ namespace NadekoBot.Resources { } } - /// - /// Looks up a localized string similar to clr prune. - /// - public static string clr_cmd { - get { - return ResourceManager.GetString("clr_cmd", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Shows you what color corresponds to that hex.. - /// - public static string clr_desc { - get { - return ResourceManager.GetString("clr_desc", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to `~clr 00ff00`. - /// - public static string clr_usage { - get { - return ResourceManager.GetString("clr_usage", resourceCulture); - } - } - /// /// Looks up a localized string similar to cmdcooldown cmdcd. /// @@ -1517,6 +1490,33 @@ namespace NadekoBot.Resources { } } + /// + /// Looks up a localized string similar to color clr. + /// + public static string color_cmd { + get { + return ResourceManager.GetString("color_cmd", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Shows you what color corresponds to that hex.. + /// + public static string color_desc { + get { + return ResourceManager.GetString("color_desc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to `~clr 00ff00`. + /// + public static string color_usage { + get { + return ResourceManager.GetString("color_usage", resourceCulture); + } + } + /// /// Looks up a localized string similar to commands cmds. /// @@ -1590,7 +1590,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to . + /// Looks up a localized string similar to `~convertlist`. /// public static string convertlist_usage { get { @@ -1833,7 +1833,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `.delallq`. + /// Looks up a localized string similar to `.delallq kek`. /// public static string delallquotes_usage { get { @@ -4191,7 +4191,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to mute min. + /// Looks up a localized string similar to mute. /// public static string mute_cmd { get { @@ -4200,7 +4200,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Sets the music volume to 0%. + /// Looks up a localized string similar to Mutes a mentioned user in a voice channel.. /// public static string mute_desc { get { @@ -4209,7 +4209,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `!!min`. + /// Looks up a localized string similar to `.mute @Someone`. /// public static string mute_usage { get { @@ -4920,29 +4920,29 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to remindmsg. + /// Looks up a localized string similar to remindtemplate. /// - public static string remindmsg_cmd { + public static string remindtemplate_cmd { get { - return ResourceManager.GetString("remindmsg_cmd", resourceCulture); + return ResourceManager.GetString("remindtemplate_cmd", resourceCulture); } } /// /// Looks up a localized string similar to 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. . /// - public static string remindmsg_desc { + public static string remindtemplate_desc { get { - return ResourceManager.GetString("remindmsg_desc", resourceCulture); + return ResourceManager.GetString("remindtemplate_desc", resourceCulture); } } /// - /// Looks up a localized string similar to `.remindmsg do something else`. + /// Looks up a localized string similar to `.remindtemplate %user%, you gotta do %message%!`. /// - public static string remindmsg_usage { + public static string remindtemplate_usage { get { - return ResourceManager.GetString("remindmsg_usage", resourceCulture); + return ResourceManager.GetString("remindtemplate_usage", resourceCulture); } } @@ -6144,7 +6144,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Shows a name and a link to every special emoji in the message.. + /// Looks up a localized string similar to Shows a name and a link to every SPECIAL emoji in the message.. /// public static string showemojis_desc { get { @@ -6153,7 +6153,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `.se A message full of emojis`. + /// Looks up a localized string similar to `.se A message full of SPECIALemojis`. /// public static string showemojis_usage { get { @@ -6191,27 +6191,54 @@ namespace NadekoBot.Resources { /// /// Looks up a localized string similar to shuffle sh. /// - public static string shuffle_cmd { + public static string shuffledeck_cmd { get { - return ResourceManager.GetString("shuffle_cmd", resourceCulture); + return ResourceManager.GetString("shuffledeck_cmd", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Reshuffles all cards back into the deck.. + /// + public static string shuffledeck_desc { + get { + return ResourceManager.GetString("shuffledeck_desc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to `$sh`. + /// + public static string shuffledeck_usage { + get { + return ResourceManager.GetString("shuffledeck_usage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to shuffle sh. + /// + public static string shuffleplaylist_cmd { + get { + return ResourceManager.GetString("shuffleplaylist_cmd", resourceCulture); } } /// /// Looks up a localized string similar to Shuffles the current playlist.. /// - public static string shuffle_desc { + public static string shuffleplaylist_desc { get { - return ResourceManager.GetString("shuffle_desc", resourceCulture); + return ResourceManager.GetString("shuffleplaylist_desc", resourceCulture); } } /// /// Looks up a localized string similar to `!!sh`. /// - public static string shuffle_usage { + public static string shuffleplaylist_usage { get { - return ResourceManager.GetString("shuffle_usage", resourceCulture); + return ResourceManager.GetString("shuffleplaylist_usage", resourceCulture); } } @@ -6693,7 +6720,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `~translangs` or `~translangs language`. + /// Looks up a localized string similar to `~translangs`. /// public static string translangs_usage { get { diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index 5a923c34..34b069bd 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -613,13 +613,13 @@ `.k "@some Guy" Your behaviour is toxic.` - mute min + mute - Sets the music volume to 0% + Mutes a mentioned user in a voice channel. - `!!min` + `.mute @Someone` unmute @@ -828,14 +828,14 @@ `.remind me 1d5h Do something` or `.remind #general Start now!` - - remindmsg + + 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. - - `.remindmsg do something else` + + `.remindtemplate %user%, you gotta do %message%!` serverinfo sinfo @@ -1314,13 +1314,13 @@ `$draw [x]` - + shuffle sh - + Shuffles the current playlist. - + `!!sh` @@ -1942,7 +1942,7 @@ List of the convertable dimensions and currencies. - + `~convertlist` wowjoke @@ -2043,13 +2043,13 @@ `~yt query` - + ani anime aq - + Queries anilist for an anime and shows the first result. - + `~ani aquarion evol` @@ -2232,13 +2232,13 @@ `~wiki query` - - clr prune + + color clr - + Shows you what color corresponds to that hex. - + `~clr 00ff00` @@ -2473,7 +2473,7 @@ List the valid languages for translation. - `~translangs` or `~translangs language` + `~translangs` bind @@ -2524,7 +2524,7 @@ Shows all available operations in .calc command - `.calcops` + `~calcops` calcops @@ -2533,7 +2533,7 @@ Deletes all quotes on a specified keyword. - `.delallq` + `.delallq kek` delallq daq @@ -2614,9 +2614,18 @@ showemojis se - Shows a name and a link to every special emoji in the message. + Shows a name and a link to every SPECIAL emoji in the message. - `.se A message full of emojis` + `.se A message full of SPECIALemojis` + + + shuffle sh + + + Reshuffles all cards back into the deck. + + + `$sh` \ No newline at end of file From f97550ee3e1b299c0a9b692b78a12f1485ef9b11 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sat, 8 Oct 2016 12:04:46 +0200 Subject: [PATCH 46/74] Minor fix --- .../Modules/Administration/Administration.cs | 2 +- .../Resources/CommandStrings.Designer.cs | 56 +++++++++---------- src/NadekoBot/Resources/CommandStrings.resx | 12 ++-- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/NadekoBot/Modules/Administration/Administration.cs b/src/NadekoBot/Modules/Administration/Administration.cs index ee120b2f..5c3489ec 100644 --- a/src/NadekoBot/Modules/Administration/Administration.cs +++ b/src/NadekoBot/Modules/Administration/Administration.cs @@ -521,7 +521,7 @@ namespace NadekoBot.Modules.Administration [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] - public async Task NewAvatar(IUserMessage umsg, [Remainder] string img = null) + public async Task SetAvatar(IUserMessage umsg, [Remainder] string img = null) { var channel = (ITextChannel)umsg.Channel; diff --git a/src/NadekoBot/Resources/CommandStrings.Designer.cs b/src/NadekoBot/Resources/CommandStrings.Designer.cs index e99a1739..eeffeacd 100644 --- a/src/NadekoBot/Resources/CommandStrings.Designer.cs +++ b/src/NadekoBot/Resources/CommandStrings.Designer.cs @@ -303,7 +303,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to ani anime aq. + /// Looks up a localized string similar to anime ani aq. /// public static string anime_cmd { get { @@ -4217,33 +4217,6 @@ namespace NadekoBot.Resources { } } - /// - /// Looks up a localized string similar to newavatar setavatar. - /// - public static string newavatar_cmd { - get { - return ResourceManager.GetString("newavatar_cmd", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Sets a new avatar image for the NadekoBot. Argument is a direct link to an image. . - /// - public static string newavatar_desc { - get { - return ResourceManager.GetString("newavatar_desc", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to `.setavatar http://i.imgur.com/xTG3a1I.jpg`. - /// - public static string newavatar_usage { - get { - return ResourceManager.GetString("newavatar_usage", resourceCulture); - } - } - /// /// Looks up a localized string similar to next n. /// @@ -5918,6 +5891,33 @@ namespace NadekoBot.Resources { } } + /// + /// Looks up a localized string similar to setavatar setav. + /// + public static string setavatar_cmd { + get { + return ResourceManager.GetString("setavatar_cmd", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Sets a new avatar image for the NadekoBot. Argument is a direct link to an image. . + /// + public static string setavatar_desc { + get { + return ResourceManager.GetString("setavatar_desc", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to `.setav http://i.imgur.com/xTG3a1I.jpg`. + /// + public static string setavatar_usage { + get { + return ResourceManager.GetString("setavatar_usage", resourceCulture); + } + } + /// /// Looks up a localized string similar to setchanlname schn. /// diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index 34b069bd..c3f0ce99 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -738,14 +738,14 @@ `.newnm BotName` - - newavatar setavatar + + setavatar setav - + Sets a new avatar image for the NadekoBot. Argument is a direct link to an image. - - `.setavatar http://i.imgur.com/xTG3a1I.jpg` + + `.setav http://i.imgur.com/xTG3a1I.jpg` setgame @@ -2044,7 +2044,7 @@ `~yt query` - ani anime aq + anime ani aq Queries anilist for an anime and shows the first result. From c0562026bcbbd7642e3f30d18f76a9253af6a4e2 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sat, 8 Oct 2016 20:24:34 +0200 Subject: [PATCH 47/74] Fixed some stuff --- .../CustomReactions/CustomReactions.cs | 37 ++++++++++++++++--- src/NadekoBot/Modules/Gambling/Gambling.cs | 36 ++++++++++++++---- .../Modules/Permissions/Permissions.cs | 11 ++++++ .../Services/Database/Models/GuildConfig.cs | 2 +- 4 files changed, 71 insertions(+), 15 deletions(-) diff --git a/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs b/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs index 0ecccb16..42199af1 100644 --- a/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs +++ b/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs @@ -18,18 +18,43 @@ namespace NadekoBot.Modules.CustomReactions public class CustomReactions : DiscordModule { public static HashSet GlobalReactions { get; } = new HashSet(); - public static ConcurrentDictionary> AllReactions { get; } = new ConcurrentDictionary>(); + public static ConcurrentDictionary> GuildReactions { get; } = new ConcurrentDictionary>(); static CustomReactions() { using (var uow = DbHandler.UnitOfWork()) { var items = uow.CustomReactions.GetAll(); - AllReactions = new ConcurrentDictionary>(items.Where(g => g.GuildId != null).GroupBy(k => k.GuildId.Value).ToDictionary(g => g.Key, g => new HashSet(g))); + GuildReactions = new ConcurrentDictionary>(items.Where(g => g.GuildId != null).GroupBy(k => k.GuildId.Value).ToDictionary(g => g.Key, g => new HashSet(g))); GlobalReactions = new HashSet(items.Where(g => g.GuildId == null)); } } public CustomReactions(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client) { + client.MessageReceived += (imsg) => + { + var umsg = imsg as IUserMessage; + if (umsg == null) + return Task.CompletedTask; + + var channel = umsg.Channel as ITextChannel; + if (channel == null) + return Task.CompletedTask; + + var t = Task.Run(async () => + { + HashSet reactions; + GuildReactions.TryGetValue(channel.Guild.Id, out reactions); + if (reactions != null && reactions.Any()) + { + var reaction = reactions.Where(cr => cr.Trigger == umsg.Content).Shuffle().FirstOrDefault(); + if (reaction != null) + { + await channel.SendMessageAsync(reaction.Response).ConfigureAwait(false); + } + } + }); + return Task.CompletedTask; + }; } [NadekoCommand, Usage, Description, Aliases] @@ -40,7 +65,7 @@ namespace NadekoBot.Modules.CustomReactions if (string.IsNullOrWhiteSpace(message) || string.IsNullOrWhiteSpace(key)) return; - if ((channel == null && NadekoBot.Credentials.IsOwner(imsg.Author)) || (channel != null && ((IGuildUser)imsg.Author).GuildPermissions.Administrator)) + if ((channel == null && !NadekoBot.Credentials.IsOwner(imsg.Author)) || (channel != null && !((IGuildUser)imsg.Author).GuildPermissions.Administrator)) { try { await channel.SendMessageAsync("Insufficient permissions. Requires Bot ownership for global custom reactions, and Administrator for guild custom reactions."); } catch { } return; @@ -67,7 +92,7 @@ namespace NadekoBot.Modules.CustomReactions } else { - var reactions = AllReactions.GetOrAdd(channel.Guild.Id, new HashSet()); + var reactions = GuildReactions.GetOrAdd(channel.Guild.Id, new HashSet()); reactions.Add(cr); } @@ -85,7 +110,7 @@ namespace NadekoBot.Modules.CustomReactions if (channel == null) customReactions = GlobalReactions; else - customReactions = AllReactions.GetOrAdd(channel.Guild.Id, new HashSet()); + customReactions = GuildReactions.GetOrAdd(channel.Guild.Id, new HashSet()); if (customReactions == null || !customReactions.Any()) await channel.SendMessageAsync("`No custom reactions found`").ConfigureAwait(false); @@ -99,7 +124,7 @@ namespace NadekoBot.Modules.CustomReactions { var channel = imsg.Channel as ITextChannel; - if ((channel == null && NadekoBot.Credentials.IsOwner(imsg.Author)) || (channel != null && ((IGuildUser)imsg.Author).GuildPermissions.Administrator)) + if ((channel == null && !NadekoBot.Credentials.IsOwner(imsg.Author)) || (channel != null && !((IGuildUser)imsg.Author).GuildPermissions.Administrator)) { try { await channel.SendMessageAsync("Insufficient permissions. Requires Bot ownership for global custom reactions, and Administrator for guild custom reactions."); } catch { } return; diff --git a/src/NadekoBot/Modules/Gambling/Gambling.cs b/src/NadekoBot/Modules/Gambling/Gambling.cs index b47c45ce..6335295f 100644 --- a/src/NadekoBot/Modules/Gambling/Gambling.cs +++ b/src/NadekoBot/Modules/Gambling/Gambling.cs @@ -46,8 +46,9 @@ namespace NadekoBot.Modules.Gambling var usr = membersArray[new NadekoRandom().Next(0, membersArray.Length)]; await channel.SendMessageAsync($"**Raffled user:** {usr.Username} (id: {usr.Id})").ConfigureAwait(false); } - + [NadekoCommand, Usage, Description, Aliases] + [Priority(1)] public async Task Cash(IUserMessage umsg, [Remainder] IUser user = null) { var channel = umsg.Channel; @@ -63,7 +64,24 @@ namespace NadekoBot.Modules.Gambling await channel.SendMessageAsync($"{user.Username} has {amount} {config.CurrencySign}").ConfigureAwait(false); } - + + [NadekoCommand, Usage, Description, Aliases] + [Priority(0)] + public async Task Cash(IUserMessage umsg, ulong userId) + { + var channel = umsg.Channel; + + long amount; + BotConfig config; + using (var uow = DbHandler.UnitOfWork()) + { + amount = uow.Currency.GetUserCurrency(userId); + config = uow.BotConfig.GetOrCreate(); + } + + await channel.SendMessageAsync($"`{userId}` has {amount} {config.CurrencySign}").ConfigureAwait(false); + } + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Give(IUserMessage umsg, long amount, [Remainder] IGuildUser receiver) @@ -111,9 +129,10 @@ namespace NadekoBot.Modules.Gambling if (amount <= 0) return; - await CurrencyHandler.RemoveCurrencyAsync(user, $"Taken by bot owner.({umsg.Author.Username}/{umsg.Author.Id})", amount, true).ConfigureAwait(false); - - await channel.SendMessageAsync($"{umsg.Author.Mention} successfully took {amount} {Gambling.CurrencyName}s from {user}!").ConfigureAwait(false); + if(await CurrencyHandler.RemoveCurrencyAsync(user, $"Taken by bot owner.({umsg.Author.Username}/{umsg.Author.Id})", amount, true).ConfigureAwait(false)) + await channel.SendMessageAsync($"{umsg.Author.Mention} successfully took {amount} {Gambling.CurrencyPluralName} from {user}!").ConfigureAwait(false); + else + await channel.SendMessageAsync($"{umsg.Author.Mention} was unable to take {amount} {Gambling.CurrencyPluralName} from {user} because the user doesn't have that much {Gambling.CurrencyPluralName}!").ConfigureAwait(false); } @@ -126,9 +145,10 @@ namespace NadekoBot.Modules.Gambling if (amount <= 0) return; - await CurrencyHandler.RemoveCurrencyAsync(usrId, $"Taken by bot owner.({umsg.Author.Username}/{umsg.Author.Id})", amount).ConfigureAwait(false); - - await channel.SendMessageAsync($"{umsg.Author.Mention} successfully took {amount} {Gambling.CurrencyName}s from <@{usrId}>!").ConfigureAwait(false); + if(await CurrencyHandler.RemoveCurrencyAsync(usrId, $"Taken by bot owner.({umsg.Author.Username}/{umsg.Author.Id})", amount).ConfigureAwait(false)) + await channel.SendMessageAsync($"{umsg.Author.Mention} successfully took {amount} {Gambling.CurrencyName}s from <@{usrId}>!").ConfigureAwait(false); + else + await channel.SendMessageAsync($"{umsg.Author.Mention} was unable to take {amount} {Gambling.CurrencyPluralName} from `{usrId}` because the user doesn't have that much {Gambling.CurrencyPluralName}!").ConfigureAwait(false); } [NadekoCommand, Usage, Description, Aliases] diff --git a/src/NadekoBot/Modules/Permissions/Permissions.cs b/src/NadekoBot/Modules/Permissions/Permissions.cs index aa0ab412..94ba7ebb 100644 --- a/src/NadekoBot/Modules/Permissions/Permissions.cs +++ b/src/NadekoBot/Modules/Permissions/Permissions.cs @@ -490,6 +490,17 @@ namespace NadekoBot.Modules.Permissions State = action.Value, }; uow.GuildConfigs.SetNewRootPermission(channel.Guild.Id, newPerm); + + var allowUser = new Permission + { + PrimaryTarget = PrimaryPermissionType.User, + PrimaryTargetId = imsg.Author.Id, + SecondaryTarget = SecondaryPermissionType.AllModules, + SecondaryTargetName = "*", + State = true, + }; + + uow.GuildConfigs.SetNewRootPermission(channel.Guild.Id, allowUser); await uow.CompleteAsync().ConfigureAwait(false); } await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL MODULES` on this server.").ConfigureAwait(false); diff --git a/src/NadekoBot/Services/Database/Models/GuildConfig.cs b/src/NadekoBot/Services/Database/Models/GuildConfig.cs index 9dc7a57d..7084671d 100644 --- a/src/NadekoBot/Services/Database/Models/GuildConfig.cs +++ b/src/NadekoBot/Services/Database/Models/GuildConfig.cs @@ -44,7 +44,7 @@ namespace NadekoBot.Services.Database.Models //permissions public Permission RootPermission { get; set; } - public bool VerbosePermissions { get; set; } + public bool VerbosePermissions { get; set; } = true; public string PermissionRole { get; set; } = "Nadeko"; public HashSet CommandCooldowns { get; set; } = new HashSet(); From cca96a93a10a886dfe22eb3c973b8d78048e3ea7 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sat, 8 Oct 2016 21:01:40 +0200 Subject: [PATCH 48/74] draw usage fix --- src/NadekoBot/Resources/CommandStrings.Designer.cs | 4 ++-- src/NadekoBot/Resources/CommandStrings.resx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/NadekoBot/Resources/CommandStrings.Designer.cs b/src/NadekoBot/Resources/CommandStrings.Designer.cs index eeffeacd..2aff97ab 100644 --- a/src/NadekoBot/Resources/CommandStrings.Designer.cs +++ b/src/NadekoBot/Resources/CommandStrings.Designer.cs @@ -2175,7 +2175,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Draws a card from the deck.If you supply number [x], she draws up to 5 cards from the deck.. + /// Looks up a localized string similar to Draws a card from the deck.If you supply number X, she draws up to 5 cards from the deck.. /// public static string draw_desc { get { @@ -2184,7 +2184,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `$draw [x]`. + /// Looks up a localized string similar to `$draw` or `$draw 5`. /// public static string draw_usage { get { diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index c3f0ce99..47bae782 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -1309,10 +1309,10 @@ draw - Draws a card from the deck.If you supply number [x], she draws up to 5 cards from the deck. + Draws a card from the deck.If you supply number X, she draws up to 5 cards from the deck. - `$draw [x]` + `$draw` or `$draw 5` shuffle sh From f41a8a16823ce150b4b67dc769398740617c9d2e Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sun, 9 Oct 2016 00:21:29 +0200 Subject: [PATCH 49/74] Fixed kick permission requirement --- src/NadekoBot/Modules/Administration/Administration.cs | 2 ++ src/NadekoBot/Modules/CustomReactions/CustomReactions.cs | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/NadekoBot/Modules/Administration/Administration.cs b/src/NadekoBot/Modules/Administration/Administration.cs index 5c3489ec..0231f8d4 100644 --- a/src/NadekoBot/Modules/Administration/Administration.cs +++ b/src/NadekoBot/Modules/Administration/Administration.cs @@ -275,6 +275,7 @@ namespace NadekoBot.Modules.Administration [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] + [RequirePermission(GuildPermission.KickMembers)] public async Task Kick(IUserMessage umsg, IGuildUser user, [Remainder] string msg = null) { var channel = (ITextChannel)umsg.Channel; @@ -695,6 +696,7 @@ namespace NadekoBot.Modules.Administration [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] + [OwnerOnly] public async Task Donadd(IUserMessage umsg, IUser donator, int amount) { var channel = (ITextChannel)umsg.Channel; diff --git a/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs b/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs index 42199af1..e634921f 100644 --- a/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs +++ b/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs @@ -49,9 +49,16 @@ namespace NadekoBot.Modules.CustomReactions var reaction = reactions.Where(cr => cr.Trigger == umsg.Content).Shuffle().FirstOrDefault(); if (reaction != null) { - await channel.SendMessageAsync(reaction.Response).ConfigureAwait(false); + try { await channel.SendMessageAsync(reaction.Response).ConfigureAwait(false); } catch { } + return; } } + var greaction = GlobalReactions.Where(cr => cr.Trigger == umsg.Content).Shuffle().FirstOrDefault(); + if (greaction != null) + { + try { await channel.SendMessageAsync(greaction.Response).ConfigureAwait(false); } catch { } + return; + } }); return Task.CompletedTask; }; From c426a1709b36b6dee7f7e5b45ba1a05ad5de8653 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sun, 9 Oct 2016 03:22:54 +0200 Subject: [PATCH 50/74] Permission pages --- src/NadekoBot/Modules/CustomReactions/CustomReactions.cs | 5 ++--- .../Modules/Permissions/Commands/CmdCdsCommands.cs | 2 ++ src/NadekoBot/Modules/Permissions/Permissions.cs | 6 ++++-- src/NadekoBot/Resources/CommandStrings.Designer.cs | 4 ++-- src/NadekoBot/Resources/CommandStrings.resx | 4 ++-- src/NadekoBot/Services/Database/Models/CustomReaction.cs | 2 +- 6 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs b/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs index e634921f..7e84b2e3 100644 --- a/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs +++ b/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs @@ -65,7 +65,6 @@ namespace NadekoBot.Modules.CustomReactions } [NadekoCommand, Usage, Description, Aliases] - [RequirePermission(GuildPermission.Administrator)] public async Task AddCustReact(IUserMessage imsg, string key, [Remainder] string message) { var channel = imsg.Channel as ITextChannel; @@ -120,9 +119,9 @@ namespace NadekoBot.Modules.CustomReactions customReactions = GuildReactions.GetOrAdd(channel.Guild.Id, new HashSet()); if (customReactions == null || !customReactions.Any()) - await channel.SendMessageAsync("`No custom reactions found`").ConfigureAwait(false); + await imsg.Channel.SendMessageAsync("`No custom reactions found`").ConfigureAwait(false); else - await channel.SendTableAsync(customReactions.OrderBy(cr => cr.Trigger).Skip((page - 1) * 10).Take(10), c => c.ToString()) + await imsg.Channel.SendMessageAsync(string.Join("\n", customReactions.OrderBy(cr => cr.Trigger).Skip((page - 1) * 10).Take(10))) .ConfigureAwait(false); } diff --git a/src/NadekoBot/Modules/Permissions/Commands/CmdCdsCommands.cs b/src/NadekoBot/Modules/Permissions/Commands/CmdCdsCommands.cs index b14fd452..d1f8ea51 100644 --- a/src/NadekoBot/Modules/Permissions/Commands/CmdCdsCommands.cs +++ b/src/NadekoBot/Modules/Permissions/Commands/CmdCdsCommands.cs @@ -92,6 +92,8 @@ namespace NadekoBot.Modules.Permissions public static bool HasCooldown(Command cmd, IGuild guild, IUser user) { + if (guild == null) + return false; var cmdcds = CmdCdsCommands.commandCooldowns.GetOrAdd(guild.Id, new HashSet()); CommandCooldown cdRule; if ((cdRule = cmdcds.FirstOrDefault(cc => cc.CommandName == cmd.Text.ToLowerInvariant())) != null) diff --git a/src/NadekoBot/Modules/Permissions/Permissions.cs b/src/NadekoBot/Modules/Permissions/Permissions.cs index 94ba7ebb..d8e2d167 100644 --- a/src/NadekoBot/Modules/Permissions/Permissions.cs +++ b/src/NadekoBot/Modules/Permissions/Permissions.cs @@ -61,16 +61,18 @@ namespace NadekoBot.Modules.Permissions [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] - public async Task ListPerms(IUserMessage msg) + public async Task ListPerms(IUserMessage msg, int page = 1) { var channel = (ITextChannel)msg.Channel; + if (page < 1 || page > 4) + return; string toSend = ""; using (var uow = DbHandler.UnitOfWork()) { var perms = uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission; var i = 1; - toSend = String.Join("\n", perms.AsEnumerable().Select(p => $"`{(i++)}.` {(p.Next == null ? Format.Bold(p.GetCommand(channel.Guild) + " [uneditable]") : (p.GetCommand(channel.Guild)))}")); + toSend = Format.Code($"Permissions page {page}") + "\n\n" + String.Join("\n", perms.AsEnumerable().Skip((page - 1) * 20).Take(20).Select(p => $"`{(i++)}.` {(p.Next == null ? Format.Bold(p.GetCommand(channel.Guild) + " [uneditable]") : (p.GetCommand(channel.Guild)))}")); } if (string.IsNullOrWhiteSpace(toSend)) diff --git a/src/NadekoBot/Resources/CommandStrings.Designer.cs b/src/NadekoBot/Resources/CommandStrings.Designer.cs index 2aff97ab..074519bc 100644 --- a/src/NadekoBot/Resources/CommandStrings.Designer.cs +++ b/src/NadekoBot/Resources/CommandStrings.Designer.cs @@ -3444,7 +3444,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Lists whole permission chain with their indexes.. + /// Looks up a localized string similar to Lists whole permission chain with their indexes. You can specify optional page number if there are a lot of permissions. /// public static string listperms_desc { get { @@ -3453,7 +3453,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `;lp`. + /// Looks up a localized string similar to `;lp` or `;lp 3`. /// public static string listperms_usage { get { diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index 47bae782..8b5ee7e4 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -2557,10 +2557,10 @@ cash $$ - Lists whole permission chain with their indexes. + Lists whole permission chain with their indexes. You can specify optional page number if there are a lot of permissions - `;lp` + `;lp` or `;lp 3` listperms lp diff --git a/src/NadekoBot/Services/Database/Models/CustomReaction.cs b/src/NadekoBot/Services/Database/Models/CustomReaction.cs index 180b85b9..d6f061c1 100644 --- a/src/NadekoBot/Services/Database/Models/CustomReaction.cs +++ b/src/NadekoBot/Services/Database/Models/CustomReaction.cs @@ -15,7 +15,7 @@ namespace NadekoBot.Services.Database.Models public string Response { get; set; } public string Trigger { get; set; } public bool IsRegex { get; set; } - public override string ToString() => $"Id: {Id}\nTrigger: {Trigger}\n Regex: {IsRegex}"; + public override string ToString() => $"`#{Id}` `Trigger:` {Trigger}\n `Response:` {Response}"; } public class ReactionResponse : DbEntity From b69f416295781831e3b7c845e0a8d86e0a3a1051 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sun, 9 Oct 2016 04:26:14 +0200 Subject: [PATCH 51/74] Fixes to custom reactions, invite link in help now works --- .../Modules/CustomReactions/CustomReactions.cs | 14 ++++++++------ src/NadekoBot/Services/IBotCredentials.cs | 4 +++- src/NadekoBot/Services/Impl/BotCredentials.cs | 8 ++++++-- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs b/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs index 7e84b2e3..56892853 100644 --- a/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs +++ b/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs @@ -73,7 +73,7 @@ namespace NadekoBot.Modules.CustomReactions if ((channel == null && !NadekoBot.Credentials.IsOwner(imsg.Author)) || (channel != null && !((IGuildUser)imsg.Author).GuildPermissions.Administrator)) { - try { await channel.SendMessageAsync("Insufficient permissions. Requires Bot ownership for global custom reactions, and Administrator for guild custom reactions."); } catch { } + try { await imsg.Channel.SendMessageAsync("Insufficient permissions. Requires Bot ownership for global custom reactions, and Administrator for guild custom reactions."); } catch { } return; } @@ -102,7 +102,7 @@ namespace NadekoBot.Modules.CustomReactions reactions.Add(cr); } - await channel.SendMessageAsync($"`Added new custom reaction:`\n\t`Trigger:` {key}\n\t`Response:` {message}").ConfigureAwait(false); + await imsg.Channel.SendMessageAsync($"`Added new custom reaction:`\n\t`Trigger:` {key}\n\t`Response:` {message}").ConfigureAwait(false); } [NadekoCommand, Usage, Description, Aliases] @@ -132,7 +132,7 @@ namespace NadekoBot.Modules.CustomReactions if ((channel == null && !NadekoBot.Credentials.IsOwner(imsg.Author)) || (channel != null && !((IGuildUser)imsg.Author).GuildPermissions.Administrator)) { - try { await channel.SendMessageAsync("Insufficient permissions. Requires Bot ownership for global custom reactions, and Administrator for guild custom reactions."); } catch { } + try { await imsg.Channel.SendMessageAsync("Insufficient permissions. Requires Bot ownership for global custom reactions, and Administrator for guild custom reactions."); } catch { } return; } @@ -147,11 +147,13 @@ namespace NadekoBot.Modules.CustomReactions if (toDelete.GuildId == null && channel == null) { uow.CustomReactions.Remove(toDelete); + success = true; } - else if (toDelete.GuildId != null && channel.Guild.Id == toDelete.GuildId) + else if (toDelete.GuildId != null && channel?.Guild.Id == toDelete.GuildId) { uow.CustomReactions.Remove(toDelete); + GuildReactions.GetOrAdd(channel.Guild.Id, new HashSet()).RemoveWhere(cr => cr.Id == toDelete.Id); success = true; } if(success) @@ -159,9 +161,9 @@ namespace NadekoBot.Modules.CustomReactions } if (success) - await channel.SendMessageAsync("**Successfully deleted custom reaction** " + toDelete.ToString()).ConfigureAwait(false); + await imsg.Channel.SendMessageAsync("**Successfully deleted custom reaction** " + toDelete.ToString()).ConfigureAwait(false); else - await channel.SendMessageAsync("Failed to find that custom reaction.").ConfigureAwait(false); + await imsg.Channel.SendMessageAsync("`Failed to find that custom reaction.`").ConfigureAwait(false); } } } diff --git a/src/NadekoBot/Services/IBotCredentials.cs b/src/NadekoBot/Services/IBotCredentials.cs index 385b0e27..64b5f7d7 100644 --- a/src/NadekoBot/Services/IBotCredentials.cs +++ b/src/NadekoBot/Services/IBotCredentials.cs @@ -6,7 +6,9 @@ namespace NadekoBot.Services { public interface IBotCredentials { - string ClientId { get; } + ulong ClientId { get; } + ulong BotId { get; } + string Token { get; } string GoogleApiKey { get; } ulong[] OwnerIds { get; } diff --git a/src/NadekoBot/Services/Impl/BotCredentials.cs b/src/NadekoBot/Services/Impl/BotCredentials.cs index 5a540c5b..9343efd9 100644 --- a/src/NadekoBot/Services/Impl/BotCredentials.cs +++ b/src/NadekoBot/Services/Impl/BotCredentials.cs @@ -12,7 +12,8 @@ namespace NadekoBot.Services.Impl { private Logger _log; - public string ClientId { get; } + public ulong ClientId { get; } + public ulong BotId { get; } public string GoogleApiKey { get; } @@ -42,7 +43,8 @@ namespace NadekoBot.Services.Impl MashapeKey = cm.MashapeKey; OsuApiKey = cm.OsuApiKey; TotalShards = cm.TotalShards < 1 ? 1 : cm.TotalShards; - SoundCloudClientId = cm.SoundCloudClientId; + BotId = cm.BotId ?? cm.ClientId; + ClientId = cm.ClientId; if (cm.Db == null) Db = new DB("sqlite", ""); else @@ -58,6 +60,8 @@ namespace NadekoBot.Services.Impl private class CredentialsModel { + public ulong ClientId { get; set; } + public ulong? BotId { get; set; } public string Token { get; set; } public ulong[] OwnerIds { get; set; } public string LoLApiKey { get; set; } From 19d67e3c2f73329c516f860f5148dadb951c23a8 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sun, 9 Oct 2016 05:01:56 +0200 Subject: [PATCH 52/74] Auto adding requirements to help description --- .../Administration/Commands/LogCommand.cs | 4 ++++ src/NadekoBot/Modules/Help/Help.cs | 17 ++++++++++++++++- .../Resources/CommandStrings.Designer.cs | 2 +- src/NadekoBot/Resources/CommandStrings.resx | 2 +- 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs b/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs index 05de36b0..890a6302 100644 --- a/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs +++ b/src/NadekoBot/Modules/Administration/Commands/LogCommand.cs @@ -484,6 +484,7 @@ namespace NadekoBot.Modules.Administration [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] + [RequirePermission(GuildPermission.Administrator)] [OwnerOnly] public async Task LogServer(IUserMessage msg) { @@ -507,6 +508,7 @@ namespace NadekoBot.Modules.Administration [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] + [RequirePermission(GuildPermission.Administrator)] [OwnerOnly] public async Task LogIgnore(IUserMessage imsg) { @@ -602,6 +604,7 @@ namespace NadekoBot.Modules.Administration [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] + [RequirePermission(GuildPermission.Administrator)] public async Task UserPresence(IUserMessage imsg) { var channel = (ITextChannel)imsg.Channel; @@ -624,6 +627,7 @@ namespace NadekoBot.Modules.Administration [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] + [RequirePermission(GuildPermission.Administrator)] public async Task VoicePresence(IUserMessage imsg) { var channel = (ITextChannel)imsg.Channel; diff --git a/src/NadekoBot/Modules/Help/Help.cs b/src/NadekoBot/Modules/Help/Help.cs index 164a0b79..91a507aa 100644 --- a/src/NadekoBot/Modules/Help/Help.cs +++ b/src/NadekoBot/Modules/Help/Help.cs @@ -109,10 +109,25 @@ namespace NadekoBot.Modules.Help if (alias != null) str += $" / `{ alias }`"; if (com != null) - await channel.SendMessageAsync(str + $@"{Environment.NewLine}**Desc:** {com.Summary} + await channel.SendMessageAsync(str + $@"{Environment.NewLine}**Desc:** {com.Summary} {GetCommandRequirements(com)} **Usage:** {com.Remarks}").ConfigureAwait(false); } + private string GetCommandRequirements(Command cmd) + { + return String.Join(" ", cmd.Source.CustomAttributes + .Where(ca => ca.AttributeType == typeof(OwnerOnlyAttribute) || ca.AttributeType == typeof(RequirePermissionAttribute)) + .Select(ca => + { + if (ca.AttributeType == typeof(OwnerOnlyAttribute)) + return "**Bot owner only.**"; + else if (ca.AttributeType == typeof(RequirePermissionAttribute)) + return $"**Requires {(GuildPermission)ca.ConstructorArguments.FirstOrDefault().Value} server permission.**".Replace("Guild", "Server"); + else + return $"**Requires {(GuildPermission)ca.ConstructorArguments.FirstOrDefault().Value} channel permission.**".Replace("Guild", "Server"); + })); + } + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] [OwnerOnly] diff --git a/src/NadekoBot/Resources/CommandStrings.Designer.cs b/src/NadekoBot/Resources/CommandStrings.Designer.cs index 074519bc..76619e58 100644 --- a/src/NadekoBot/Resources/CommandStrings.Designer.cs +++ b/src/NadekoBot/Resources/CommandStrings.Designer.cs @@ -5802,7 +5802,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `.send sid. + /// Looks up a localized string similar to `.send sid`. /// public static string send_usage { get { diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index 8b5ee7e4..df318b2b 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -763,7 +763,7 @@ Send a message to someone on a different server through the bot. - `.send sid + `.send sid` mentionrole menro From 96289a18443b893a568e18878f2ea6d4af178e84 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sun, 9 Oct 2016 05:12:46 +0200 Subject: [PATCH 53/74] Updated lcr and .dcr descriptions --- src/NadekoBot/Resources/CommandStrings.Designer.cs | 6 +++--- src/NadekoBot/Resources/CommandStrings.resx | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/NadekoBot/Resources/CommandStrings.Designer.cs b/src/NadekoBot/Resources/CommandStrings.Designer.cs index 76619e58..055cceaf 100644 --- a/src/NadekoBot/Resources/CommandStrings.Designer.cs +++ b/src/NadekoBot/Resources/CommandStrings.Designer.cs @@ -1851,7 +1851,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Deletes a custom reaction with given name (and index).. + /// Looks up a localized string similar to Deletes a custom reaction on a specific index. If ran in DM, it is bot owner only and deletes a global custom reaction. If ran in a server, it requires Administration priviledges and removes server custom reaction.. /// public static string delcustreact_desc { get { @@ -1860,7 +1860,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `.dcr index`. + /// Looks up a localized string similar to `.dcr 5`. /// public static string delcustreact_usage { get { @@ -3390,7 +3390,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Lists custom reactions (paginated with 30 commands per page). Use 'all' instead of page number to get all custom reactions DM-ed to you.. + /// Looks up a localized string similar to Lists global or server custom reactions (15 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.. /// public static string listcustreact_desc { get { diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index df318b2b..7d3b896c 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -445,7 +445,7 @@ listcustreact lcr - Lists custom reactions (paginated with 30 commands per page). Use 'all' instead of page number to get all custom reactions DM-ed to you. + Lists global or server custom reactions (15 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. `.lcr 1` @@ -472,10 +472,10 @@ delcustreact dcr - Deletes a custom reaction with given name (and index). + Deletes a custom reaction on a specific index. If ran in DM, it is bot owner only and deletes a global custom reaction. If ran in a server, it requires Administration priviledges and removes server custom reaction. - `.dcr index` + `.dcr 5` autoassignrole aar From 0bc377b0c25300da399de512bea2898d919daa65 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sun, 9 Oct 2016 05:14:58 +0200 Subject: [PATCH 54/74] Updated .acr description --- src/NadekoBot/Resources/CommandStrings.Designer.cs | 2 +- src/NadekoBot/Resources/CommandStrings.resx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/NadekoBot/Resources/CommandStrings.Designer.cs b/src/NadekoBot/Resources/CommandStrings.Designer.cs index 055cceaf..b5ef1d94 100644 --- a/src/NadekoBot/Resources/CommandStrings.Designer.cs +++ b/src/NadekoBot/Resources/CommandStrings.Designer.cs @@ -96,7 +96,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Add a custom reaction. Guide here: <https://github.com/Kwoth/NadekoBot/wiki/Custom-Reactions>. + /// Looks up a localized string similar to Add a custom reaction with a trigger and a response. Running this command in server requires Administration permission. Running this command in DM is Bot Owner only and adds a new global custom reaction. Guide here: <https://github.com/Kwoth/NadekoBot/wiki/Custom-Reactions>. /// public static string addcustreact_desc { get { diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index 7d3b896c..7ea75246 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -436,7 +436,7 @@ addcustreact acr - Add a custom reaction. Guide here: <https://github.com/Kwoth/NadekoBot/wiki/Custom-Reactions> + Add a custom reaction with a trigger and a response. Running this command in server requires Administration permission. Running this command in DM is Bot Owner only and adds a new global custom reaction. Guide here: <https://github.com/Kwoth/NadekoBot/wiki/Custom-Reactions> `.acr "hello" Hi there %user%` From ae998c36b3d1cfc5319a0df4bd4bc1baa9d6559f Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sun, 9 Oct 2016 06:38:46 +0200 Subject: [PATCH 55/74] Response placeholders work. will do trigger placeholders tomorrow --- .../20161009041508_second.Designer.cs | 757 ++++++++++++++++++ .../Migrations/20161009041508_second.cs | 25 + .../NadekoSqliteContextModelSnapshot.cs | 2 + .../CustomReactions/CustomReactions.cs | 10 +- .../Modules/CustomReactions/Extensions.cs | 38 + .../Database/Models/CustomReaction.cs | 4 +- 6 files changed, 830 insertions(+), 6 deletions(-) create mode 100644 src/NadekoBot/Migrations/20161009041508_second.Designer.cs create mode 100644 src/NadekoBot/Migrations/20161009041508_second.cs create mode 100644 src/NadekoBot/Modules/CustomReactions/Extensions.cs diff --git a/src/NadekoBot/Migrations/20161009041508_second.Designer.cs b/src/NadekoBot/Migrations/20161009041508_second.Designer.cs new file mode 100644 index 00000000..25a7fb06 --- /dev/null +++ b/src/NadekoBot/Migrations/20161009041508_second.Designer.cs @@ -0,0 +1,757 @@ +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using NadekoBot.Services.Database.Impl; + +namespace NadekoBot.Migrations +{ + [DbContext(typeof(NadekoSqliteContext))] + [Migration("20161009041508_second")] + partial class second + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { + modelBuilder + .HasAnnotation("ProductVersion", "1.0.0-rtm-21431"); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ItemId"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("BlacklistItem"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BufferSize"); + + b.Property("CurrencyGenerationChance"); + + b.Property("CurrencyGenerationCooldown"); + + b.Property("CurrencyName"); + + b.Property("CurrencyPluralName"); + + b.Property("CurrencySign"); + + b.Property("DMHelpString"); + + b.Property("DontJoinServers"); + + b.Property("ForwardMessages"); + + b.Property("ForwardToAllOwners"); + + b.Property("HelpString"); + + b.Property("MigrationVersion"); + + b.Property("RemindMessageFormat"); + + b.Property("RotatingStatuses"); + + b.HasKey("Id"); + + 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("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("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.CommandCooldown", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CommandName"); + + b.Property("GuildConfigId"); + + b.Property("Seconds"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("CommandCooldown"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("InternalTrigger"); + + b.Property("Modifier"); + + b.Property("UnitType"); + + b.HasKey("Id"); + + b.ToTable("ConversionUnits"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Currency"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.CustomReaction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildId"); + + b.Property("IsRegex"); + + b.Property("OwnerOnly"); + + b.Property("Response"); + + b.Property("Trigger"); + + b.HasKey("Id"); + + b.ToTable("CustomReactions"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("Name"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Donators"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("EightBallResponses"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildConfigId"); + + b.Property("GuildConfigId1"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.HasIndex("GuildConfigId1"); + + b.ToTable("FilterChannelId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildConfigId"); + + b.Property("Word"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FilteredWord"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildConfigId"); + + b.Property("GuildId"); + + b.Property("LastStatus"); + + b.Property("Type"); + + b.Property("Username"); + + b.HasKey("Id"); + + b.HasIndex("GuildConfigId"); + + b.ToTable("FollowedStream"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AutoAssignRoleId"); + + b.Property("AutoDeleteByeMessages"); + + b.Property("AutoDeleteGreetMessages"); + + b.Property("AutoDeleteGreetMessagesTimer"); + + b.Property("AutoDeleteSelfAssignedRoleMessages"); + + b.Property("ByeMessageChannelId"); + + b.Property("ChannelByeMessageText"); + + b.Property("ChannelGreetMessageText"); + + b.Property("DefaultMusicVolume"); + + b.Property("DeleteMessageOnCommand"); + + b.Property("DmGreetMessageText"); + + b.Property("ExclusiveSelfAssignedRoles"); + + b.Property("FilterInvites"); + + b.Property("FilterWords"); + + b.Property("GenerateCurrencyChannelId"); + + b.Property("GreetMessageChannelId"); + + b.Property("GuildId"); + + b.Property("LogSettingId"); + + b.Property("PermissionRole"); + + b.Property("RootPermissionId"); + + b.Property("SendChannelByeMessage"); + + b.Property("SendChannelGreetMessage"); + + b.Property("SendDmGreetMessage"); + + b.Property("VerbosePermissions"); + + b.Property("VoicePlusTextEnabled"); + + b.HasKey("Id"); + + b.HasIndex("GuildId") + .IsUnique(); + + b.HasIndex("LogSettingId"); + + b.HasIndex("RootPermissionId"); + + b.ToTable("GuildConfigs"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredLogChannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("LogSettingId"); + + b.HasKey("Id"); + + b.HasIndex("LogSettingId"); + + b.ToTable("IgnoredVoicePresenceCHannels"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelCreated"); + + b.Property("ChannelDestroyed"); + + b.Property("ChannelId"); + + b.Property("ChannelUpdated"); + + b.Property("IsLogging"); + + b.Property("LogUserPresence"); + + b.Property("LogVoicePresence"); + + b.Property("MessageDeleted"); + + b.Property("MessageUpdated"); + + b.Property("UserBanned"); + + b.Property("UserJoined"); + + b.Property("UserLeft"); + + b.Property("UserPresenceChannelId"); + + b.Property("UserUnbanned"); + + b.Property("UserUpdated"); + + b.Property("VoicePresenceChannelId"); + + b.HasKey("Id"); + + b.ToTable("LogSettings"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("ModuleName"); + + b.Property("Prefix"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("ModulePrefixes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.MusicPlaylist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("AuthorId"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.ToTable("MusicPlaylists"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + 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.Services.Database.Models.PlayingStatus", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Status"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("PlayingStatus"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + 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.Services.Database.Models.Quote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AuthorId"); + + b.Property("AuthorName") + .IsRequired(); + + b.Property("GuildId"); + + b.Property("Keyword") + .IsRequired(); + + b.Property("Text") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("Quotes"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BotConfigId"); + + b.Property("Icon"); + + b.Property("Name"); + + b.HasKey("Id"); + + b.HasIndex("BotConfigId"); + + b.ToTable("RaceAnimals"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("IsPrivate"); + + b.Property("Message"); + + b.Property("ServerId"); + + b.Property("UserId"); + + b.Property("When"); + + b.HasKey("Id"); + + b.ToTable("Reminders"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ChannelId"); + + b.Property("GuildId"); + + b.Property("Interval"); + + b.Property("Message"); + + b.HasKey("Id"); + + b.HasIndex("ChannelId") + .IsUnique(); + + b.ToTable("Repeaters"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("GuildId"); + + b.Property("RoleId"); + + b.HasKey("Id"); + + b.HasIndex("GuildId", "RoleId") + .IsUnique(); + + b.ToTable("SelfAssignableRoles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Author"); + + b.Property("Text"); + + b.HasKey("Id"); + + b.ToTable("TypingArticles"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("Blacklist") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b => + { + b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar") + .WithMany("Bases") + .HasForeignKey("ClashWarId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.CommandCooldown", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("CommandCooldowns") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("EightBallResponses") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilterChannelId", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FilterInvitesChannelIds") + .HasForeignKey("GuildConfigId"); + + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FilterWordsChannelIds") + .HasForeignKey("GuildConfigId1"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FilteredWord", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FilteredWords") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b => + { + b.HasOne("NadekoBot.Services.Database.Models.GuildConfig") + .WithMany("FollowedStreams") + .HasForeignKey("GuildConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany() + .HasForeignKey("LogSettingId"); + + b.HasOne("NadekoBot.Services.Database.Models.Permission", "RootPermission") + .WithMany() + .HasForeignKey("RootPermissionId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredChannels") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b => + { + b.HasOne("NadekoBot.Services.Database.Models.LogSetting", "LogSetting") + .WithMany("IgnoredVoicePresenceChannelIds") + .HasForeignKey("LogSettingId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig", "BotConfig") + .WithMany("ModulePrefixes") + .HasForeignKey("BotConfigId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b => + { + b.HasOne("NadekoBot.Services.Database.Models.Permission", "Next") + .WithOne("Previous") + .HasForeignKey("NadekoBot.Services.Database.Models.Permission", "NextId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RotatingStatusMessages") + .HasForeignKey("BotConfigId"); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.PlaylistSong", b => + { + b.HasOne("NadekoBot.Services.Database.Models.MusicPlaylist") + .WithMany("Songs") + .HasForeignKey("MusicPlaylistId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b => + { + b.HasOne("NadekoBot.Services.Database.Models.BotConfig") + .WithMany("RaceAnimals") + .HasForeignKey("BotConfigId"); + }); + } + } +} diff --git a/src/NadekoBot/Migrations/20161009041508_second.cs b/src/NadekoBot/Migrations/20161009041508_second.cs new file mode 100644 index 00000000..0d02f292 --- /dev/null +++ b/src/NadekoBot/Migrations/20161009041508_second.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace NadekoBot.Migrations +{ + public partial class second : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "OwnerOnly", + table: "CustomReactions", + nullable: false, + defaultValue: false); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "OwnerOnly", + table: "CustomReactions"); + } + } +} diff --git a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs index 4dac2599..0acf0498 100644 --- a/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs +++ b/src/NadekoBot/Migrations/NadekoSqliteContextModelSnapshot.cs @@ -175,6 +175,8 @@ namespace NadekoBot.Migrations b.Property("IsRegex"); + b.Property("OwnerOnly"); + b.Property("Response"); b.Property("Trigger"); diff --git a/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs b/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs index 56892853..1df05284 100644 --- a/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs +++ b/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs @@ -13,7 +13,7 @@ using Discord; using NadekoBot.Extensions; namespace NadekoBot.Modules.CustomReactions -{ +{ [NadekoModule("CustomReactions",".")] public class CustomReactions : DiscordModule { @@ -46,17 +46,17 @@ namespace NadekoBot.Modules.CustomReactions GuildReactions.TryGetValue(channel.Guild.Id, out reactions); if (reactions != null && reactions.Any()) { - var reaction = reactions.Where(cr => cr.Trigger == umsg.Content).Shuffle().FirstOrDefault(); + var reaction = reactions.Where(cr => cr.TriggerWithContext(umsg) == umsg.Content).Shuffle().FirstOrDefault(); if (reaction != null) { - try { await channel.SendMessageAsync(reaction.Response).ConfigureAwait(false); } catch { } + try { await channel.SendMessageAsync(reaction.ResponseWithContext(umsg)).ConfigureAwait(false); } catch { } return; } } - var greaction = GlobalReactions.Where(cr => cr.Trigger == umsg.Content).Shuffle().FirstOrDefault(); + var greaction = GlobalReactions.Where(cr => cr.TriggerWithContext(umsg) == umsg.Content).Shuffle().FirstOrDefault(); if (greaction != null) { - try { await channel.SendMessageAsync(greaction.Response).ConfigureAwait(false); } catch { } + try { await channel.SendMessageAsync(greaction.ResponseWithContext(umsg)).ConfigureAwait(false); } catch { } return; } }); diff --git a/src/NadekoBot/Modules/CustomReactions/Extensions.cs b/src/NadekoBot/Modules/CustomReactions/Extensions.cs new file mode 100644 index 00000000..ba6d2131 --- /dev/null +++ b/src/NadekoBot/Modules/CustomReactions/Extensions.cs @@ -0,0 +1,38 @@ +using Discord; +using NadekoBot.Extensions; +using NadekoBot.Services; +using NadekoBot.Services.Database.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NadekoBot.Modules.CustomReactions +{ + public static class Extensions + { + public static Dictionary> placeholders = new Dictionary>() + { + {"%mention%", (ctx) => { return $"<@!{NadekoBot.Client.GetCurrentUser().Id}>"; } }, + {"%user%", (ctx) => { return ctx.Author.Mention; } }, + {"%target%", (ctx) => { return ctx.MentionedUsers.Shuffle().FirstOrDefault()?.Mention ?? "Nobody"; } }, + {"%rng%", (ctx) => { return new NadekoRandom().Next(0,10).ToString(); } } + }; + + private static string ResolveCRString(this string str, IUserMessage ctx) + { + foreach (var ph in placeholders) + { + str = str.Replace(ph.Key, ph.Value(ctx)); + } + return str; + } + + public static string TriggerWithContext(this CustomReaction cr, IUserMessage ctx) + => cr.Trigger.ResolveCRString(ctx); + + public static string ResponseWithContext(this CustomReaction cr, IUserMessage ctx) + => cr.Response.ResolveCRString(ctx); + } +} diff --git a/src/NadekoBot/Services/Database/Models/CustomReaction.cs b/src/NadekoBot/Services/Database/Models/CustomReaction.cs index d6f061c1..3b436060 100644 --- a/src/NadekoBot/Services/Database/Models/CustomReaction.cs +++ b/src/NadekoBot/Services/Database/Models/CustomReaction.cs @@ -1,4 +1,5 @@ -using System; +using Discord; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; @@ -15,6 +16,7 @@ namespace NadekoBot.Services.Database.Models public string Response { get; set; } public string Trigger { get; set; } public bool IsRegex { get; set; } + public bool OwnerOnly { get; set; } public override string ToString() => $"`#{Id}` `Trigger:` {Trigger}\n `Response:` {Response}"; } From 0c9fa4b453f64f4edc78fa9c97cf79cd57f31e74 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sun, 9 Oct 2016 21:58:39 +0200 Subject: [PATCH 56/74] Fixed dm help string --- src/NadekoBot/Modules/CustomReactions/Extensions.cs | 2 +- src/NadekoBot/Modules/Help/Help.cs | 9 --------- src/NadekoBot/Services/CommandHandler.cs | 8 ++++++++ 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/NadekoBot/Modules/CustomReactions/Extensions.cs b/src/NadekoBot/Modules/CustomReactions/Extensions.cs index ba6d2131..147d6dcf 100644 --- a/src/NadekoBot/Modules/CustomReactions/Extensions.cs +++ b/src/NadekoBot/Modules/CustomReactions/Extensions.cs @@ -14,7 +14,7 @@ namespace NadekoBot.Modules.CustomReactions { public static Dictionary> placeholders = new Dictionary>() { - {"%mention%", (ctx) => { return $"<@!{NadekoBot.Client.GetCurrentUser().Id}>"; } }, + {"%mention%", (ctx) => { return $"<@{NadekoBot.Client.GetCurrentUser().Id}>"; } }, {"%user%", (ctx) => { return ctx.Author.Mention; } }, {"%target%", (ctx) => { return ctx.MentionedUsers.Shuffle().FirstOrDefault()?.Mention ?? "Nobody"; } }, {"%rng%", (ctx) => { return new NadekoRandom().Next(0,10).ToString(); } } diff --git a/src/NadekoBot/Modules/Help/Help.cs b/src/NadekoBot/Modules/Help/Help.cs index 91a507aa..2084f19b 100644 --- a/src/NadekoBot/Modules/Help/Help.cs +++ b/src/NadekoBot/Modules/Help/Help.cs @@ -36,15 +36,6 @@ namespace NadekoBot.Modules.Help public Help(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client) { - client.MessageReceived += async (msg) => - { - if (msg.Author.IsBot) - return; - if (msg.Channel is IPrivateChannel) - { - await msg.Channel.SendMessageAsync(DMHelpString).ConfigureAwait(false); - } - }; } [NadekoCommand, Usage, Description, Aliases] diff --git a/src/NadekoBot/Services/CommandHandler.cs b/src/NadekoBot/Services/CommandHandler.cs index 15c7c752..da9cbe68 100644 --- a/src/NadekoBot/Services/CommandHandler.cs +++ b/src/NadekoBot/Services/CommandHandler.cs @@ -16,6 +16,7 @@ using Discord.Net; using NadekoBot.Extensions; using static NadekoBot.Modules.Permissions.Permissions; using System.Collections.Concurrent; +using NadekoBot.Modules.Help; namespace NadekoBot.Services { @@ -160,6 +161,13 @@ namespace NadekoBot.Services await msg.Channel.SendMessageAsync(":warning: " + result.ErrorReason).ConfigureAwait(false); } } + else + { + if (msg.Channel is IPrivateChannel) + { + await msg.Channel.SendMessageAsync(Help.DMHelpString).ConfigureAwait(false); + } + } } catch (Exception ex) { From a9235dad93baeebf51edef3e941a9d35b35aba9d Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sun, 9 Oct 2016 22:40:14 +0200 Subject: [PATCH 57/74] Sanitized everything i could think of so far which which could cause accidental @everyone or @here mentions --- .../Commands/ServerGreetCommands.cs | 15 +++--- .../Games/Commands/SpeedTypingCommands.cs | 53 +++++++++++-------- .../Commands/Trivia/TriviaQuestionPool.cs | 5 +- .../Modules/Utility/Commands/InfoCommands.cs | 2 +- .../Modules/Utility/Commands/QuoteCommands.cs | 3 +- .../Modules/Utility/Commands/Remind.cs | 8 +-- src/NadekoBot/Modules/Utility/Utility.cs | 6 +-- src/NadekoBot/_Extensions/Extensions.cs | 3 ++ 8 files changed, 55 insertions(+), 40 deletions(-) diff --git a/src/NadekoBot/Modules/Administration/Commands/ServerGreetCommands.cs b/src/NadekoBot/Modules/Administration/Commands/ServerGreetCommands.cs index 735f7e0f..0d5561a0 100644 --- a/src/NadekoBot/Modules/Administration/Commands/ServerGreetCommands.cs +++ b/src/NadekoBot/Modules/Administration/Commands/ServerGreetCommands.cs @@ -1,6 +1,7 @@ using Discord; using Discord.Commands; using NadekoBot.Attributes; +using NadekoBot.Extensions; using NadekoBot.Services; using NadekoBot.Services.Database.Models; using NLog; @@ -42,12 +43,12 @@ namespace NadekoBot.Modules.Administration if (channel == null) //maybe warn the server owner that the channel is missing return; - var msg = conf.ChannelByeMessageText.Replace("%user%", "**" + user.Username + "**"); + var msg = conf.ChannelByeMessageText.Replace("%user%", user.Username).Replace("%server%", user.Guild.Name); if (string.IsNullOrWhiteSpace(msg)) return; try { - var toDelete = await channel.SendMessageAsync(msg).ConfigureAwait(false); + var toDelete = await channel.SendMessageAsync(msg.SanitizeMentions()).ConfigureAwait(false); if (conf.AutoDeleteByeMessages) { var t = Task.Run(async () => @@ -82,7 +83,7 @@ namespace NadekoBot.Modules.Administration { try { - var toDelete = await channel.SendMessageAsync(msg).ConfigureAwait(false); + var toDelete = await channel.SendMessageAsync(msg.SanitizeMentions()).ConfigureAwait(false); if (conf.AutoDeleteGreetMessages) { var t = Task.Run(async () => @@ -172,7 +173,7 @@ namespace NadekoBot.Modules.Administration conf = uow.GuildConfigs.For(channel.Guild.Id); if (!string.IsNullOrWhiteSpace(text)) { - conf.ChannelGreetMessageText = text; + conf.ChannelGreetMessageText = text.SanitizeMentions(); uow.GuildConfigs.Update(conf); await uow.CompleteAsync(); } @@ -180,7 +181,7 @@ namespace NadekoBot.Modules.Administration if (string.IsNullOrWhiteSpace(text)) { - await channel.SendMessageAsync("`Current greet message:` " + conf.ChannelGreetMessageText); + await channel.SendMessageAsync("`Current greet message:` " + conf.ChannelGreetMessageText.SanitizeMentions()); return; } await channel.SendMessageAsync("New greet message set.").ConfigureAwait(false); @@ -275,7 +276,7 @@ namespace NadekoBot.Modules.Administration conf = uow.GuildConfigs.For(channel.Guild.Id); if (!string.IsNullOrWhiteSpace(text)) { - conf.ChannelByeMessageText = text; + conf.ChannelByeMessageText = text.SanitizeMentions(); uow.GuildConfigs.Update(conf); await uow.CompleteAsync(); } @@ -283,7 +284,7 @@ namespace NadekoBot.Modules.Administration if (string.IsNullOrWhiteSpace(text)) { - await channel.SendMessageAsync("`Current bye message:` " + conf.ChannelGreetMessageText); + await channel.SendMessageAsync("`Current bye message:` " + conf.ChannelGreetMessageText.SanitizeMentions()); return; } await channel.SendMessageAsync("New bye message set.").ConfigureAwait(false); diff --git a/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs b/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs index 624bb9d8..da65770c 100644 --- a/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs @@ -56,40 +56,47 @@ namespace NadekoBot.Modules.Games IsActive = true; CurrentSentence = GetRandomSentence(); var i = (int)(CurrentSentence.Length / WORD_VALUE * 1.7f); - await channel.SendMessageAsync($@":clock2: Next contest will last for {i} seconds. Type the bolded text as fast as you can.").ConfigureAwait(false); - - - var msg = await channel.SendMessageAsync("Starting new typing contest in **3**...").ConfigureAwait(false); - await Task.Delay(1000).ConfigureAwait(false); try { - await msg.ModifyAsync(m => m.Content = "Starting new typing contest in **2**...").ConfigureAwait(false); - await Task.Delay(1000).ConfigureAwait(false); - await msg.ModifyAsync(m => m.Content = "Starting new typing contest in **1**...").ConfigureAwait(false); + await channel.SendMessageAsync($@":clock2: Next contest will last for {i} seconds. Type the bolded text as fast as you can.").ConfigureAwait(false); + + + var msg = await channel.SendMessageAsync("Starting new typing contest in **3**...").ConfigureAwait(false); await Task.Delay(1000).ConfigureAwait(false); + try + { + await msg.ModifyAsync(m => m.Content = "Starting new typing contest in **2**...").ConfigureAwait(false); + await Task.Delay(1000).ConfigureAwait(false); + await msg.ModifyAsync(m => m.Content = "Starting new typing contest in **1**...").ConfigureAwait(false); + await Task.Delay(1000).ConfigureAwait(false); + } + catch (Exception ex) { _log.Warn(ex); } + + await msg.ModifyAsync(m => m.Content = $"**{Format.Sanitize(CurrentSentence.Replace(" ", " \x200B")).SanitizeMentions()}**:book:").ConfigureAwait(false); + sw.Start(); + HandleAnswers(); + + while (i > 0) + { + await Task.Delay(1000).ConfigureAwait(false); + i--; + if (!IsActive) + return; + } + } - catch (Exception ex) { _log.Warn(ex); } - - await msg.ModifyAsync(m => m.Content = $":book:**{CurrentSentence.Replace(" ", " \x200B")}**:book:").ConfigureAwait(false); - sw.Start(); - HandleAnswers(); - - while (i > 0) + catch { } + finally { - await Task.Delay(1000).ConfigureAwait(false); - i--; - if (!IsActive) - return; + await Stop().ConfigureAwait(false); } - - await Stop().ConfigureAwait(false); } public string GetRandomSentence() { using (var uow = DbHandler.UnitOfWork()) { - return uow.TypingArticles.GetRandom()?.Text ?? "No typing articles found. Use `>typeadd` command to add a new article for typing."; + return uow.TypingArticles.GetRandom()?.Text ?? $"No typing articles found. Use `{NadekoBot.ModulePrefixes[typeof(Games).Name]}typeadd` command to add a new article for typing."; } } @@ -194,7 +201,7 @@ namespace NadekoBot.Modules.Games uow.TypingArticles.Add(new Services.Database.Models.TypingArticle { Author = imsg.Author.Username, - Text = text + Text = text.SanitizeMentions(), }); await uow.CompleteAsync().ConfigureAwait(false); } diff --git a/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaQuestionPool.cs b/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaQuestionPool.cs index cc9db53a..deb4e7b1 100644 --- a/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaQuestionPool.cs +++ b/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaQuestionPool.cs @@ -1,4 +1,5 @@ -using NadekoBot.Services; +using NadekoBot.Extensions; +using NadekoBot.Services; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; @@ -34,7 +35,7 @@ namespace NadekoBot.Modules.Games.Trivia foreach (var item in arr) { - var tq = new TriviaQuestion(item["Question"].ToString(), item["Answer"].ToString(), item["Category"]?.ToString()); + var tq = new TriviaQuestion(item["Question"].ToString().SanitizeMentions(), item["Answer"].ToString().SanitizeMentions(), item["Category"]?.ToString()); pool.Add(tq); } var r = new NadekoRandom(); diff --git a/src/NadekoBot/Modules/Utility/Commands/InfoCommands.cs b/src/NadekoBot/Modules/Utility/Commands/InfoCommands.cs index f80fc294..806deac2 100644 --- a/src/NadekoBot/Modules/Utility/Commands/InfoCommands.cs +++ b/src/NadekoBot/Modules/Utility/Commands/InfoCommands.cs @@ -77,7 +77,7 @@ namespace NadekoBot.Modules.Utility toReturn += $@"`Id:` **{user.Id}** `Current Game:` **{(user.Game?.Name == null ? "-" : user.Game.Name)}** `Joined At:` **{user.JoinedAt}** -`Roles:` **({user.Roles.Count()}) - {string.Join(", ", user.Roles.Select(r => r.Name))}** +`Roles:` **({user.Roles.Count()}) - {string.Join(", ", user.Roles.Select(r => r.Name)).SanitizeMentions()}** `AvatarUrl:` **{user.AvatarUrl}**"; await msg.Reply(toReturn).ConfigureAwait(false); } diff --git a/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs b/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs index c69f030b..f9c37bf6 100644 --- a/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs +++ b/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs @@ -1,6 +1,7 @@ using Discord; using Discord.Commands; using NadekoBot.Attributes; +using NadekoBot.Extensions; using NadekoBot.Services; using NadekoBot.Services.Database; using NadekoBot.Services.Database.Models; @@ -34,7 +35,7 @@ namespace NadekoBot.Modules.Utility if (quote == null) return; - await channel.SendMessageAsync("📣 " + quote.Text); + await channel.SendMessageAsync("📣 " + quote.Text.SanitizeMentions()); } [NadekoCommand, Usage, Description, Aliases] diff --git a/src/NadekoBot/Modules/Utility/Commands/Remind.cs b/src/NadekoBot/Modules/Utility/Commands/Remind.cs index c9268ea8..1a65b535 100644 --- a/src/NadekoBot/Modules/Utility/Commands/Remind.cs +++ b/src/NadekoBot/Modules/Utility/Commands/Remind.cs @@ -2,6 +2,7 @@ using Discord.Commands; using Discord.WebSocket; using NadekoBot.Attributes; +using NadekoBot.Extensions; using NadekoBot.Services; using NadekoBot.Services.Database; using NadekoBot.Services.Database.Models; @@ -47,7 +48,7 @@ namespace NadekoBot.Modules.Utility foreach (var r in reminders) { - var t = StartReminder(r); + try { var t = StartReminder(r); } catch (Exception ex) { _log.Warn(ex); } } } @@ -77,7 +78,8 @@ namespace NadekoBot.Modules.Utility await ch.SendMessageAsync( replacements.Aggregate(RemindMessageFormat, - (cur, replace) => cur.Replace(replace.Key, replace.Value(r))) + (cur, replace) => cur.Replace(replace.Key, replace.Value(r))) + .SanitizeMentions() ).ConfigureAwait(false); //it works trust me } catch (Exception ex) { _log.Warn(ex); } @@ -179,7 +181,7 @@ namespace NadekoBot.Modules.Utility await uow.CompleteAsync(); } - try { await channel.SendMessageAsync($"⏰ I will remind \"{(ch is ITextChannel ? ((ITextChannel)ch).Name : umsg.Author.Username)}\" to \"{message.ToString()}\" in {output}. ({time:d.M.yyyy.} at {time:HH:mm})").ConfigureAwait(false); } catch { } + try { await channel.SendMessageAsync($"⏰ I will remind \"{(ch is ITextChannel ? ((ITextChannel)ch).Name : umsg.Author.Username)}\" to \"{message.SanitizeMentions()}\" in {output}. ({time:d.M.yyyy.} at {time:HH:mm})").ConfigureAwait(false); } catch { } await StartReminder(rem); } diff --git a/src/NadekoBot/Modules/Utility/Utility.cs b/src/NadekoBot/Modules/Utility/Utility.cs index ced8457c..9224f351 100644 --- a/src/NadekoBot/Modules/Utility/Utility.cs +++ b/src/NadekoBot/Modules/Utility/Utility.cs @@ -45,7 +45,7 @@ namespace NadekoBot.Modules.Utility [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] - public async Task InRole(IUserMessage umsg, [Remainder] string roles = null) + public async Task InRole(IUserMessage umsg, [Remainder] string roles) { if (string.IsNullOrWhiteSpace(roles)) return; @@ -122,11 +122,11 @@ namespace NadekoBot.Modules.Utility var guild = channel.Guild; if (target != null) { - await msg.Reply($"`List of roles for **{target.Username}**:` \n• " + string.Join("\n• ", target.Roles.Except(new[] { guild.EveryoneRole }).OrderBy(r => r.Position))); + await msg.Reply($"`List of roles for **{target.Username}**:` \n• " + string.Join("\n• ", target.Roles.Except(new[] { guild.EveryoneRole }).OrderBy(r => r.Position)).SanitizeMentions()); } else { - await msg.Reply("`List of roles:` \n• " + string.Join("\n• ", guild.Roles.Except(new[] { guild.EveryoneRole }).OrderBy(r=>r.Position))); + await msg.Reply("`List of roles:` \n• " + string.Join("\n• ", guild.Roles.Except(new[] { guild.EveryoneRole }).OrderBy(r=>r.Position)).SanitizeMentions()); } } diff --git a/src/NadekoBot/_Extensions/Extensions.cs b/src/NadekoBot/_Extensions/Extensions.cs index c226e45e..f2c22573 100644 --- a/src/NadekoBot/_Extensions/Extensions.cs +++ b/src/NadekoBot/_Extensions/Extensions.cs @@ -23,6 +23,9 @@ namespace NadekoBot.Extensions http.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); } + public static string SanitizeMentions(this string str) => + str.Replace("@everyone", "@everyοne").Replace("@here", "@һere"); + public static double UnixTimestamp(this DateTime dt) => dt.ToUniversalTime().Subtract(new DateTime(1970, 1, 1)).TotalSeconds; public static async Task SendMessageAsync(this IGuildUser user, string message, bool isTTS = false) => From f76d894251135fc5212b2eeea00c1917df62fc51 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sun, 9 Oct 2016 23:19:33 +0200 Subject: [PATCH 58/74] Small fixes to speed typing --- src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs b/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs index da65770c..2b092d78 100644 --- a/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs +++ b/src/NadekoBot/Modules/Games/Commands/SpeedTypingCommands.cs @@ -72,7 +72,7 @@ namespace NadekoBot.Modules.Games } catch (Exception ex) { _log.Warn(ex); } - await msg.ModifyAsync(m => m.Content = $"**{Format.Sanitize(CurrentSentence.Replace(" ", " \x200B")).SanitizeMentions()}**:book:").ConfigureAwait(false); + await msg.ModifyAsync(m => m.Content = $"**{Format.Sanitize(CurrentSentence.Replace(" ", " \x200B")).SanitizeMentions()}").ConfigureAwait(false); sw.Start(); HandleAnswers(); @@ -96,7 +96,7 @@ namespace NadekoBot.Modules.Games { using (var uow = DbHandler.UnitOfWork()) { - return uow.TypingArticles.GetRandom()?.Text ?? $"No typing articles found. Use `{NadekoBot.ModulePrefixes[typeof(Games).Name]}typeadd` command to add a new article for typing."; + return uow.TypingArticles.GetRandom()?.Text ?? $"No typing articles found. Use {NadekoBot.ModulePrefixes[typeof(Games).Name]}typeadd command to add a new article for typing."; } } @@ -129,7 +129,7 @@ namespace NadekoBot.Modules.Games await channel.SendMessageAsync($"{msg.Author.Mention} finished in **{sw.Elapsed.Seconds}** seconds with { distance } errors, **{ CurrentSentence.Length / WORD_VALUE / sw.Elapsed.Seconds * 60 }** WPM!").ConfigureAwait(false); if (finishedUserIds.Count % 2 == 0) { - await channel.SendMessageAsync($":exclamation: `A lot of people finished, here is the text for those still typing:`\n\n:book:**{CurrentSentence}**:book:").ConfigureAwait(false); + await channel.SendMessageAsync($":exclamation: `A lot of people finished, here is the text for those still typing:`\n\n**{Format.Sanitize(CurrentSentence.Replace(" ", " \x200B")).SanitizeMentions()}**").ConfigureAwait(false); } } } From 33363d158240b91c681064508834c3bd3143cb87 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sun, 9 Oct 2016 23:22:49 +0200 Subject: [PATCH 59/74] Hgit has requirements now too --- src/NadekoBot/Modules/Help/Help.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NadekoBot/Modules/Help/Help.cs b/src/NadekoBot/Modules/Help/Help.cs index 2084f19b..7cf03ca9 100644 --- a/src/NadekoBot/Modules/Help/Help.cs +++ b/src/NadekoBot/Modules/Help/Help.cs @@ -136,7 +136,7 @@ namespace NadekoBot.Modules.Help helpstr.AppendLine("----------------|--------------|-------"); lastModule = com.Module.Name; } - helpstr.AppendLine($"`{com.Text}` {string.Join(" ", com.Aliases.Skip(1).Select(a=>"`"+a+"`"))} | {com.Remarks} | {com.Summary}"); + helpstr.AppendLine($"`{com.Text}` {string.Join(" ", com.Aliases.Skip(1).Select(a=>"`"+a+"`"))} | {com.Remarks} | {com.Summary} {GetCommandRequirements(com)}"); } helpstr = helpstr.Replace(NadekoBot.Client.GetCurrentUser().Username , "@BotName"); #if DEBUG From 146b9e283721a279a9e5aaba7c3469690ba6cf55 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sun, 9 Oct 2016 23:25:08 +0200 Subject: [PATCH 60/74] Commandlist generated --- src/NadekoBot/Modules/Help/Help.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NadekoBot/Modules/Help/Help.cs b/src/NadekoBot/Modules/Help/Help.cs index 7cf03ca9..24d7ecc8 100644 --- a/src/NadekoBot/Modules/Help/Help.cs +++ b/src/NadekoBot/Modules/Help/Help.cs @@ -140,7 +140,7 @@ namespace NadekoBot.Modules.Help } helpstr = helpstr.Replace(NadekoBot.Client.GetCurrentUser().Username , "@BotName"); #if DEBUG - File.WriteAllText("../../../../../docs/Commands List.md", helpstr.ToString()); + File.WriteAllText("../../docs/Commands List.md", helpstr.ToString()); #else File.WriteAllText("commandlist.md", helpstr.ToString()); #endif From 2f6deebb55ab29a8b80ef3e44050162184d501f9 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Mon, 10 Oct 2016 00:36:22 +0200 Subject: [PATCH 61/74] commandlist, now really --- src/NadekoBot/Modules/Help/Help.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NadekoBot/Modules/Help/Help.cs b/src/NadekoBot/Modules/Help/Help.cs index 24d7ecc8..e21bdf12 100644 --- a/src/NadekoBot/Modules/Help/Help.cs +++ b/src/NadekoBot/Modules/Help/Help.cs @@ -140,7 +140,7 @@ namespace NadekoBot.Modules.Help } helpstr = helpstr.Replace(NadekoBot.Client.GetCurrentUser().Username , "@BotName"); #if DEBUG - File.WriteAllText("../../docs/Commands List.md", helpstr.ToString()); + File.WriteAllText("../../docs/commandslist.md", helpstr.ToString()); #else File.WriteAllText("commandlist.md", helpstr.ToString()); #endif From 51f02233c6be5cc7c9a3bee5d6b5d8205490b8d5 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Mon, 10 Oct 2016 00:38:52 +0200 Subject: [PATCH 62/74] OK, no kidding now, really commandlist, wth --- docs/commandslist.md | 311 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 311 insertions(+) create mode 100644 docs/commandslist.md diff --git a/docs/commandslist.md b/docs/commandslist.md new file mode 100644 index 00000000..ebe50b5c --- /dev/null +++ b/docs/commandslist.md @@ -0,0 +1,311 @@ + +### Permissions +Command and aliases | Description | Usage +----------------|--------------|------- +`;verbose` `;v` | `;verbose true` | Sets whether to show when a command/module is blocked. +`;permrole` `;pr` | `;pr role` | Sets a role which can change permissions. Or supply no parameters to find out the current one. Default one is 'Nadeko'. +`;listperms` `;lp` | `;lp` or `;lp 3` | Lists whole permission chain with their indexes. You can specify optional page number if there are a lot of permissions +`;removeperm` `;rp` | `;rp 1` | Removes a permission from a given position +`;moveperm` `;mp` | `;mp 2 4` | Moves permission from one position to another. +`;srvrcmd` `;sc` | `;sc "command name" disable` | Sets a command's permission at the server level. +`;srvrmdl` `;sm` | `;sm "module name" enable` | Sets a module's permission at the server level. +`;usrcmd` `;uc` | `;uc "command name" enable SomeUsername` | Sets a command's permission at the user level. +`;usrmdl` `;um` | `;um "module name" enable SomeUsername` | Sets a module's permission at the user level. +`;rolecmd` `;rc` | `;rc "command name" disable MyRole` | Sets a command's permission at the role level. +`;rolemdl` `;rm` | `;rm "module name" enable MyRole` | Sets a module's permission at the role level. +`;chnlcmd` `;cc` | `;cc "command name" enable SomeChannel` | Sets a command's permission at the channel level. +`;chnlmdl` `;cm` | `;cm "module name" enable SomeChannel` | Sets a module's permission at the channel level. +`;allchnlmdls` `;acm` | `;acm enable #SomeChannel` | Enable or disable all modules in a specified channel. +`;allrolemdls` `;arm` | `;arm [enable/disable] MyRole` | Enable or disable all modules for a specific role. +`;allusrmdls` `;aum` | `;aum enable @someone` | Enable or disable all modules for a specific user. +`;allsrvrmdls` `;asm` | `;asm [enable/disable]` | Enable or disable all modules for your server. +`;ubl` | `;ubl add @SomeUser` or `;ubl rem 12312312313` | Either [add]s or [rem]oves a user specified by a mention or ID from a blacklist. **Bot owner only.** +`;ubl` | `;ubl add @SomeUser` or `;ubl rem 12312312313` | Either [add]s or [rem]oves a user specified by a mention or ID from a blacklist. **Bot owner only.** +`;cbl` | `;cbl rem 12312312312` | Either [add]s or [rem]oves a channel specified by an ID from a blacklist. **Bot owner only.** +`;sbl` | `;sbl add 12312321312` or `;sbl rem SomeTrashServer` | Either [add]s or [rem]oves a server specified by a Name or ID from a blacklist. **Bot owner only.** +`;sbl` | `;sbl add 12312321312` or `;sbl rem SomeTrashServer` | Either [add]s or [rem]oves a server specified by a Name or ID from a blacklist. **Bot owner only.** +`;cmdcooldown` `;cmdcd` | `;cmdcd "some cmd" 5` | Sets a cooldown per user for a command. Set 0 to clear. +`;allcmdcooldowns` `;acmdcds` | `;acmdcds` | Shows a list of all commands and their respective cooldowns. +`;srvrfilterinv` `;sfi` | `;sfi disable` | Enables or disables automatic deleting of invites on the server. +`;chnlfilterinv` `;cfi` | `;cfi enable #general-chat` | Enables or disables automatic deleting of invites on the channel.If no channel supplied, it will default to current one. Use ALL to apply to all existing channels at once. +`;srvrfilterwords` `;sfw` | `;sfw disable` | Enables or disables automatic deleting of messages containing forbidden words on the server. +`;chnlfilterwords` `;cfw` | `;cfw enable #general-chat` | Enables or disables automatic deleting of messages containing banned words on the channel.If no channel supplied, it will default to current one. Use ALL to apply to all existing channels at once. +`;fw` | `;fw poop` | Adds or removes (if it exists) a word from the list of filtered words +`;lstfilterwords` `;lfw` | `;lfw` | Shows a list of filtered words + +### Gambling +Command and aliases | Description | Usage +----------------|--------------|------- +`$raffle` | `$raffle` or `$raffle RoleName` | Prints a name and ID of a random user from the online list from the (optional) role. +`$cash` `$$$` | `$$$` or `$$$ @SomeGuy` | Check how much NadekoFlowers a person has. (Defaults to yourself) +`$cash` `$$$` | `$$$` or `$$$ @SomeGuy` | Check how much NadekoFlowers a person has. (Defaults to yourself) +`$give` | `$give 1 "@SomeGuy"` | Give someone a certain amount of NadekoFlowers +`$award` | `$award 100 @person` | Gives someone a certain amount of flowers. **Bot owner only.** +`$award` | `$award 100 @person` | Gives someone a certain amount of flowers. **Bot owner only.** +`$take` | `$take 1 "@someguy"` | Takes a certain amount of flowers from someone. **Bot owner only.** +`$take` | `$take 1 "@someguy"` | Takes a certain amount of flowers from someone. **Bot owner only.** +`$betroll` `$br` | `$br 5` | Bets a certain amount of NadekoFlowers and rolls a dice. Rolling over 66 yields x2 flowers, over 90 - x3 and 100 x10. +`$leaderboard` `$lb` | `$lb` | Displays bot currency leaderboard +`$race` | `$race` | Starts a new animal race. +`$joinrace` `$jr` | `$jr` or `$jr 5` | Joins a new race. You can specify an amount of flowers for betting (optional). You will get YourBet*(participants-1) back if you win. +`$roll` | `$roll` or `$roll 7` or `$roll 3d5` | 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. +`$roll` | `$roll` or `$roll 7` or `$roll 3d5` | 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. +`$roll` | `$roll` or `$roll 7` or `$roll 3d5` | 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. +`$rolluo` | `$rolluo` or `$rolluo 7` or `$rolluo 3d5` | 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` | `$rolluo` or `$rolluo 7` or `$rolluo 3d5` | 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. +`$nroll` | `$nroll 5` (rolls 0-5) or `$nroll 5-15` | Rolls in a given range. +`$draw` | `$draw` or `$draw 5` | Draws a card from the deck.If you supply number X, she draws up to 5 cards from the deck. +`$shuffle` `$sh` | `$sh` | Reshuffles all cards back into the deck. +`$flip` | `$flip` or `$flip 3` | Flips coin(s) - heads or tails, and shows an image. +`$betflip` `$bf` | `$bf 5 heads` or `$bf 3 t` | Bet to guess will the result be heads or tails. Guessing award you double flowers you've bet. + +### ClashOfClans +Command and aliases | Description | Usage +----------------|--------------|------- +`,createwar` `,cw` | `,cw 15 The Enemy Clan` | Creates a new war by specifying a size (>10 and multiple of 5) and enemy clan name. +`,startwar` `,sw` | `,sw 15` | Starts a war with a given number. +`,listwar` `,lw` | `,lw [war_number] or ,lw` | Shows the active war claims by a number. Shows all wars in a short way if no number is specified. +`,claim` `,call` `,c` | `,call [war_number] [base_number] [optional_other_name]` | Claims a certain base from a certain war. You can supply a name in the third optional argument to claim in someone else's place. +`,claimfinish1` `,cf1` | `,cf [war_number] [optional_other_name]` | Finish your claim with 1 stars if you destroyed a base. Optional second argument finishes for someone else. +`,claimfinish2` `,cf2` | `,cf [war_number] [optional_other_name]` | Finish your claim with 2 stars if you destroyed a base. Optional second argument finishes for someone else. +`,claimfinish` `,cf` `,cf3` `,claimfinish3` | `,cf [war_number] [optional_other_name]` | Finish your claim with 3 stars if you destroyed a base. Optional second argument finishes for someone else. +`,endwar` `,ew` | `,ew [war_number]` | Ends the war with a given index. +`,unclaim` `,ucall` `,uc` | `,uc [war_number] [optional_other_name]` | Removes your claim from a certain war. Optional second argument denotes a person in whose place to unclaim + +### Games +Command and aliases | Description | Usage +----------------|--------------|------- +`>choose` | `>choose Get up;Sleep;Sleep more` | Chooses a thing from a list of things +`>8ball` | `>8ball should i do something` | Ask the 8ball a yes/no question. +`>rps` | `>rps scissors` | Play a game of rocket paperclip scissors with Nadeko. +`>linux` | `>linux Spyware Windows` | Prints a customizable Linux interjection +`>leet` | `>leet 3 Hello` | Converts a text to leetspeak with 6 (1-6) severity levels +`>poll` | `>poll Question?;Answer1;Answ 2;A_3` | Creates a poll, only person who has manage server permission can do it. +`>pollend` | `>pollend` | Stops active poll on this server and prints the results in this channel. +`>pick` | `>pick` | Picks a flower planted in this channel. +`>plant` | `>plant` | Spend a flower to plant it in this channel. (If bot is restarted or crashes, flower will be lost) +`>gencurrency` `>gc` | `>gc` | Toggles currency generation on this channel. Every posted message will have 2% chance to spawn a NadekoFlower. Requires Manage Messages permission. **Requires ManageMessages server permission.** +`>typestart` | `>typestart` | Starts a typing contest. +`>typestop` | `>typestop` | Stops a typing contest on the current channel. +`>typeadd` | `>typeadd wordswords` | Adds a new article to the typing contest. **Bot owner only.** +`>trivia` `>t` | `>t nohint` or `>t 5 nohint` | 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. +`>tl` | `>tl` | Shows a current trivia leaderboard. +`>tq` | `>tq` | Quits current trivia after current question. + +### Pokemon +Command and aliases | Description | Usage +----------------|--------------|------- +`>poke_cmd` | poke_usage | poke_desc + +### Administration +Command and aliases | Description | Usage +----------------|--------------|------- +`.restart` | `.restart` | Restarts the bot. Might not work. **Bot owner only.** +`.delmsgoncmd` | `.delmsgoncmd` | Toggles the automatic deletion of user's successful command message to prevent chat flood. **Server Manager Only.** **Requires Administrator server permission.** +`.setrole` `.sr` | `.sr @User Guest` | Sets a role for a given user. **Requires ManageRoles server permission.** +`.removerole` `.rr` | `.rr @User Admin` | Removes a role from a given user. **Requires ManageRoles server permission.** +`.renamerole` `.renr` | `.renr "First role" SecondRole` | Renames a role. Roles you are renaming must be lower than bot's highest role. **Manage Roles Permissions.** **Requires ManageRoles server permission.** +`.removeallroles` `.rar` | `.rar @User` | Removes all roles from a mentioned user. **Requires ManageRoles server permission.** +`.createrole` `.cr` | `.cr Awesome Role` | Creates a role with a given name. **Requires ManageRoles server permission.** +`.rolecolor` `.rc` | `.rc Admin 255 200 100` or `.rc Admin ffba55` | Set a role's color to the hex or 0-255 rgb color value provided. **Requires ManageRoles server permission.** +`.ban` `.b` | `.b "@some Guy" Your behaviour is toxic.` | Bans a user by id or name with an optional message. **Requires BanMembers server permission.** +`.softban` `.sb` | `.sb "@some Guy" Your behaviour is toxic.` | Bans and then unbans a user by id or name with an optional message. **Requires BanMembers server permission.** +`.kick` `.k` | `.k "@some Guy" Your behaviour is toxic.` | Kicks a mentioned user. **Requires KickMembers server permission.** +`.mute` | `.mute @Someone` | Mutes a mentioned user in a voice channel. **Requires MuteMembers server permission.** +`.unmute` | `.unmute "@Someguy"` or `.unmute "@Someguy" "@Someguy"` | Unmutes mentioned user or users. **Requires MuteMembers server permission.** +`.deafen` `.deaf` | `.deaf "@Someguy"` or `.deaf "@Someguy" "@Someguy"` | Deafens mentioned user or users. **Requires DeafenMembers server permission.** +`.undeafen` `.undef` | `.undef "@Someguy"` or `.undef "@Someguy" "@Someguy"` | Undeafens mentioned user or users. **Requires DeafenMembers server permission.** +`.delvoichanl` `.dvch` | `.dvch VoiceChannelName` | Deletes a voice channel with a given name. **Requires ManageChannels server permission.** +`.creatvoichanl` `.cvch` | `.cvch VoiceChannelName` | Creates a new voice channel with a given name. **Requires ManageChannels server permission.** +`.deltxtchanl` `.dtch` | `.dtch TextChannelName` | Deletes a text channel with a given name. **Requires ManageChannels server permission.** +`.creatxtchanl` `.ctch` | `.ctch TextChannelName` | Creates a new text channel with a given name. **Requires ManageChannels server permission.** +`.settopic` `.st` | `.st My new topic` | Sets a topic on the current channel. **Requires ManageChannels server permission.** +`.setchanlname` `.schn` | `.schn NewName` | Changed the name of the current channel. **Requires ManageChannels server permission.** +`.prune` `.clr` | `.prune` or `.prune 5` or `.prune @Someone` or `.prune @Someone X` | `.prune` removes all nadeko's messages in the last 100 messages.`.prune X` removes last X 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 'Someone's' messages in the channel. +`.prune` `.clr` | `.prune` or `.prune 5` or `.prune @Someone` or `.prune @Someone X` | `.prune` removes all nadeko's messages in the last 100 messages.`.prune X` removes last X 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 'Someone's' messages in the channel. **Requires ManageMessages server permission.** +`.prune` `.clr` | `.prune` or `.prune 5` or `.prune @Someone` or `.prune @Someone X` | `.prune` removes all nadeko's messages in the last 100 messages.`.prune X` removes last X 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 'Someone's' messages in the channel. **Requires ManageMessages server permission.** +`.die` | `@NadekoBot die` | Works only for the owner. Shuts the bot down. **Bot owner only.** +`.setname` `.newnm` | `.newnm BotName` | Give the bot a new name. **Bot owner only.** +`.setavatar` `.setav` | `.setav http://i.imgur.com/xTG3a1I.jpg` | Sets a new avatar image for the NadekoBot. Argument is a direct link to an image. **Bot owner only.** +`.setgame` | `.setgame Playing with kwoth` | Sets the bots game. **Bot owner only.** +`.send` | `.send sid` | Send a message to someone on a different server through the bot. **Bot owner only.** +`.announce` | `.announce Useless spam` | Sends a message to all servers' general channel bot is connected to. **Bot owner only.** +`.savechat` | `.savechat 150` | Saves a number of messages to a text file and sends it to you. **Bot owner only.** +`.mentionrole` `.menro` | `.menro RoleName` | Mentions every person from the provided role or roles (separated by a ',') on this server. Requires you to have mention everyone permission. **Requires MentionEveryone server permission.** +`.donators` | `.donators` | List of lovely people who donated to keep this project alive. +`.donadd` | `.donadd Donate Amount` | Add a donator to the database. **Kwoth Only** **Bot owner only.** +`.autoassignrole` `.aar` | `.aar` to disable, `.aar Role Name` to enable | Automaticaly assigns a specified role to every user who joins the server. **Requires ManageRoles server permission.** +`.scsc` | `.scsc` | Starts an instance of cross server channel. You will get a token as a DM that other people will use to tune in to the same instance. **Bot owner only.** +`.jcsc` | `.jcsc` | Joins current channel to an instance of cross server channel using the token. **Requires ManageServer server permission.** +`.lcsc` | `.lcsc` | Leaves Cross server channel instance from this channel. **Requires ManageServer server permission.** +`.logserver` | `.logserver` | Logs server activity in this channel. **Requires Administrator server permission.** **Bot owner only.** +`.logignore` | `.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.** +`.userpresence` | `.userpresence` | Starts logging to this channel when someone from the server goes online/offline/idle. **Requires Administrator server permission.** +`.voicepresence` | `.voicerpresence` | Toggles logging to this channel whenever someone joins or leaves a voice channel you are in right now. **Requires Administrator server permission.** +`.repeatinvoke` `.repinv` | `.repinv` | Immediately shows the repeat message and restarts the timer. **Requires ManageMessages server permission.** +`.repeat` | `.repeat 5 Hello there` | Repeat a message every X minutes. If no parameters are specified, repeat is disabled. +`.repeat` | `.repeat 5 Hello there` | Repeat a message every X minutes. If no parameters are specified, repeat is disabled. +`.migratedata` | `.migratedata` | Migrate data from old bot configuration **Bot owner only.** +`.rotateplaying` `.ropl` | `.ropl` | Toggles rotation of playing status of the dynamic strings you specified earlier. **Bot owner only.** +`.addplaying` `.adpl` | `.adpl` | Adds a specified string to the list of playing strings to rotate. Supported placeholders: %servers%, %users%, %playing%, %queued% **Bot owner only.** +`.listplaying` `.lipl` | `.lipl` | Lists all playing statuses with their corresponding number. **Bot owner only.** +`.removeplaying` `.rmlp` `.repl` | `.rmpl` | Removes a playing string on a given number. **Bot owner only.** +`.slowmode` | `.slowmode` | Toggles slow mode. When ON, users will be able to send only 1 message every 5 seconds. +`.asar` | `.asar Gamer` | Adds a role, or list of roles separated by whitespace(use quotations for multiword roles) to the list of self-assignable roles. **Requires ManageRoles server permission.** +`.rsar` | `.rsar` | Removes a specified role from the list of self-assignable roles. **Requires ManageRoles server permission.** +`.lsar` | `.lsar` | Lists all self-assignable roles. +`.togglexclsar` `.tesar` | `.tesar` | toggle whether the self-assigned roles should be exclusive **Requires ManageRoles server permission.** +`.iam` | `.iam Gamer` | Adds a role to you that you choose. Role must be on a list of self-assignable roles. +`.iamnot` `.iamn` | `.iamn Gamer` | Removes a role to you that you choose. Role must be on a list of self-assignable roles. +`.leave` | `.leave 123123123331` | Makes Nadeko leave the server. Either name or id required. **Bot owner only.** +`.greetdel` | `.greetdel` | Toggles automatic deletion of greet messages. **Requires ManageServer server permission.** +`.greet` | `.greet` | Toggles anouncements on the current channel when someone joins the server. **Requires ManageServer server permission.** +`.greetmsg` | `.greetmsg Welcome, %user%.` | 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. **Requires ManageServer server permission.** +`.greetdm` | `.greetdm` | Toggles whether the greet messages will be sent in a DM (This is separate from greet - you can have both, any or neither enabled). **Requires ManageServer server permission.** +`.greetdmmsg` | `.greetdmmsg Welcome to the server, %user%`. | Sets a new join announcement message which will be sent to the user who joined. Type %user% if you want to mention the new member. Using it with no message will show the current DM greet message. **Requires ManageServer server permission.** +`.bye` | `.bye` | Toggles anouncements on the current channel when someone leaves the server. **Requires ManageServer server permission.** +`.byemsg` | `.byemsg %user% has left.` | Sets a new leave announcement message. Type %user% if you want to mention the new member. Using it with no message will show the current bye message. **Requires ManageServer server permission.** +`.byedel` | `.byedel` | Toggles automatic deletion of bye messages. **Requires ManageServer server permission.** +`.voice+text` `.v+t` | `.voice+text` | Creates a text channel for each voice channel only users in that voice channel can see.If you are server owner, keep in mind you will see them all the time regardless. **Requires ManageRoles server permission.** **Requires ManageChannels server permission.** +`.cleanvplust` `.cv+t` | `.cleanv+t` | Deletes all text channels ending in `-voice` for which voicechannels are not found. **Use at your own risk. Needs Manage Roles and Manage Channels Permissions.** **Requires ManageChannels server permission.** **Requires ManageRoles server permission.** + +### Music +Command and aliases | Description | Usage +----------------|--------------|------- +`!!next` `!!n` | `!!n` | Goes to the next song in the queue. You have to be in the same voice channel as the bot. +`!!stop` `!!s` | `!!s` | Stops the music and clears the playlist. Stays in the channel. +`!!destroy` `!!d` | `!!d` | Completely stops the music and unbinds the bot from the channel. (may cause weird behaviour) +`!!pause` `!!p` | `!!p` | Pauses or Unpauses the song. +`!!queue` `!!q` `!!yq` | `!!q Dream Of Venice` | Queue a song using keywords or a link. Bot will join your voice channel.**You must be in a voice channel**. +`!!soundcloudqueue` `!!sq` | `!!sq Dream Of Venice` | Queue a soundcloud song using keywords. Bot will join your voice channel.**You must be in a voice channel**. +`!!listqueue` `!!lq` | `!!lq` or `!!lq 2` | Lists 15 currently queued songs per page. Default page is 1. +`!!nowplaying` `!!np` | `!!np` | Shows the song currently playing. +`!!volume` `!!vol` | `!!vol 50` | Sets the music volume 0-100% +`!!defvol` `!!dv` | `!!dv 80` | Sets the default music volume when music playback is started (0-100). Persists through restarts. +`!!shuffle` `!!sh` | `!!sh` | Shuffles the current playlist. +`!!playlist` `!!pl` | `!!pl playlist link or name` | Queues up to 500 songs from a youtube playlist specified by a link, or keywords. +`!!soundcloudpl` `!!scpl` | `!!scpl soundcloudseturl` | Queue a soundcloud playlist using a link. +`!!localplaylst` `!!lopl` | `!!lopl C:/music/classical` | Queues all songs from a directory. **Bot owner only.** +`!!radio` `!!ra` | `!!ra radio link here` | Queues a radio stream from a link. It can be a direct mp3 radio stream, .m3u, .pls .asx or .xspf (Usage Video: ) +`!!local` `!!lo` | `!!lo C:/music/mysong.mp3` | Queues a local file by specifying a full path. **Bot owner only.** +`!!move` `!!mv` | `!!mv` | Moves the bot to your voice channel. (works only if music is already playing) +`!!remove` `!!rm` | `!!rm 5` | Remove a song by its # in the queue, or 'all' to remove whole queue. +`!!remove` `!!rm` | `!!rm 5` | Remove a song by its # in the queue, or 'all' to remove whole queue. +`!!movesong` `!!ms` | `!! ms 5>3` | Moves a song from one position to another. +`!!setmaxqueue` `!!smq` | `!!smq 50` or `!!smq` | Sets a maximum queue size. Supply 0 or no argument to have no limit. +`!!reptcursong` `!!rcs` | `!!rcs` | Toggles repeat of current song. +`!!rpeatplaylst` `!!rpl` | `!!rpl` | Toggles repeat of all songs in the queue (every song that finishes is added to the end of the queue). +`!!save` | `!!save classical1` | Saves a playlist under a certain name. Name must be no longer than 20 characters and mustn't contain dashes. +`!!load` | `!!load classical-1` | Loads a playlist under a certain name. +`!!playlists` `!!pls` | `!!pls 1` | Lists all playlists. Paginated. 20 per page. Default page is 0. +`!!deleteplaylist` `!!delpls` | `!!delpls animu-5` | Deletes a saved playlist. Only if you made it or if you are the bot owner. +`!!goto` | `!!goto 30` | Goes to a specific time in seconds in a song. +`!!getlink` `!!gl` | `!!gl` | Shows a link to the song in the queue by index, or the currently playing song by default. +`!!autoplay` `!!ap` | `!!ap` | Toggles autoplay - When the song is finished, automatically queue a related youtube song. (Works only for youtube songs and when queue is empty) + +### Help +Command and aliases | Description | Usage +----------------|--------------|------- +`-modules` `-mdls` | `-modules` or `.modules` | List all bot modules. +`-commands` `-cmds` | `-commands` or `.commands` | List all of the bot's commands from a certain module. +`-h` `-help` | `-h !m q` or just `-h` | Either shows a help for a single command, or PMs you help link if no arguments are specified. +`-hgit` | `-hgit` | Generates the commandlist.md file. **Bot owner only.** +`-readme` `-guide` | `-readme` or `-guide` | Sends a readme and a guide links to the channel. +`-donate` | `-donate` or `~donate` | Instructions for helping the project! + +### Utility +Command and aliases | Description | Usage +----------------|--------------|------- +`.whosplaying` | `.whoplays Overwatch` | Shows a list of users who are playing the specified game. +`.inrole` | `.inrole Role` | Lists every person from the provided role or roles (separated by a ',') on this server. If the list is too long for 1 message, you must have Manage Messages permission. +`.checkmyperms` | `.checkmyperms` | Checks your userspecific permissions on this channel. +`.userid` `.uid` | `.uid` or `.uid "@SomeGuy"` | Shows user ID. +`.channelid` `.cid` | `.cid` | Shows current channel ID. +`.serverid` `.sid` | `.sid` | Shows current server ID. +`.roles` | `.roles` | List all roles on this server or a single user if specified. +`.channeltopic` `.ct` | `.ct` | Sends current channel's topic as a message. +`.stats` | `.stats` | Shows some basic stats for Nadeko. +`.showemojis` `.se` | `.se A message full of SPECIALemojis` | Shows a name and a link to every SPECIAL emoji in the message. +`.serverinfo` `.sinfo` | `.sinfo Some Server` | Shows info about the server the bot is on. If no channel is supplied, it defaults to current one. +`.channelinfo` `.cinfo` | `.cinfo #some-channel` | Shows info about the channel. If no channel is supplied, it defaults to current one. +`.userinfo` `.uinfo` | `.uinfo @SomeUser` | Shows info about the user. If no user is supplied, it defaults a user running the command. +`...` | `... abc` | Shows a random quote with a specified name. +`..` | `.. sayhi Hi` | Adds a new quote with the specified name and message. +`.deletequote` `.delq` | `.delq abc` | Deletes all quotes with the specified keyword. You have to either be bot owner or the creator of the quote to delete it. +`.delallq` `.daq` | `.delallq kek` | Deletes all quotes on a specified keyword. +`.remind` | `.remind me 1d5h Do something` or `.remind #general Start now!` | 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. +`.remindtemplate` | `.remindtemplate %user%, you gotta do %message%!` | 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.** + +### Searches +Command and aliases | Description | Usage +----------------|--------------|------- +`~weather` `~we` | `~we Moscow RF` | Shows weather data for a specified city and a country. BOTH ARE REQUIRED. Use country abbrevations. +`~youtube` `~yt` | `~yt query` | Searches youtubes and shows the first result +`~imdb` | `~imdb Batman vs Superman` | Queries imdb for movies or series, show first result. +`~randomcat` `~meow` | `~meow` | Shows a random cat image. +`~randomdog` `~woof` | `~woof` | Shows a random dog image. +`~img` `~i` | `~i cute kitten` | Pulls the first image found using a search parameter. Use ~ir for different results. +`~ir` | `~ir cute kitten` | Pulls a random image using a search parameter. +`~lmgtfy` | `~lmgtfy query` | Google something for an idiot. +`~google` `~g` | `~google query` | Get a google search link for some terms. +`~hearthstone` `~hs` | `~hs Ysera` | Searches for a Hearthstone card and shows its image. Takes a while to complete. +`~urbandict` `~ud` | `~ud Pineapple` | Searches Urban Dictionary for a word. +`~#` | `~# ff` | Searches Tagdef.com for a hashtag. +`~catfact` | `~catfact` | Shows a random catfact from +`~revav` | `~revav "@SomeGuy"` | Returns a google reverse image search for someone's avatar. +`~revimg` | `~revimg Image link` | Returns a google reverse image search for an image from a link. +`~safebooru` | `~safebooru yuri+kissing` | Shows a random image from safebooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) +`~wikipedia` `~wiki` | `~wiki query` | Gives you back a wikipedia link +`~color` `~clr` | `~clr 00ff00` | Shows you what color corresponds to that hex. +`~videocall` | `~videocall "@SomeGuy"` | Creates a private video call link for you and other mentioned people. The link is sent to mentioned people via a private message. +`~av` `~avatar` | `~av "@SomeGuy"` | Shows a mentioned person's avatar. +`~calculate` `~calc` | `~calc 1+1` | Evaluate a mathematical expression. +`~calcops` | `~calcops` | Shows all available operations in .calc command +`~lolban` | `~lolban` | Shows top banned champions ordered by ban rate. +`~memelist` | `~memelist` | Pulls a list of memes you can use with `~memegen` from http://memegen.link/templates/ +`~memegen` | `~memegen biw "gets iced coffee" "in the winter"` | Generates a meme from memelist with top and bottom text. +`~anime` `~ani` `~aq` | `~ani aquarion evol` | Queries anilist for an anime and shows the first result. +`~manga` `~mang` `~mq` | `~mq Shingeki no kyojin` | Queries anilist for a manga and shows the first result. +`~yomama` `~ym` | `~ym` | Shows a random joke from +`~randjoke` `~rj` | `~rj` | Shows a random joke from +`~chucknorris` `~cn` | `~cn` | Shows a random chucknorris joke from +`~wowjoke` | `~wowjoke` | Get one of Kwoth's penultimate WoW jokes. +`~magicitem` `~mi` | `~mi` | Shows a random magicitem from +`~osu` | `~osu Name` or `~osu Name taiko` | Shows osu stats for a player. +`~osub` | `~osub https://osu.ppy.sh/s/127712` | Shows information about an osu beatmap. +`~osu5` | `~osu5 Name` | Displays a user's top 5 plays. +`~pokemon` `~poke` | `~poke Sylveon` | Searches for a pokemon. +`~pokemonability` `~pokeab` | `~pokeab "water gun"` | Searches for a pokemon ability. +`~hitbox` `~hb` | `~hitbox SomeStreamer` | Notifies this channel when a certain user starts streaming. **Requires ManageMessages server permission.** +`~twitch` `~tw` | `~twitch SomeStreamer` | Notifies this channel when a certain user starts streaming. **Requires ManageMessages server permission.** +`~beam` `~bm` | `~beam SomeStreamer` | Notifies this channel when a certain user starts streaming. **Requires ManageMessages server permission.** +`~liststreams` `~ls` | `~ls` | Lists all streams you are following on this server. +`~removestream` `~rms` | `~rms SomeGuy` | Removes notifications of a certain streamer on this channel. +`~checkstream` `~cs` | `~cs twitch MyFavStreamer` | Checks if a user is online on a certain streaming platform. +`~convertlist` | `~convertlist` | List of the convertable dimensions and currencies. +`~convert` | `~convert m>km 1000` | Convert quantities from>to. + +### Translator +Command and aliases | Description | Usage +----------------|--------------|------- +`~translate` `~trans` | `~trans en>fr Hello` | Translates from>to text. From the given language to the destiation language. +`~translangs` | `~translangs` | List the valid languages for translation. + +### NSFW +Command and aliases | Description | Usage +----------------|--------------|------- +`~hentai` | `~hentai yuri+kissing` | Shows a random NSFW hentai image from gelbooru and danbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) +`~danbooru` | `~danbooru yuri+kissing` | Shows a random hentai image from danbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) +`~gelbooru` | `~gelbooru yuri+kissing` | Shows a random hentai image from gelbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) +`~rule34` | `~rule34 yuri+kissing` | Shows a random image from rule34.xx with a given tag. Tag is optional but preffered. (multiple tags are appended with +) +`~e621` | `~e621 yuri kissing` | Shows a random hentai image from e621.net with a given tag. Tag is optional but preffered. Use spaces for multiple tags. +`~cp` | `~cp` | We all know where this will lead you to. +`~boobs` | `~boobs` | Real adult content. +`~butts` `~ass` `~butt` | `~butts` or `~ass` | Real adult content. + +### CustomReactions +Command and aliases | Description | Usage +----------------|--------------|------- +`.addcustreact` `.acr` | `.acr "hello" Hi there %user%` | Add a custom reaction with a trigger and a response. Running this command in server requires Administration permission. Running this command in DM is Bot Owner only and adds a new global custom reaction. Guide here: +`.listcustreact` `.lcr` | `.lcr 1` | Lists global or server custom reactions (15 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. +`.delcustreact` `.dcr` | `.dcr 5` | Deletes a custom reaction on a specific index. If ran in DM, it is bot owner only and deletes a global custom reaction. If ran in a server, it requires Administration priviledges and removes server custom reaction. From f468edbfc20c456e4c001f6f9db67d10a00d44e4 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Mon, 10 Oct 2016 00:44:50 +0200 Subject: [PATCH 63/74] tests, docs from dev --- docs/Commands List.md | 360 +++++++++++++++++ docs/Contribution Guide.md | 7 + docs/Custom Reactions.md | 69 ++++ docs/Donate.md | 17 + docs/Frequently Asked Questions.md | 70 ++++ docs/JSON Explanations.md | 60 +++ docs/Readme.md | 29 ++ docs/about.md | 13 + docs/commandlist.md | 363 ------------------ docs/commandslist.md | 311 --------------- docs/guides/Building from Source.md | 8 + .../Docker Guide.md} | 4 +- docs/{LinuxSetup.md => guides/Linux Guide.md} | 99 ++--- docs/guides/OSX Guide.md | 167 ++++++++ .../Windows Guide.md} | 25 +- docs/guides/mii-chan.md | 2 + docs/index.md | 48 ++- docs/index.rst | 1 - docs/license.md | 19 - src/NadekoBot/Modules/Help/Help.cs | 2 +- src/tests/Tests.cs | 26 +- 21 files changed, 922 insertions(+), 778 deletions(-) create mode 100644 docs/Commands List.md create mode 100644 docs/Contribution Guide.md create mode 100644 docs/Custom Reactions.md create mode 100644 docs/Donate.md create mode 100644 docs/Frequently Asked Questions.md create mode 100644 docs/JSON Explanations.md create mode 100644 docs/Readme.md create mode 100644 docs/about.md delete mode 100644 docs/commandlist.md delete mode 100644 docs/commandslist.md create mode 100644 docs/guides/Building from Source.md rename docs/{DockerGuide.md => guides/Docker Guide.md} (97%) rename docs/{LinuxSetup.md => guides/Linux Guide.md} (80%) create mode 100644 docs/guides/OSX Guide.md rename docs/{ComprehensiveGuide.md => guides/Windows Guide.md} (86%) create mode 100644 docs/guides/mii-chan.md delete mode 100644 docs/index.rst delete mode 100644 docs/license.md diff --git a/docs/Commands List.md b/docs/Commands List.md new file mode 100644 index 00000000..675b3f62 --- /dev/null +++ b/docs/Commands List.md @@ -0,0 +1,360 @@ + +### Help +Command and aliases | Description | Usage +----------------|--------------|------- +`-h`, `-help`, `@BotName help`, `@BotName h`, `~h` | Either shows a help for a single command, or PMs you help link if no arguments are specified. | `-h !m q` or just `-h` +`-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`, `~donate` | Instructions for helping the project! | `-donate` or `~donate` +`-modules`, `.modules` | List all bot modules. | `-modules` or `.modules` +`-commands`, `.commands` | List all of the bot's commands from a certain module. | `-commands` or `.commands` + +### Administration +Command and aliases | Description | Usage +----------------|--------------|------- +`.grdel` | Toggles automatic deletion of greet and bye messages. **Needs Manage Server Permissions.**| `.grdel` +`.greet` | Toggles anouncements on the current channel when someone joins the server. **Needs Manage Server Permissions.**| `.greet` +`.greetmsg` | Sets a new join announcement message. Type %user% if you want to mention the new member. Using it with no message will show the current greet message. **Needs Manage Server Permissions.**| `.greetmsg Welcome, %user%.` +`.bye` | Toggles anouncements on the current channel when someone leaves the server. | `.bye` +`.byemsg` | Sets a new leave announcement message. Type %user% if you want to mention the new member. Using it with no message will show the current bye message. **Needs Manage Server Permissions.**| `.byemsg %user% has left.` +`.byepm` | Toggles whether the good bye messages will be sent in a PM or in the text channel. **Needs Manage Server Permissions.**| `.byepm` +`.greetpm` | Toggles whether the greet messages will be sent in a PM or in the text channel. **Needs Manage Server Permissions.**| `.greetpm` +`.spmom` | Toggles whether mentions of other offline users on your server will send a pm to them. **Needs Manage Server Permissions.**| `.spmom` +`.logserver` | Toggles logging in this channel. Logs every message sent/deleted/edited on the server. **Bot Owner Only!** | `.logserver` +`.logignore` | Toggles whether the .logserver command ignores this channel. Useful if you have hidden admin channel and public log channel. **Bot Owner Only!**| `.logignore` +`.userpresence` | Starts logging to this channel when someone from the server goes online/offline/idle. **Needs Manage Server Permissions.**| `.userpresence` +`.voicepresence` | Toggles logging to this channel whenever someone joins or leaves a voice channel you are in right now. **Needs Manage Server Permissions.**| `.voicerpresence` +`.repeatinvoke`, `.repinv` | Immediately shows the repeat message and restarts the timer. **Needs Manage Messages Permissions.**| `.repinv` +`.repeat` | Repeat a message every X minutes. If no parameters are specified, repeat is disabled. **Needs Manage Messages Permissions.** |`.repeat 5 Hello there` +`.rotateplaying`, `.ropl` | Toggles rotation of playing status of the dynamic strings you specified earlier. **Bot Owner Only!** | `.ropl` +`.addplaying`, `.adpl` | Adds a specified string to the list of playing strings to rotate. Supported placeholders: %servers%, %users%, %playing%, %queued%, %trivia% **Bot Owner Only!**| `.adpl` +`.listplaying`, `.lipl` | Lists all playing statuses with their corresponding number. **Bot Owner Only!**| `.lipl` +`.removeplaying`, `.repl`, `.rmpl` | Removes a playing string on a given number. **Bot Owner Only!**| `.rmpl` +`.slowmode` | Toggles slow mode. When ON, users will be able to send only 1 message every 5 seconds. **Needs Manage Messages Permissions.**| `.slowmode` +`.cleanv+t`, `.cv+t` | Deletes all text channels ending in `-voice` for which voicechannels are not found. **Use at your own risk. Needs Manage Roles and Manage Channels Permissions.** | `.cleanv+t` +`.voice+text`, `.v+t` | Creates a text channel for each voice channel only users in that voice channel can see.If you are server owner, keep in mind you will see them all the time regardless. **Needs Manage Roles and Manage Channels Permissions.**| `.voice+text` +`.scsc` | Starts an instance of cross server channel. You will get a token as a DM that other people will use to tune in to the same instance. **Bot Owner Only.** | `.scsc` +`.jcsc` | Joins current channel to an instance of cross server channel using the token. **Needs Manage Server Permissions.**| `.jcsc` +`.lcsc` | Leaves Cross server channel instance from this channel. **Needs Manage Server Permissions.**| `.lcsc` +`.asar` | Adds a role, or list of roles separated by whitespace(use quotations for multiword roles) to the list of self-assignable roles. **Needs Manage Roles Permissions.**| `.asar Gamer` +`.rsar` | Removes a specified role from the list of self-assignable roles. | `.rsar` +`.lsar` | Lists all self-assignable roles. | `.lsar` +`.togglexclsar`, `.tesar` | toggle whether the self-assigned roles should be exclusive | `.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 role to you that you choose. Role must be on a list of self-assignable roles. | `.iamn Gamer` +`.addcustreact`, `.acr` | Add a custom reaction. Guide here: **Bot Owner Only!** | `.acr "hello" Hi there %user%` +`.listcustreact`, `.lcr` | Lists custom reactions (paginated with 30 commands per page). Use 'all' instead of page number to get all custom reactions DM-ed to you. |`.lcr 1` +`.showcustreact`, `.scr` | Shows all possible responses from a single custom reaction. |`.scr %mention% bb` +`.editcustreact`, `.ecr` | Edits a custom reaction, arguments are custom reactions name, index to change, and a (multiword) message **Bot Owner Only** | `.ecr "%mention% disguise" 2 Test 123` +`.delcustreact`, `.dcr` | Deletes a custom reaction with given name (and index). **Bot Owner Only.**| `.dcr index` +`.autoassignrole`, `.aar` | Automaticaly assigns a specified role to every user who joins the server. **Needs Manage Roles Permissions.** |`.aar` to disable, `.aar Role Name` to enable +`.leave` | Makes Nadeko leave the server. Either name or id required. **Bot Owner Only!**| `.leave 123123123331` +`.listincidents`, `.lin` | List all UNREAD incidents and flags them as read. **Needs Manage Server Permissions.**| `.lin` +`.listallincidents`, `.lain` | Sends you a file containing all incidents and flags them as read. **Needs Manage Server Permissions.**| `.lain` +`.delmsgoncmd` | Toggles the automatic deletion of user's successful command message to prevent chat flood. **Server Manager Only.** | `.delmsgoncmd` +`.restart` | Restarts the bot. Might not work. **Bot Owner Only** | `.restart` +`.setrole`, `.sr` | Sets a role for a given user. **Needs Manage Roles Permissions.**| `.sr @User Guest` +`.removerole`, `.rr` | Removes a role from a given user. **Needs Manage Roles Permissions.**| `.rr @User Admin` +`.renamerole`, `.renr` | Renames a role. Roles you are renaming must be lower than bot's highest role. **Manage Roles Permissions.** | `.renr "First role" SecondRole` +`.removeallroles`, `.rar` | Removes all roles from a mentioned user. **Needs Manage Roles Permissions.**| `.rar @User` +`.createrole`, `.cr` | Creates a role with a given name. **Needs Manage Roles Permissions.**| `.cr Awesome Role` +`.rolecolor`, `.rc` | Set a role's color to the hex or 0-255 rgb color value provided. **Needs Manage Roles Permissions.** | `.rc Admin 255 200 100` or `.rc Admin ffba55` +`.ban`, `.b` | Bans a user by id or name with an optional message. **Needs Ban Permissions.**| `.b "@some Guy" Your behaviour is toxic.` +`.softban`, `.sb` | Bans and then unbans a user by id or name with an optional message. **Needs Ban Permissions.**| `.sb "@some Guy" Your behaviour is toxic.` +`.kick`, `.k` | Kicks a mentioned user. **Needs Kick Permissions.**| `.k "@some Guy" Your behaviour is toxic.` +`.mute` | Mutes mentioned user or users. **Needs Mute Permissions.**| `.mute "@Someguy"` or `.mute "@Someguy" "@Someguy"` +`.unmute` | Unmutes mentioned user or users. **Needs Mute Permissions.**| `.unmute "@Someguy"` or `.unmute "@Someguy" "@Someguy"` +`.deafen`, `.deaf` | Deafens mentioned user or users. **Needs Deafen Permissions.**| `.deaf "@Someguy"` or `.deaf "@Someguy" "@Someguy"` +`.undeafen`, `.undef` | Undeafens mentioned user or users. **Needs Deafen Permissions.** | `.undef "@Someguy"` or `.undef "@Someguy" "@Someguy"` +`.delvoichanl`, `.dvch` | Deletes a voice channel with a given name. **Needs Manage Channel Permissions.**| `.dvch VoiceChannelName` +`.creatvoichanl`, `.cvch` | Creates a new voice channel with a given name. **Needs Manage Channel Permissions.** | `.cvch VoiceChannelName` +`.deltxtchanl`, `.dtch` | Deletes a text channel with a given name. **Needs Manage Channel Permissions.** | `.dtch TextChannelName` +`.creatxtchanl`, `.ctch` | Creates a new text channel with a given name. **Needs Manage Channel Permissions.** | `.ctch TextChannelName` +`.settopic`, `.st` | Sets a topic on the current channel. **Needs Manage Channel Permissions.** | `.st My new topic` +`.setchanlname`, `.schn` | Changed the name of the current channel. **Needs Manage Channel Permissions.**| `.schn NewName` +`.heap` | Shows allocated memory - **Bot Owner Only!** | `.heap` +`.prune`, `.clr` | `.prune` removes all nadeko's messages in the last 100 messages.`.prune X` removes last X 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 'Someone's' messages in the channel. **Needs Manage Messages Permissions**| `.prune` or `.prune 5` or `.prune @Someone` or `.prune @Someone X` +`.die` | Shuts the bot down and notifies users about the restart. **Bot Owner Only!** | `.die` +`.setname`, `.newnm` | Give the bot a new name. **Bot Owner Only!** | `.newnm BotName` +`.newavatar`, `.setavatar` | Sets a new avatar image for the NadekoBot. Argument is a direct link to an image. **Bot Owner Only!** | `.setavatar http://i.imgur.com/xTG3a1I.jpg` +`.setgame` | Sets the bots game. **Bot Owner Only!** | `.setgame Playing with kwoth` +`.send` | Send a message to someone on a different server through the bot. **Bot Owner Only!** | `.send sid|u:uid Hello user!` or `.send sid|c:cid Message to channel!` (cid = channel id, sid = server id) +`.mentionrole`, `.menro` | Mentions every person from the provided role or roles (separated by a ',') on this server. Requires you to have mention everyone permission. | `.menro RoleName` +`.unstuck` | Clears the message queue. **Bot Owner Only!** | `.unstuck` +`.donators` | List of lovely people who donated to keep this project alive. | `.donators` +`.donadd` | Add a donator to the database. **Kwoth Only** | `.donadd Donate Amount` +`.announce` | Sends a message to all servers' general channel bot is connected to.**Bot Owner Only!** | `.announce Useless spam` +`.savechat` | Saves a number of messages to a text file and sends it to you. **Bot Owner Only** | `.savechat 150` + +### Utility +Command and aliases | Description | Usage +----------------|--------------|------- +`.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 Start now!` +`.remindmsg` | 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!** | `.remindmsg do something else` +`.serverinfo`, `.sinfo` | Shows info about the server the bot is on. If no channel 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` +`.whoplays` | Shows a list of users who are playing the specified game. | `.whoplays Overwatch` +`.inrole` | Lists every person from the provided role or roles (separated by a ',') on this server. If the list is too long for 1 message, you must have Manage Messages permission. | `.inrole Role` +`.checkmyperms` | Checks your userspecific permissions on this channel. | `.checkmyperms` +`.stats` | Shows some basic stats for Nadeko. | `.stats` +`.dysyd` | Shows some basic stats for Nadeko. | `.dysyd` +`.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 all roles on this server or a single user if specified. | `.roles` +`.channeltopic`, `.ct` | Sends current channel's topic as a message. | `.ct` + +### Permissions +Command and aliases | Description | Usage +----------------|--------------|------- +`;chnlfilterinv`, `;cfi` | Enables or disables automatic deleting of invites on the channel.If no channel supplied, it will default to current one. Use ALL to apply to all existing channels at once. | `;cfi enable #general-chat` +`;srvrfilterinv`, `;sfi` | Enables or disables automatic deleting of invites on the server. | `;sfi disable` +`;chnlfilterwords`, `;cfw` | Enables or disables automatic deleting of messages containing banned words on the channel.If no channel supplied, it will default to current one. Use ALL to apply to all existing channels at once. | `;cfw enable #general-chat` +`;addfilterword`, `;afw` | Adds a new word to the list of filtered words | `;afw poop` +`;rmvfilterword`, `;rfw` | Removes the word from the list of filtered words | `;rw poop` +`;lstfilterwords`, `;lfw` | Shows a list of filtered words | `;lfw` +`;srvrfilterwords`, `;sfw` | Enables or disables automatic deleting of messages containing forbidden words on the server. | `;sfw disable` +`;permrole`, `;pr` | Sets a role which can change permissions. Or supply no parameters to find out the current one. Default one is 'Nadeko'. | `;pr role` +`;rolepermscopy`, `;rpc` | Copies BOT PERMISSIONS (not discord permissions) from one role to another. |`;rpc Some Role ~ Some other role` +`;chnlpermscopy`, `;cpc` | Copies BOT PERMISSIONS (not discord permissions) from one channel to another. |`;cpc Some Channel ~ Some other channel` +`;usrpermscopy`, `;upc` | Copies BOT PERMISSIONS (not discord permissions) from one role to another. |`;upc @SomeUser ~ @SomeOtherUser` +`;verbose`, `;v` | Sets whether to show when a command/module is blocked. | `;verbose true` +`;srvrperms`, `;sp` | Shows banned permissions for this server. | `;sp` +`;roleperms`, `;rp` | Shows banned permissions for a certain role. No argument means for everyone. | `;rp AwesomeRole` +`;chnlperms`, `;cp` | Shows banned permissions for a certain channel. No argument means for this channel. | `;cp #dev` +`;userperms`, `;up` | Shows banned permissions for a certain user. No argument means for yourself. | `;up Kwoth` +`;srvrmdl`, `;sm` | Sets a module's permission at the server level. | `;sm "module name" enable` +`;srvrcmd`, `;sc` | Sets a command's permission at the server level. | `;sc "command name" disable` +`;rolemdl`, `;rm` | Sets a module's permission at the role level. | `;rm "module name" enable MyRole` +`;rolecmd`, `;rc` | Sets a command's permission at the role level. | `;rc "command name" disable MyRole` +`;chnlmdl`, `;cm` | Sets a module's permission at the channel level. | `;cm "module name" enable SomeChannel` +`;chnlcmd`, `;cc` | Sets a command's permission at the channel level. | `;cc "command name" enable SomeChannel` +`;usrmdl`, `;um` | Sets a module's permission at the user level. | `;um "module name" enable SomeUsername` +`;usrcmd`, `;uc` | Sets a command's permission at the user level. | `;uc "command name" enable SomeUsername` +`;allsrvrmdls`, `;asm` | Sets permissions for all modules at the server level. | `;asm [enable/disable]` +`;allsrvrcmds`, `;asc` | Sets permissions for all commands from a certain module at the server level. | `;asc "module name" [enable/disable]` +`;allchnlmdls`, `;acm` | Sets permissions for all modules at the channel level. | `;acm [enable/disable] SomeChannel` +`;allchnlcmds`, `;acc` | Sets permissions for all commands from a certain module at the channel level. | `;acc "module name" [enable/disable] SomeChannel` +`;allrolemdls`, `;arm` | Sets permissions for all modules at the role level. | `;arm [enable/disable] MyRole` +`;allrolecmds`, `;arc` | Sets permissions for all commands from a certain module at the role level. | `;arc "module name" [enable/disable] MyRole` +`;ubl` | Blacklists a mentioned user. **Bot Owner Only!**| `;ubl [user_mention]` +`;uubl` | Unblacklists a mentioned user. **Bot Owner Only!** | `;uubl [user_mention]` +`;cbl` | Blacklists a mentioned channel (#general for example). | `;cbl #some_channel` +`;cubl` | Unblacklists a mentioned channel (#general for example). | `;cubl #some_channel` +`;sbl` | Blacklists a server by a name or id (#general for example). **BOT OWNER ONLY** | `;sbl [servername/serverid]` +`;cmdcooldown`, `;cmdcd` | Sets a cooldown per user for a command. Set 0 to clear. **Needs Manager Messages Permissions**| `;cmdcd "some cmd" 5` +`;allcmdcooldowns`, `;acmdcds` | Shows a list of all commands and their respective cooldowns. | `;acmdcds` + +### Conversations +Command and aliases | Description | Usage +----------------|--------------|------- +`..` | Adds a new quote with the specified name (single word) and message (no limit). | `.. abc My message` +`...` | Shows a random quote with a specified name. | `... abc` +`..qdel`, `..quotedelete` | Deletes all quotes with the specified keyword. You have to either be bot owner or the creator of the quote to delete it. | `..qdel abc` +`@BotName rip` | Shows a grave image of someone with a start year | `@NadekoBot rip @Someone 2000` +`@BotName die` | Works only for the owner. Shuts the bot down. | `@NadekoBot die` +`@BotName do you love me` | Replies with positive answer only to the bot owner. | `@NadekoBot do you love me` +`@BotName how are you`, `@BotName how are you?` | Replies positive only if bot owner is online. | `@NadekoBot how are you` +`@BotName fire` | Shows a unicode fire message. Optional parameter [x] tells her how many times to repeat the fire. | `@NadekoBot fire [x]` +`@BotName dump` | Dumps all of the invites it can to dump.txt.** Owner Only.** | `@NadekoBot dump` +`@BotName ab` | Try to get 'abalabahaha'| `@NadekoBot ab` + +### Gambling +Command and aliases | Description | Usage +----------------|--------------|------- +`$draw` | Draws a card from the deck.If you supply number [x], she draws up to 5 cards from the deck. | `$draw [x]` +`$shuffle`, `$sh` | Reshuffles all cards back into the deck.|`$shuffle` +`$flip` | Flips coin(s) - heads or tails, and shows an image. | `$flip` or `$flip 3` +`$betflip`, `$bf` | Bet to guess will the result be heads or tails. Guessing award you double flowers you've bet. | `$bf 5 heads` or `$bf 3 t` +`$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. | `$roll` or `$roll 7` or `$roll 3d5` +`$rolluo` | Rolls 0-100. If you supply a number [x] it rolls up to 30 normal dice (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` +`$race` | Starts a new animal race. | `$race` +`$joinrace`, `$jr` | Joins a new race. You can specify an amount of flowers for betting (optional). You will get YourBet*(participants-1) back if you win. | `$jr` or `$jr 5` +`$raffle` | Prints a name and ID of a random user from the online list from the (optional) role. | `$raffle` or `$raffle RoleName` +`$$$` | Check how much NadekoFlowers a person has. (Defaults to yourself) |`$$$` or `$$$ @Someone` +`$give` | Give someone a certain amount of NadekoFlowers|`$give 1 "@SomeGuy"` +`$award` | Gives someone a certain amount of flowers. **Bot Owner Only!** | `$award 100 @person` +`$take` | Takes a certain amount of flowers from someone. **Bot Owner Only!** | `$take 1 "@someguy"` +`$betroll`, `$br` | Bets a certain amount of NadekoFlowers and rolls a dice. Rolling over 66 yields x2 flowers, over 90 - x3 and 100 x10. | `$br 5` +`$leaderboard`, `$lb` | Displays bot currency leaderboard | `$lb` + +### Games +Command and aliases | Description | Usage +----------------|--------------|------- +`>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 nohint` or `>t 5 nohint` +`>tl` | Shows a current trivia leaderboard. | `>tl` +`>tq` | Quits current trivia after current question. | `>tq` +`>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. Owner only. | `>typeadd wordswords` +`>poll` | Creates a poll, only person who has manage server permission can do it. **Needs Manage Server Permissions**| `>poll Question?;Answer1;Answ 2;A_3` +`>pollend` | Stops active poll on this server and prints the results in this channel. | `>pollend` +`>pick` | Picks a flower planted in this channel. | `>pick` +`>plant` | Spend a flower to plant it in this channel. (If bot is restarted or crashes, flower will be lost) | `>plant` +`>gencurrency`, `>gc` | Toggles currency generation on this channel. Every posted message will have 2% chance to spawn a NadekoFlower. Optional parameter cooldown time in minutes, 5 minutes by default. Requires Manage Messages permission. | `>gc` or `>gc 60` +`>leet` | Converts a text to leetspeak with 6 (1-6) severity levels | `>leet 3 Hello` +`>choose` | Chooses a thing from a list of things | `>choose Get up;Sleep;Sleep more` +`>8ball` | Ask the 8ball a yes/no question. | `>8ball should i do something` +`>rps` | Play a game of rocket paperclip scissors with Nadeko. | `>rps scissors` +`>linux` | Prints a customizable Linux interjection | `>linux Spyware Windows` + +### Music +Command and aliases | Description | Usage +----------------|--------------|------- +`!!next`, `!!n`, `!!skip` | Goes to the next song in the queue. You have to be in the same voice channel as the bot. | `!!n` +`!!stop`, `!!s` | Stops the music and clears the playlist. Stays in the channel. | `!!s` +`!!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` +`!!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` +`!!soundcloudqueue`, `!!sq` | Queue a soundcloud song using keywords. Bot will join your voice channel.**You must be in a voice channel**. | `!!sq Dream Of Venice` +`!!listqueue`, `!!lq` | Lists 15 currently queued songs per page. Default page is 1. | `!!lq` or `!!lq 2` +`!!nowplaying`, `!!np` | Shows the song currently playing. | `!!np` +`!!volume`, `!!vol` | Sets the music volume 0-100% | `!!vol 50` +`!!defvol`, `!!dv` | Sets the default music volume when music playback is started (0-100). Persists through restarts. | `!!dv 80` +`!!mute`, `!!min` | Sets the music volume to 0% | `!!min` +`!!max` | Sets the music volume to 100%. | `!!max` +`!!half` | Sets the music volume to 50%. | `!!half` +`!!shuffle`, `!!sh` | Shuffles the current playlist. | `!!sh` +`!!playlist`, `!!pl` | Queues up to 500 songs from a youtube playlist specified by a link, or keywords. | `!!pl playlist link or name` +`!!soundcloudpl`, `!!scpl` | Queue a soundcloud playlist using a link. | `!!scpl soundcloudseturl` +`!!localplaylst`, `!!lopl` | Queues all songs from a directory. **Bot Owner Only!** | `!!lopl C:/music/classical` +`!!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` +`!!move`, `!!mv` | Moves the bot to your voice channel. (works only if music is already playing) | `!!mv` +`!!remove`, `!!rm` | Remove a song by its # in the queue, or 'all' to remove whole queue. | `!!rm 5` +`!!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` +`!!cleanup` | Cleans up hanging voice connections. **Bot Owner Only!** | `!!cleanup` +`!!reptcursong`, `!!rcs` | Toggles repeat of current song. | `!!rcs` +`!!rpeatplaylst`, `!!rpl` | Toggles repeat of all songs in the queue (every song that finishes is added to the end of the queue). | `!!rpl` +`!!save` | Saves a playlist under a certain name. Name must be no longer than 20 characters and mustn't contain dashes. | `!!save classical1` +`!!load` | Loads a playlist under a certain name. | `!!load classical-1` +`!!playlists`, `!!pls` | Lists all playlists. Paginated. 20 per page. Default page is 0. |`!!pls 1` +`!!deleteplaylist`, `!!delpls` | Deletes a saved playlist. Only if you made it or if you are the bot owner. | `!!delpls animu-5` +`!!goto` | Goes to a specific time in seconds in a song. | `!!goto 30` +`!!getlink`, `!!gl` | Shows a link to the song in the queue by index, or the currently playing song by default. | `!!gl` +`!!autoplay`, `!!ap` | Toggles autoplay - When the song is finished, automatically queue a related youtube song. (Works only for youtube songs and when queue is empty) | `!!ap` + +### Searches +Command and aliases | Description | Usage +----------------|--------------|------- +`~lolchamp` | Shows League Of Legends champion statistics. If there are spaces/apostrophes or in the name - omit them. Optional second parameter is a role. |`~lolchamp Riven` or `~lolchamp Annie sup` +`~lolban` | Shows top 6 banned champions ordered by ban rate. Ban these champions and you will be Plat 5 in no time. | `~lolban` +`~hitbox`, `~hb` | Notifies this channel when a certain user starts streaming. | `~hitbox SomeStreamer` +`~twitch`, `~tw` | Notifies this channel when a certain user starts streaming. | `~twitch SomeStreamer` +`~beam`, `~bm` | Notifies this channel when a certain user starts streaming. | `~beam SomeStreamer` +`~checkhitbox`, `~chhb` | Checks if a certain user is streaming on the hitbox platform. | `~chhb SomeStreamer` +`~checktwitch`, `~chtw` | Checks if a certain user is streaming on the twitch platform. | `~chtw SomeStreamer` +`~checkbeam`, `~chbm` | Checks if a certain user is streaming on the beam platform. | `~chbm SomeStreamer` +`~removestream`, `~rms` | Removes notifications of a certain streamer on this channel. | `~rms SomeGuy` +`~liststreams`, `~ls` | Lists all streams you are following on this server. | `~ls` +`~convert` | Convert quantities from>to. | `~convert m>km 1000` +`~convertlist` | List of the convertable dimensions and currencies. +`~wowjoke` | Get one of Kwoth's penultimate WoW jokes. | `~wowjoke` +`~calculate`, `~calc` | Evaluate a mathematical expression. | `~calc 1+1` +`~osu` | Shows osu stats for a player. | `~osu Name` or `~osu Name taiko` +`~osu b` | Shows information about an osu beatmap. |`~osu b https://osu.ppy.sh/s/127712` +`~osu top5` | Displays a user's top 5 plays. |`~osu top5 Name` +`~pokemon`, `~poke` | Searches for a pokemon. | `~poke Sylveon` +`~pokemonability`, `~pokeab` | Searches for a pokemon ability. | `~pokeab "water gun"` +`~memelist` | Pulls a list of memes you can use with `~memegen` from http://memegen.link/templates/ | `~memelist` +`~memegen` | Generates a meme from memelist with top and bottom text. | `~memegen biw "gets iced coffee" "in the winter"` +`~we` | Shows weather data for a specified city and a country. BOTH ARE REQUIRED. Use country abbrevations. | `~we Moscow RF` +`~yt` | Searches youtubes and shows the first result | `~yt query` +`~ani`, `~anime`, `~aq` | Queries anilist for an anime and shows the first result. | `~aq aquarion evol` +`~imdb` | Queries imdb for movies or series, show first result. | `~imdb Batman vs Superman` +`~mang`, `~manga`, `~mq` | Queries anilist for a manga and shows the first result. | `~mq Shingeki no kyojin` +`~randomcat`, `~meow` | Shows a random cat image. | `~meow` +`~randomdog`, `~woof` | Shows a random dog image. | `~woof` +`~i` | Pulls the first image found using a search parameter. Use ~ir for different results. | `~i cute kitten` +`~ir` | Pulls a random image using a search parameter. | `~ir cute kitten` +`~lmgtfy` | Google something for an idiot. | `~lmgtfy query` +`~google`, `~g` | Get a google search link for some terms. | `~google query` +`~hs` | Searches for a Hearthstone card and shows its image. Takes a while to complete. | `~hs Ysera` +`~ud` | Searches Urban Dictionary for a word. | `~ud Pineapple` +`~#` | Searches Tagdef.com for a hashtag. | `~# ff` +`~quote` | Shows a random quote. | `~quote` +`~catfact` | Shows a random catfact from | `~catfact` +`~yomama`, `~ym` | Shows a random joke from | `~ym` +`~randjoke`, `~rj` | Shows a random joke from | `~rj` +`~chucknorris`, `~cn` | Shows a random chucknorris joke from | `~cn` +`~magicitem`, `~mi` | Shows a random magicitem from | `~mi` +`~revav` | Returns a google reverse image search for someone's avatar. | `~revav "@SomeGuy"` +`~revimg` | Returns a google reverse image search for an image from a link. | `~revav Image link` +`~safebooru` | Shows a random image from safebooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) | `~safebooru yuri+kissing` +`~wiki` | Gives you back a wikipedia link | `~wiki query` +`~clr` | Shows you what color corresponds to that hex. | `~clr 00ff00` +`~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 "@SomeGuy"` +`~av`, `~avatar` | Shows a mentioned person's avatar. | `~av "@SomeGuy"` + +### NSFW +Command and aliases | Description | Usage +----------------|--------------|------- +`~hentai` | Shows a random NSFW hentai image from gelbooru and danbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) | `~hentai yuri+kissing` +`~danbooru` | Shows a random hentai image from danbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) | `~danbooru yuri+kissing` +`~gelbooru` | Shows a random hentai image from gelbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) | `~gelbooru yuri+kissing` +`~rule34` | Shows a random image from rule34.xx with a given tag. Tag is optional but preffered. (multiple tags are appended with +) | `~rule34 yuri+kissing` +`~e621` | Shows a random hentai image from e621.net with a given tag. Tag is optional but preffered. Use spaces for multiple tags. | `~e621 yuri kissing` +`~cp` | We all know where this will lead you to. | `~cp` +`~boobs` | Real adult content. | `~boobs` +`~butts`, `~ass`, `~butt` | Real adult content. | `~butts` or `~ass` + +### ClashOfClans +Command and aliases | Description | Usage +----------------|--------------|------- +`,createwar`, `,cw` | Creates a new war by specifying a size (>10 and multiple of 5) and enemy clan name. | `,cw 15 The Enemy Clan` +`,startwar`, `,sw` | Starts a war with a given number. | `,sw 15` +`,listwar`, `,lw` | Shows the active war claims by a number. Shows all wars in a short way if no number is specified. | `,lw [war_number] or ,lw` +`,claim`, `,call`, `,c` | Claims a certain base from a certain war. You can supply a name in the third optional argument to claim in someone else's place. | `,call [war_number] [base_number] [optional_other_name]` +`,claimfinish`, `,cf`, `,cf3`, `,claimfinish3` | Finish your claim with 3 stars if you destroyed a base. Optional second argument finishes for someone else. | `,cf [war_number] [optional_other_name]` +`,claimfinish2`, `,cf2` | Finish your claim with 2 stars if you destroyed a base. Optional second argument finishes for someone else. | `,cf [war_number] [optional_other_name]` +`,claimfinish1`, `,cf1` | Finish your claim with 1 stars if you destroyed a base. Optional second argument finishes for someone else. | `,cf [war_number] [optional_other_name]` +`,unclaim`, `,uncall`, `,uc` | Removes your claim from a certain war. Optional second argument denotes a person in whose place to unclaim | `,uc [war_number] [optional_other_name]` +`,endwar`, `,ew` | Ends the war with a given index. | `,ew [war_number]` + +### Pokegame +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` +`>heal` | Heals someone. Revives those who fainted. Costs a NadekoFlower | `>heal @someone` +`>type` | Get the poketype of the target. | `>type @someone` +`>settype` | Set your poketype. Costs a NadekoFlower. | `>settype fire` + +### Translator +Command and aliases | Description | Usage +----------------|--------------|------- +`~translate`, `~trans` | Translates from>to text. From the given language to the destiation language. | `~trans en>fr Hello` +`~translangs` | List the valid languages for translation. | `~translangs` or `~translangs language` + +### Customreactions +Command and aliases | Description | Usage +----------------|--------------|------- +`\o\` | Custom reaction. | `\o\` +`/o/` | Custom reaction. | `/o/` +`moveto` | Custom reaction. | `moveto` +`comeatmebro` | Custom reaction. | `comeatmebro` +`e` | Custom reaction. | `e` +`@BotName insult`, `<@!116275390695079945> insult` | Custom reaction. | `%mention% insult` +`@BotName praise`, `<@!116275390695079945> praise` | Custom reaction. | `%mention% praise` +`@BotName pat`, `<@!116275390695079945> pat` | Custom reaction. | `%mention% pat` +`@BotName cry`, `<@!116275390695079945> cry` | Custom reaction. | `%mention% cry` +`@BotName are you real?`, `<@!116275390695079945> are you real?` | Custom reaction. | `%mention% are you real?` +`@BotName are you there?`, `<@!116275390695079945> are you there?` | Custom reaction. | `%mention% are you there?` +`@BotName draw`, `<@!116275390695079945> draw` | Custom reaction. | `%mention% draw` +`@BotName bb`, `<@!116275390695079945> bb` | Custom reaction. | `%mention% bb` +`@BotName call`, `<@!116275390695079945> call` | Custom reaction. | `%mention% call` +`@BotName disguise`, `<@!116275390695079945> disguise` | Custom reaction. | `%mention% disguise` +`@BotName inv`, `<@!116275390695079945> inv` | Custom reaction. | `%mention% inv` +`@BotName threaten`, `<@!116275390695079945> threaten` | Custom reaction. | `%mention% threaten` +`@BotName archer`, `<@!116275390695079945> archer` | Custom reaction. | `%mention% archer` + +### Trello +Command and aliases | Description | Usage +----------------|--------------|------- +`trello bind` | Bind a trello bot to a single channel. You will receive notifications from your board when something is added or edited. **Bot Owner Only!**| `trello bind [board_id]` +`trello unbind` | Unbinds a bot from the channel and board. **Bot Owner Only!**| `trello unbind` +`trello lists`, `trello list` | Lists all lists, yo ;) **Bot Owner Only!**| `trello list` +`trello cards` | Lists all cards from the supplied list. You can supply either a name or an index. **Bot Owner Only!**| `trello cards index` diff --git a/docs/Contribution Guide.md b/docs/Contribution Guide.md new file mode 100644 index 00000000..41c7249a --- /dev/null +++ b/docs/Contribution Guide.md @@ -0,0 +1,7 @@ +### How to contribute + +1. Make Pull Requests to **DEV BRANCH** +2. Keep 1 Pull Request to a single feature +3. Explain what you did in the PR message + +Thanks for all the help ^_^ diff --git a/docs/Custom Reactions.md b/docs/Custom Reactions.md new file mode 100644 index 00000000..fc2dd0b5 --- /dev/null +++ b/docs/Custom Reactions.md @@ -0,0 +1,69 @@ +##Custom Reactions +

Every time you add or remove a custom reaction you will need to restart your bot with either .restart if you are hosting or Nadeko is on VPS, or .die if Nadeko is on Droplet

+

Important

+
    +
  • .acr.dcr, and .ecr Require you to be Bot Owner
  • +
  • Adding multiple commands of the same name will make Nadeko randomly select one of the command's responses
  • +
+###Commands and Their Use + + + + + + + + + + + + + + + + + + + + + + + + +
Command NameDescriptionExample
.acrAdds a Custom Reaction.acr Hello Hi!
.dcrDeletes an entire Custom Reaction or a Specified Response Index Number.dcr "command name" or .dcr "command name" 3
.lcrLists a specified page of Custom Commands.lcr Number i.e .lcr 2
.scrShows all responses to a command. Index Number will be in brackets [ ].scr Hello
.ecrEdit a custom reaction, needs: reaction's name, index to change, and new multiword response..ecr Hello 3 What's up
+

Now that we know the commands let's take a look at the arguments and placeholders available for .acr,

+

.addcustreact (.acr) takes two arguments: +

+
● First, The name of the command; this directly follows the .acr
+
- If your command name is more than 1 word use quotation marks;
i.e .acr Nice weather sure is > .acr "Nice weather" sure is
+
- Now everytime someone says "Nice weather" the bot will respond with, "sure is"
+
● Next, The Response, this follows the name of the command.
+
- i.e .acr "Nice weather"sure is

+###And finally on to the Placeholders +

There are currently four placeholders, which we will be looking at, with many more to come in the future.

+ + + + + + + + + + + + + + + + + + + + +
PlaceholderHow the placeholder worksExamples
%mention%The %mention% placeholder is triggered when you type @botname.acr "%mention% Hello" Hello! > User input: @botname Hello | Bot Replies: Hello!
%target%The %target% placeholder is used to make Nadeko Mention another person.acr "%mention% Hello" %target% Hi! > User inputs: "@botname Hello @somebody" + Bot replies: "Hi @somebody"
%user%The %user% placeholder mentions the person who said the command.acr "Who am i" You are %user%!
%rng%The %rng% generates a random number.acr Random %rng% +
+ + Thanks to Nekai for being creative. <3 + diff --git a/docs/Donate.md b/docs/Donate.md new file mode 100644 index 00000000..b33eed3a --- /dev/null +++ b/docs/Donate.md @@ -0,0 +1,17 @@ +##Donate to NadekoBot + +If you want to help Nadeko and Nadeko's team by donating, you can do that in the two of the following ways: + +###Patreon + +You can donate over [Patreon][Patreon] and support the project. + +[![img][img]](https://www.patreon.com/nadekobot) + + +###PayPal + +If you wish to donate over PayPal, you can send your donations to: `nadekodiscordbot@gmail.com` + +[Patreon]: https://www.patreon.com/nadekobot +[img]: http://www.mister-and-me.com/wp-content/plugins/patron-button-and-widgets-by-codebard/images/patreon-medium-button.png diff --git a/docs/Frequently Asked Questions.md b/docs/Frequently Asked Questions.md new file mode 100644 index 00000000..804444d4 --- /dev/null +++ b/docs/Frequently Asked Questions.md @@ -0,0 +1,70 @@ +#Frequently Asked Questions + + +###Question 1: How do I get Nadeko to join my server? +---- +**Answer:** Simply send Nadeko a Direct Message with -h and follow the link. **Only Server Owners can add the bot to the server** +###Question 2: I want to change permissions, but it isn't working! +---- +**Answer:** You must have the ;permsrole (by default this is the "Nadeko" role, for more details on permissions check [here](http://nadekobot.readthedocs.io/en/latest/Permissions%20System/ "Permissions")) + +**Please note:** *Only the Server Owner can change permissions without the "Nadeko" role*. +###Question 3: Music isn't working on Mac!! +---- +**Answer:** You will have to build `mono` from source. Simply follow the [mono-guide](http://www.mono-project.com/docs/compiling-mono/mac/ "Building mono"). +###Question 4: I want to disable NSFW on my server. +---- +**Answer:** To disable the NSFW Module for your server type, `;sm NSFW disable`. If this does not work refer to Question 2. +###Question 5: How do I get NadekoFlowers/Currency? +---- +**Answer:** You get NadekoFlowers by answering Trivia questions or picking them up after they have been generated with `>gc`, which you can then either plant (give away to a channel so that someone can pick it), gamble it with `$betflip`, `$betroll` and `$jr`, or spend on healing and setting your type in the Pokemon game. +###Question 6: I have an issue/bug/suggestion, where do I put it so it gets noticed? +----------- +**Answer:** First, check [issues](https://github.com/Kwoth/NadekoBot/issues "GitHub NadekoBot Issues"), then check the `#suggestions` in the Nadeko [help server](https://discord.gg/0ehQwTK2RBjAxzEY). + +If your problem or suggestion is not there, feel free to request it either in Issues or in `#suggestions`. +###Question 7: How do I use this command? +-------- +**Answer:** You can see the description and usage of certain commands by using `-h command` **i.e** `-h ;sm`. + +The whole list of commands can be found [here](http://nadekobot.readthedocs.io/en/latest/Commands%20List/ "Command List") +###Question 8: Music isn't working? +---- +**Answer:** Music is disabled on public Nadeko, it will be re-enabled later in the future. + +**If you would like music you must host Nadeko yourself**. Be sure you have FFMPEG installed correctly, read the [guide](http://nadekobot.readthedocs.io/en/latest/guides/Windows%20Guide/) for more info. +###Question 9: My music is still not working/very laggy? +---- +**Answer:** Try changing your discord [location][1], if this doesn't work be sure you have enabled the correct permissions for Nadeko. +[1]: https://support.discordapp.com/hc/en-us/articles/216661717-How-do-I-change-my-Voice-Server-Region- +###Question 10: I want to change data in the database (like NadekoFlowers or the pokemontypes of users, but how? +---- +**Answer:** Open data/nadekobot.sqlite using sqlitebrowser (or some alternative), Browse Data, select relevant table, change data, Write changes +###Question 11: The .greet and .bye commands doesn't work, but everything else is (From @Kong) +----- +**Answer:** Set a greeting message by using `.greetmsg YourMessageHere` and a bye-message by using `.byemsg YourMessageHere` +###Question 12: How do I import certs on linux? +------- +**Answer:** + +`certmgr -ssl https://discordapp.com` + +`certmgr -ssl https://gateway.discord.gg` +###Question 13: I want "BOT" tag with my bot a, is there a simple way? +---- +**Answer:** Yes, you can create an application using your account and use the APP BOT USER TOKEN from here: [DiscordApp][1] **NOTE: This will create a new bot account** +[1]:https://discordapp.com/developers/applications/me + +###Question 14: I made an application, but I can't add that new bot to my server, how do I invite it to my server? +---- +**Answer:** You need to use oauth link to add it to you server, just copy your CLIENT ID (that's in the same Developer page where you brought your token) and replace `12345678` in the link below: https://discordapp.com/oauth2/authorize?client_id=12345678&scope=bot&permissions=66186303 + +Follow this Detailed [Guide](http://discord.kongslien.net/guide.html) if you do not understand. +###Question 15:I'm building NadekoBot from source, but I get hundreds of (namespace) errors without changing anything!? +----- +**Answer:** Using Visual Studio, you can solve these errors by going to `Tools` -> `NuGet Package Manager` -> `Manage NuGet Packages for Solution`. Go to the Installed tab, select the Packages that were missing (usually `Newtonsoft.json` and `RestSharp`) and install them for all projects +###Question 16: My bot has all permissions but it's still saying, "Failed to add roles. Bot has insufficient permissions.". How do I fix this? +---------- +**Answer:** Discord has added a few new features and roles now follow hierarchy. This means you need to place your bot's role above every-other role your server has. + +**Please Note:** *The bot can only set/add all roles below its own highest role. It can not assign it's "highest role" to anyone else.* diff --git a/docs/JSON Explanations.md b/docs/JSON Explanations.md new file mode 100644 index 00000000..304e9e0e --- /dev/null +++ b/docs/JSON Explanations.md @@ -0,0 +1,60 @@ +###Setting up your Credentials +If you do not see `credentials.json` you will need to rename `credentials_example.json` to `credentials.json`. + +**This is how the unedited credentials look:** +```json +{ + "Token": "", + "ClientId": "116275390695079945", + "BotId": 1231231231231, + "OwnerIds": [ + 123123123123, + 5675675679845 + ], + "GoogleAPIKey": "", + "SoundCloudClientID": "", + "MashapeKey": "", + "LOLAPIKEY": "", + "TrelloAPPKey": "", + "OsuAPIKey": "", + "CarbonKey": "", +} +``` +####Required Parts ++ **Token** - Required to log in. Refer to this [guide](http://discord.kongslien.net/guide.html) ++ **OwnerIds** - Required for the **Owner-Only** commands. Seperate multiple Id's with a comma. ++ **BotId** - Required for custom reactions and conversation commands to work. + + **Important : Bot ID and Client ID are the same in newer bot accounts due to recent Discord API changes.** + +_BotId and the OwnerIds are **NOT** the names of the owner and the bot. If you do not know the id of your bot, keep the two random numbers in those fields and +run the bot then do `.uid @MyBotName` - this will give you your bot_id. +Do the same for yourself with `.uid @MyName` Put these numbers in their respective field of the credentials._ + +Setting up your API keys +==================== +####This part is completely optional, **However it is necessary for music to work properly** ++ **GoogleAPIKey** - Required for Youtube Song Search, Playlist queuing, and URL Shortener. `~i` and `~img`. + + You can get this api Key [here](https://console.developers.google.com/apis) ++ **SoundCloudClientID** - Required to queue soundloud songs from sc links. + + You will need to create a new app [here](http://soundcloud.com/you/apps). **Please note you must be logged into SoundCloud** + + You should come to a page that looks like this ![Imgur](http://i.imgur.com/RAZ2HDM.png) + + Simply click Register a new application and enter a name. + + After naming your app you will be brought to this page: ![Imgur](http://i.imgur.com/GH1gjKK.png) Copy the Client ID and click "save app" then paste the Client Id it into your `credentials.json` ++ **MashapeKey** - Required for Urban Disctionary, Hashtag search, and Hearthstone cards. + + You need to create an account on their [api marketplace](https://market.mashape.com/), after that go to `market.mashape.com/YOURNAMEHERE/applications/default-application` and press **Get the keys** in the top right corner. + + Copy the key and paste it into `credentials.json` ++ **LOLAPIKey** - Required for all League of Legends commands. + + You can get this key [here](http://api.champion.gg/) ++ **TrelloAppKey** - Required for the trello commands. + + You can get this key [here](https://trello.com/app-key) **Be sure you are logged into Trello first** ++ **OsuAPIKey** - Required for Osu commands + + You can get this key [here](https://osu.ppy.sh/p/api) **You will need to log in and like the soundcloud it may take a few tries** ++ **CarbonKey** -This key is for Carobnitex.net stats. + + Most likely unnecessary **Needed only if your bot is listed on Carbonitex.net** + +Config.json +=========== +In the folder where `NadekoBot.exe` is located you should also see a `Data` folder. In this folder you will find `config.json` among other files. +`config.json` contains user specific commands, such as: if DM's sent to the bot are forwarded to you, Blacklisted Ids, Servers, and channels...etc. + +**If you do not see** `config.json` **you need to rename** `config_example.json` **to** `config.json` diff --git a/docs/Readme.md b/docs/Readme.md new file mode 100644 index 00000000..7aefbd19 --- /dev/null +++ b/docs/Readme.md @@ -0,0 +1,29 @@ +##Readme for Commands List + +###Bot Owner Only + +- *Bot Owner Only* commands refer to the commands only the **owner** of the bot can use. +- *Bot Owner Only* commands do **not** refer to the owner of the **server**, just the owner of the **bot**. +- *Owner of the bot* is a person who is **hosting** his own bot, and his **ID** is inside of **credentials.json** file. +- You are **not** the bot **owner** if you invited the bot using **Carbonitex** or other invitation links. + +###Music on the public Nadeko + +- In case you got Nadeko in your server by the invitation from **Carbonitex**, our **GitHub** invite or **help (-h)**, music is disabled. +- Music is **disabled** due to large maintenance expenses, unless Kwoth is **testing** music module. +- If you want to have music module on your server, you will have to **host** the bot on your PC, or any of the external servers. +- How to **host** the bot, check the **guides** on the left side. + +###NadekoFlowers + +- NadekoFlowers is the **currency** of the public Nadeko. +- NadekoFlowers can be earned by playing **trivia**, or other games, like betting games. +- You can give NadekoFlowers to other users, using the command `$give X @person`. +- You can only give flowers you **own**. +- If you want to have **unlimited** number of flowers, you will have to **host** the bot. +- Command `$award X @person` can only be used by the *bot owner*. +- If you `>plant` the flower, flower will be avaliable for everyone to `>pick` it. In that case you will **lose** the flower. + +###Manage Permissions + +**These permissions refer to the permissions you can set in Discord settings for individual users or roles.** diff --git a/docs/about.md b/docs/about.md new file mode 100644 index 00000000..8435eda2 --- /dev/null +++ b/docs/about.md @@ -0,0 +1,13 @@ +## Terms of Use + +The MIT License (MIT) + +Copyright (c) 2016 NadekoBot Team + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + diff --git a/docs/commandlist.md b/docs/commandlist.md deleted file mode 100644 index 516eff12..00000000 --- a/docs/commandlist.md +++ /dev/null @@ -1,363 +0,0 @@ -######For more information and how to setup your own NadekoBot, go to: **http://github.com/Kwoth/NadekoBot/** -######You can donate on patreon: `https://patreon.com/nadekobot` -######or paypal: `nadekodiscordbot@gmail.com` - -#NadekoBot List Of Commands -Version: `NadekoBot v0.9.6054.4837` -### Help -Command and aliases | Description | Usage -----------------|--------------|------- -`-h`, `-help`, `@BotName help`, `@BotName h`, `~h` | Either shows a help for a single command, or PMs you help link if no arguments are specified. | `-h !m q` or just `-h` -`-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`, `~donate` | Instructions for helping the project! | `{Prefix}donate` or `~donate` -`-modules`, `.modules` | List all bot modules. | `{Prefix}modules` or `.modules` -`-commands`, `.commands` | List all of the bot's commands from a certain module. | `{Prefix}commands` or `.commands` - -### Administration -Command and aliases | Description | Usage -----------------|--------------|------- -`.grdel` | Toggles automatic deletion of greet and bye messages. | `.grdel` -`.greet` | Toggles anouncements on the current channel when someone joins the server. | `.greet` -`.greetmsg` | Sets a new join announcement message. Type %user% if you want to mention the new member. Using it with no message will show the current greet message. | `.greetmsg Welcome to the server, %user%.` -`.bye` | Toggles anouncements on the current channel when someone leaves the server. | `.bye` -`.byemsg` | Sets a new leave announcement message. Type %user% if you want to mention the new member. Using it with no message will show the current bye message. | `.byemsg %user% has left the server.` -`.byepm` | Toggles whether the good bye messages will be sent in a PM or in the text channel. | `.byepm` -`.greetpm` | Toggles whether the greet messages will be sent in a PM or in the text channel. | `.greetpm` -`.spmom` | Toggles whether mentions of other offline users on your server will send a pm to them. | `.spmom` -`.logserver` | Toggles logging in this channel. Logs every message sent/deleted/edited on the server. **Bot Owner Only!** | `.logserver` -`.logignore` | Toggles whether the .logserver command ignores this channel. Useful if you have hidden admin channel and public log channel. | `.logignore` -`.userpresence` | Starts logging to this channel when someone from the server goes online/offline/idle. | `.userpresence` -`.voicepresence` | Toggles logging to this channel whenever someone joins or leaves a voice channel you are in right now. | `{Prefix}voicerpresence` -`.repeatinvoke`, `.repinv` | Immediately shows the repeat message and restarts the timer. | `{Prefix}repinv` -`.repeat` | Repeat a message every X minutes. If no parameters are specified, repeat is disabled. Requires manage messages. | `.repeat 5 Hello there` -`.rotateplaying`, `.ropl` | Toggles rotation of playing status of the dynamic strings you specified earlier. | `.ropl` -`.addplaying`, `.adpl` | Adds a specified string to the list of playing strings to rotate. Supported placeholders: %servers%, %users%, %playing%, %queued%, %trivia% | `.adpl` -`.listplaying`, `.lipl` | Lists all playing statuses with their corresponding number. | `.lipl` -`.removeplaying`, `.repl`, `.rmpl` | Removes a playing string on a given number. | `.rmpl` -`.slowmode` | Toggles slow mode. When ON, users will be able to send only 1 message every 5 seconds. | `.slowmode` -`.cleanv+t`, `.cv+t` | Deletes all text channels ending in `-voice` for which voicechannels are not found. **Use at your own risk.** | `.cleanv+t` -`.voice+text`, `.v+t` | Creates a text channel for each voice channel only users in that voice channel can see.If you are server owner, keep in mind you will see them all the time regardless. | `.voice+text` -`.scsc` | Starts an instance of cross server channel. You will get a token as a DM that other people will use to tune in to the same instance. | `.scsc` -`.jcsc` | Joins current channel to an instance of cross server channel using the token. | `.jcsc` -`.lcsc` | Leaves Cross server channel instance from this channel. | `.lcsc` -`.asar` | Adds a role, or list of roles separated by whitespace(use quotations for multiword roles) to the list of self-assignable roles. | .asar Gamer -`.rsar` | Removes a specified role from the list of self-assignable roles. | `.rsar` -`.lsar` | Lists all self-assignable roles. | `.lsar` -`.togglexclsar`, `.tesar` | toggle whether the self-assigned roles should be exclusive | `.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 role to you that you choose. Role must be on a list of self-assignable roles. | .iamn Gamer -`.addcustreact`, `.acr` | Add a custom reaction. Guide here: **Bot Owner Only!** | `.acr "hello" I love saying hello to %user%` -`.listcustreact`, `.lcr` | Lists custom reactions (paginated with 30 commands per page). Use 'all' instead of page number to get all custom reactions DM-ed to you. | `.lcr 1` -`.showcustreact`, `.scr` | Shows all possible responses from a single custom reaction. | `.scr %mention% bb` -`.editcustreact`, `.ecr` | Edits a custom reaction, arguments are custom reactions name, index to change, and a (multiword) message **Bot Owner Only** | `.ecr "%mention% disguise" 2 Test 123` -`.delcustreact`, `.dcr` | Deletes a custom reaction with given name (and index). | `.dcr index` -`.autoassignrole`, `.aar` | Automaticaly assigns a specified role to every user who joins the server. Type `.aar` to disable, `.aar Role Name` to enable -`.leave` | Makes Nadeko leave the server. Either name or id required. | `.leave 123123123331` -`.listincidents`, `.lin` | List all UNREAD incidents and flags them as read. | `.lin` -`.listallincidents`, `.lain` | Sends you a file containing all incidents and flags them as read. | `.lain` -`.delmsgoncmd` | Toggles the automatic deletion of user's successful command message to prevent chat flood. Server Manager Only. | `.delmsgoncmd` -`.restart` | Restarts the bot. Might not work. **Bot Owner Only** | `.restart` -`.setrole`, `.sr` | Sets a role for a given user. | `.sr @User Guest` -`.removerole`, `.rr` | Removes a role from a given user. | `.rr @User Admin` -`.renamerole`, `.renr` | Renames a role. Role you are renaming must be lower than bot's highest role. | `.renr "First role" SecondRole` -`.removeallroles`, `.rar` | Removes all roles from a mentioned user. | `.rar @User` -`.createrole`, `.cr` | Creates a role with a given name. | `.cr Awesome Role` -`.rolecolor`, `.rc` | Set a role's color to the hex or 0-255 rgb color value provided. | `.rc Admin 255 200 100` or `.rc Admin ffba55` -`.ban`, `.b` | Bans a user by id or name with an optional message. | `.b "@some Guy" Your behaviour is toxic.` -`.softban`, `.sb` | Bans and then unbans a user by id or name with an optional message. | `.sb "@some Guy" Your behaviour is toxic.` -`.kick`, `.k` | Kicks a mentioned user. | `.k "@some Guy" Your behaviour is toxic.` -`.mute` | Mutes mentioned user or users. | `.mute "@Someguy"` or `.mute "@Someguy" "@Someguy"` -`.unmute` | Unmutes mentioned user or users. | `.unmute "@Someguy"` or `.unmute "@Someguy" "@Someguy"` -`.deafen`, `.deaf` | Deafens mentioned user or users | `.deaf "@Someguy"` or `.deaf "@Someguy" "@Someguy"` -`.undeafen`, `.undef` | Undeafens mentioned user or users | `.undef "@Someguy"` or `.undef "@Someguy" "@Someguy"` -`.delvoichanl`, `.dvch` | Deletes a voice channel with a given name. | `.dvch VoiceChannelName` -`.creatvoichanl`, `.cvch` | Creates a new voice channel with a given name. | `.cvch VoiceChannelName` -`.deltxtchanl`, `.dtch` | Deletes a text channel with a given name. | `.dtch TextChannelName` -`.creatxtchanl`, `.ctch` | Creates a new text channel with a given name. | `.ctch TextChannelName` -`.settopic`, `.st` | Sets a topic on the current channel. | `.st My new topic` -`.setchanlname`, `.schn` | Changed the name of the current channel.| `.schn NewName` -`.heap` | Shows allocated memory - **Bot Owner Only!** | `.heap` -`.prune`, `.clr` | `.prune` removes all nadeko's messages in the last 100 messages.`.prune X` removes last X 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 'Someone's' messages in the channel. | `.prune` or `.prune 5` or `.prune @Someone` or `.prune @Someone X` -`.die` | Shuts the bot down and notifies users about the restart. **Bot Owner Only!** | `.die` -`.setname`, `.newnm` | Give the bot a new name. **Bot Owner Only!** | .newnm BotName -`.newavatar`, `.setavatar` | Sets a new avatar image for the NadekoBot. Argument is a direct link to an image. **Bot Owner Only!** | `.setavatar https://i.ytimg.com/vi/WDudkR1eTMM/maxresdefault.jpg` -`.setgame` | Sets the bots game. **Bot Owner Only!** | `.setgame Playing with kwoth` -`.send` | Send a message to someone on a different server through the bot. **Bot Owner Only!** | `.send serverid|u:user_id Send this to a user!` or `.send serverid|c:channel_id Send this to a channel!` -`.mentionrole`, `.menro` | Mentions every person from the provided role or roles (separated by a ',') on this server. Requires you to have mention everyone permission. | `.menro RoleName` -`.unstuck` | Clears the message queue. **Bot Owner Only!** | `.unstuck` -`.donators` | List of lovely people who donated to keep this project alive. -`.donadd` | Add a donator to the database. | `.donadd Donate Amount` -`.announce` | Sends a message to all servers' general channel bot is connected to.**Bot Owner Only!** | `.announce Useless spam` -`.savechat` | Saves a number of messages to a text file and sends it to you. **Bot Owner Only** | `.savechat 150` - -### Utility -Command and aliases | Description | Usage -----------------|--------------|------- -`.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 Start now!` -`.remindmsg` | 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!** | `.remindmsg do something else` -`.serverinfo`, `.sinfo` | Shows info about the server the bot is on. If no channel 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` -`.whoplays` | Shows a list of users who are playing the specified game. | `.whoplays Overwatch` -`.inrole` | Lists every person from the provided role or roles (separated by a ',') on this server. If the list is too long for 1 message, you must have Manage Messages permission. | `.inrole Role` -`.checkmyperms` | Checks your userspecific permissions on this channel. | `.checkmyperms` -`.stats` | Shows some basic stats for Nadeko. | `.stats` -`.dysyd` | Shows some basic stats for Nadeko. | `.dysyd` -`.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 all roles on this server or a single user if specified. -`.channeltopic`, `.ct` | Sends current channel's topic as a message. | `.ct` - -### Permissions -Command and aliases | Description | Usage -----------------|--------------|------- -`;chnlfilterinv`, `;cfi` | Enables or disables automatic deleting of invites on the channel.If no channel supplied, it will default to current one. Use ALL to apply to all existing channels at once. | ;cfi enable #general-chat -`;srvrfilterinv`, `;sfi` | Enables or disables automatic deleting of invites on the server. | ;sfi disable -`;chnlfilterwords`, `;cfw` | Enables or disables automatic deleting of messages containing banned words on the channel.If no channel supplied, it will default to current one. Use ALL to apply to all existing channels at once. | ;cfw enable #general-chat -`;addfilterword`, `;afw` | Adds a new word to the list of filtered words | ;afw poop -`;rmvfilterword`, `;rfw` | Removes the word from the list of filtered words | ;rw poop -`;lstfilterwords`, `;lfw` | Shows a list of filtered words | ;lfw -`;srvrfilterwords`, `;sfw` | Enables or disables automatic deleting of messages containing forbidden words on the server. | ;sfw disable -`;permrole`, `;pr` | Sets a role which can change permissions. Or supply no parameters to find out the current one. Default one is 'Nadeko'. | `;pr role` -`;rolepermscopy`, `;rpc` | Copies BOT PERMISSIONS (not discord permissions) from one role to another. | `;rpc Some Role ~ Some other role` -`;chnlpermscopy`, `;cpc` | Copies BOT PERMISSIONS (not discord permissions) from one channel to another. | `;cpc Some Channel ~ Some other channel` -`;usrpermscopy`, `;upc` | Copies BOT PERMISSIONS (not discord permissions) from one role to another. | `;upc @SomeUser ~ @SomeOtherUser` -`;verbose`, `;v` | Sets whether to show when a command/module is blocked. | `;verbose true` -`;srvrperms`, `;sp` | Shows banned permissions for this server. | `;sp` -`;roleperms`, `;rp` | Shows banned permissions for a certain role. No argument means for everyone. | `;rp AwesomeRole` -`;chnlperms`, `;cp` | Shows banned permissions for a certain channel. No argument means for this channel. | `;cp #dev` -`;userperms`, `;up` | Shows banned permissions for a certain user. No argument means for yourself. | `;up Kwoth` -`;srvrmdl`, `;sm` | Sets a module's permission at the server level. | `;sm "module name" enable` -`;srvrcmd`, `;sc` | Sets a command's permission at the server level. | `;sc "command name" disable` -`;rolemdl`, `;rm` | Sets a module's permission at the role level. | `;rm "module name" enable MyRole` -`;rolecmd`, `;rc` | Sets a command's permission at the role level. | `;rc "command name" disable MyRole` -`;chnlmdl`, `;cm` | Sets a module's permission at the channel level. | `;cm "module name" enable SomeChannel` -`;chnlcmd`, `;cc` | Sets a command's permission at the channel level. | `;cc "command name" enable SomeChannel` -`;usrmdl`, `;um` | Sets a module's permission at the user level. | `;um "module name" enable SomeUsername` -`;usrcmd`, `;uc` | Sets a command's permission at the user level. | `;uc "command name" enable SomeUsername` -`;allsrvrmdls`, `;asm` | Sets permissions for all modules at the server level. | `;asm [enable/disable]` -`;allsrvrcmds`, `;asc` | Sets permissions for all commands from a certain module at the server level. | `;asc "module name" [enable/disable]` -`;allchnlmdls`, `;acm` | Sets permissions for all modules at the channel level. | `;acm [enable/disable] SomeChannel` -`;allchnlcmds`, `;acc` | Sets permissions for all commands from a certain module at the channel level. | `;acc "module name" [enable/disable] SomeChannel` -`;allrolemdls`, `;arm` | Sets permissions for all modules at the role level. | `;arm [enable/disable] MyRole` -`;allrolecmds`, `;arc` | Sets permissions for all commands from a certain module at the role level. | `;arc "module name" [enable/disable] MyRole` -`;ubl` | Blacklists a mentioned user. | `;ubl [user_mention]` -`;uubl` | Unblacklists a mentioned user. | `;uubl [user_mention]` -`;cbl` | Blacklists a mentioned channel (#general for example). | `;cbl #some_channel` -`;cubl` | Unblacklists a mentioned channel (#general for example). | `;cubl #some_channel` -`;sbl` | Blacklists a server by a name or id (#general for example). **BOT OWNER ONLY** | `;sbl [servername/serverid]` -`;cmdcooldown`, `;cmdcd` | Sets a cooldown per user for a command. Set 0 to clear. | `;cmdcd "some cmd" 5` -`;allcmdcooldowns`, `;acmdcds` | Shows a list of all commands and their respective cooldowns. - -### Conversations -Command and aliases | Description | Usage -----------------|--------------|------- -`..` | Adds a new quote with the specified name (single word) and message (no limit). | `.. abc My message` -`...` | Shows a random quote with a specified name. | `... abc` -`..qdel`, `..quotedelete` | Deletes all quotes with the specified keyword. You have to either be bot owner or the creator of the quote to delete it. | `..qdel abc` -`@BotName rip` | Shows a grave image of someone with a start year | @NadekoBot rip @Someone 2000 -`@BotName die` | Works only for the owner. Shuts the bot down. | `@NadekoBot die` -`@BotName do you love me` | Replies with positive answer only to the bot owner. | `@NadekoBot do you love me` -`@BotName how are you`, `@BotName how are you?` | Replies positive only if bot owner is online. | `@NadekoBot how are you` -`@BotName fire` | Shows a unicode fire message. Optional parameter [x] tells her how many times to repeat the fire. | `@NadekoBot fire [x]` -`@BotName dump` | Dumps all of the invites it can to dump.txt.** Owner Only.** | `@NadekoBot dump` -`@BotName ab` | Try to get 'abalabahaha'| `@NadekoBot ab` - -### Gambling -Command and aliases | Description | Usage -----------------|--------------|------- -`$draw` | Draws a card from the deck.If you supply number [x], she draws up to 5 cards from the deck. | `$draw [x]` -`$shuffle`, `$sh` | Reshuffles all cards back into the deck.|`$shuffle` -`$flip` | Flips coin(s) - heads or tails, and shows an image. | `$flip` or `$flip 3` -`$betflip`, `$bf` | Bet to guess will the result be heads or tails. Guessing award you double flowers you've bet. | `$bf 5 heads` or `$bf 3 t` -`$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. | `$roll` or `$roll 7` or `$roll 3d5` -`$rolluo` | Rolls 0-100. If you supply a number [x] it rolls up to 30 normal dice (unordered). If you split 2 numbers with letter d (xdy) it will roll x dice from 1 to y. | `$roll` or `$roll` 7 or `$roll 3d5` -`$nroll` | Rolls in a given range. | `$nroll 5` (rolls 0-5) or `$nroll 5-15` -`$race` | Starts a new animal race. | `$race` -`$joinrace`, `$jr` | Joins a new race. You can specify an amount of flowers for betting (optional). You will get YourBet*(participants-1) back if you win. | `$jr` or `$jr 5` -`$raffle` | Prints a name and ID of a random user from the online list from the (optional) role. | `$raffle` or `$raffle RoleName` -`$$$` | Check how much NadekoFlowers a person has. (Defaults to yourself) | `$$$` or `$$$ @Someone` -`$give` | Give someone a certain amount of NadekoFlowers|`$give 1 "@SomeGuy"` -`$award` | Gives someone a certain amount of flowers. **Bot Owner Only!** | `$award 100 @person` -`$take` | Takes a certain amount of flowers from someone. **Bot Owner Only!** | `$take 1 "@someguy"` -`$betroll`, `$br` | Bets a certain amount of NadekoFlowers and rolls a dice. Rolling over 66 yields x2 flowers, over 90 - x3 and 100 x10. | `$br 5` -`$leaderboard`, `$lb` | Displays bot currency leaderboard | $lb - -### Games -Command and aliases | Description | Usage -----------------|--------------|------- -`>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 nohint` or `>t 5 nohint` -`>tl` | Shows a current trivia leaderboard. | `>tl` -`>tq` | Quits current trivia after current question. | `>tq` -`>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. Owner only. | `>typeadd wordswords` -`>poll` | Creates a poll, only person who has manage server permission can do it. | `>poll Question?;Answer1;Answ 2;A_3` -`>pollend` | Stops active poll on this server and prints the results in this channel. | `>pollend` -`>pick` | Picks a flower planted in this channel. | `>pick` -`>plant` | Spend a flower to plant it in this channel. (If bot is restarted or crashes, flower will be lost) | `>plant` -`>gencurrency`, `>gc` | Toggles currency generation on this channel. Every posted message will have 2% chance to spawn a NadekoFlower. Optional parameter cooldown time in minutes, 5 minutes by default. Requires Manage Messages permission. | `>gc` or `>gc 60` -`>leet` | Converts a text to leetspeak with 6 (1-6) severity levels | `>leet 3 Hello` -`>choose` | Chooses a thing from a list of things | `>choose Get up;Sleep;Sleep more` -`>8ball` | Ask the 8ball a yes/no question. | `>8ball should i do something` -`>rps` | Play a game of rocket paperclip scissors with Nadeko. | `>rps scissors` -`>linux` | Prints a customizable Linux interjection | `>linux Spyware Windows` - -### Music -Command and aliases | Description | Usage -----------------|--------------|------- -`!!next`, `!!n`, `!!skip` | Goes to the next song in the queue. You have to be in the same voice channel as the bot. | `!!n` -`!!stop`, `!!s` | Stops the music and clears the playlist. Stays in the channel. | `!!s` -`!!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` -`!!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` -`!!soundcloudqueue`, `!!sq` | Queue a soundcloud song using keywords. Bot will join your voice channel.**You must be in a voice channel**. | `!!sq Dream Of Venice` -`!!listqueue`, `!!lq` | Lists 15 currently queued songs per page. Default page is 1. | `!!lq` or `!!lq 2` -`!!nowplaying`, `!!np` | Shows the song currently playing. | `!!np` -`!!volume`, `!!vol` | Sets the music volume 0-100% | `!!vol 50` -`!!defvol`, `!!dv` | Sets the default music volume when music playback is started (0-100). Persists through restarts. | `!!dv 80` -`!!mute`, `!!min` | Sets the music volume to 0% | `!!min` -`!!max` | Sets the music volume to 100%. | `!!max` -`!!half` | Sets the music volume to 50%. | `!!half` -`!!shuffle`, `!!sh` | Shuffles the current playlist. | `!!sh` -`!!playlist`, `!!pl` | Queues up to 500 songs from a youtube playlist specified by a link, or keywords. | `!!pl playlist link or name` -`!!soundcloudpl`, `!!scpl` | Queue a soundcloud playlist using a link. | `!!scpl https://soundcloud.com/saratology/sets/symphony` -`!!localplaylst`, `!!lopl` | Queues all songs from a directory. **Bot Owner Only!** | `!!lopl C:/music/classical` -`!!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` -`!!move`, `!!mv` | Moves the bot to your voice channel. (works only if music is already playing) | `!!mv` -`!!remove`, `!!rm` | Remove a song by its # in the queue, or 'all' to remove whole queue. | `!!rm 5` -`!!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` -`!!cleanup` | Cleans up hanging voice connections. **Bot Owner Only!** | `!!cleanup` -`!!reptcursong`, `!!rcs` | Toggles repeat of current song. | `!!rcs` -`!!rpeatplaylst`, `!!rpl` | Toggles repeat of all songs in the queue (every song that finishes is added to the end of the queue). | `!!rpl` -`!!save` | Saves a playlist under a certain name. Name must be no longer than 20 characters and mustn't contain dashes. | `!!save classical1` -`!!load` | Loads a playlist under a certain name. | `!!load classical-1` -`!!playlists`, `!!pls` | Lists all playlists. Paginated. 20 per page. Default page is 0. | `!!pls 1` -`!!deleteplaylist`, `!!delpls` | Deletes a saved playlist. Only if you made it or if you are the bot owner. | `!!delpls animu-5` -`!!goto` | Goes to a specific time in seconds in a song. | `!!goto 30` -`!!getlink`, `!!gl` | Shows a link to the currently playing song. -`!!autoplay`, `!!ap` | Toggles autoplay - When the song is finished, automatically queue a related youtube song. (Works only for youtube songs and when queue is empty) - -### Searches -Command and aliases | Description | Usage -----------------|--------------|------- -`~lolchamp` | Shows League Of Legends champion statistics. If there are spaces/apostrophes or in the name - omit them. Optional second parameter is a role. | `~lolchamp Riven` or `~lolchamp Annie sup` -`~lolban` | Shows top 6 banned champions ordered by ban rate. Ban these champions and you will be Plat 5 in no time. | `~lolban` -`~hitbox`, `~hb` | Notifies this channel when a certain user starts streaming. | `~hitbox SomeStreamer` -`~twitch`, `~tw` | Notifies this channel when a certain user starts streaming. | `~twitch SomeStreamer` -`~beam`, `~bm` | Notifies this channel when a certain user starts streaming. | `~beam SomeStreamer` -`~checkhitbox`, `~chhb` | Checks if a certain user is streaming on the hitbox platform. | `~chhb SomeStreamer` -`~checktwitch`, `~chtw` | Checks if a certain user is streaming on the twitch platform. | `~chtw SomeStreamer` -`~checkbeam`, `~chbm` | Checks if a certain user is streaming on the beam platform. | `~chbm SomeStreamer` -`~removestream`, `~rms` | Removes notifications of a certain streamer on this channel. | `~rms SomeGuy` -`~liststreams`, `~ls` | Lists all streams you are following on this server. | `~ls` -`~convert` | Convert quantities from>to. | `~convert m>km 1000` -`~convertlist` | List of the convertable dimensions and currencies. -`~wowjoke` | Get one of Kwoth's penultimate WoW jokes. | `~wowjoke` -`~calculate`, `~calc` | Evaluate a mathematical expression. | ~calc 1+1 -`~osu` | Shows osu stats for a player. | `~osu Name` or `~osu Name taiko` -`~osu b` | Shows information about an osu beatmap. | `~osu b` https://osu.ppy.sh/s/127712` -`~osu top5` | Displays a user's top 5 plays. | ~osu top5 Name -`~pokemon`, `~poke` | Searches for a pokemon. | `~poke Sylveon` -`~pokemonability`, `~pokeab` | Searches for a pokemon ability. | `~pokeab "water gun"` -`~memelist` | Pulls a list of memes you can use with `~memegen` from http://memegen.link/templates/ | `~memelist` -`~memegen` | Generates a meme from memelist with top and bottom text. | `~memegen biw "gets iced coffee" "in the winter"` -`~we` | Shows weather data for a specified city and a country. BOTH ARE REQUIRED. Use country abbrevations. | `~we Moscow RF` -`~yt` | Searches youtubes and shows the first result | `~yt query` -`~ani`, `~anime`, `~aq` | Queries anilist for an anime and shows the first result. | `~aq aquerion evol` -`~imdb` | Queries imdb for movies or series, show first result. | `~imdb query` -`~mang`, `~manga`, `~mq` | Queries anilist for a manga and shows the first result. | `~mq query` -`~randomcat`, `~meow` | Shows a random cat image. -`~randomdog`, `~woof` | Shows a random dog image. -`~i` | Pulls the first image found using a search parameter. Use ~ir for different results. | `~i cute kitten` -`~ir` | Pulls a random image using a search parameter. | `~ir cute kitten` -`~lmgtfy` | Google something for an idiot. | `~lmgtfy query` -`~google`, `~g` | Get a google search link for some terms. | `~google query` -`~hs` | Searches for a Hearthstone card and shows its image. Takes a while to complete. | `~hs Ysera` -`~ud` | Searches Urban Dictionary for a word. | `~ud Pineapple` -`~#` | Searches Tagdef.com for a hashtag. | `~# ff` -`~quote` | Shows a random quote. | `~quote` -`~catfact` | Shows a random catfact from | `~catfact` -`~yomama`, `~ym` | Shows a random joke from | `~ym` -`~randjoke`, `~rj` | Shows a random joke from | `~rj` -`~chucknorris`, `~cn` | Shows a random chucknorris joke from | `~cn` -`~magicitem`, `~mi` | Shows a random magicitem from | `~mi` -`~revav` | Returns a google reverse image search for someone's avatar. | `~revav "@SomeGuy"` -`~revimg` | Returns a google reverse image search for an image from a link. | `~revav Image link` -`~safebooru` | Shows a random image from safebooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) | `~safebooru yuri+kissing` -`~wiki` | Gives you back a wikipedia link | `~wiki query` -`~clr` | Shows you what color corresponds to that hex. | `~clr 00ff00` -`~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 "@SomeGuy"` -`~av`, `~avatar` | Shows a mentioned person's avatar. | `~av @X` - -### NSFW -Command and aliases | Description | Usage -----------------|--------------|------- -`~hentai` | Shows a random NSFW hentai image from gelbooru and danbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) | `~hentai yuri+kissing` -`~danbooru` | Shows a random hentai image from danbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) | `~danbooru yuri+kissing` -`~gelbooru` | Shows a random hentai image from gelbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) | `~gelbooru yuri+kissing` -`~rule34` | Shows a random image from rule34.xx with a given tag. Tag is optional but preffered. (multiple tags are appended with +) | `~rule34 yuri+kissing` -`~e621` | Shows a random hentai image from e621.net with a given tag. Tag is optional but preffered. Use spaces for multiple tags. | `~e621 yuri kissing` -`~cp` | We all know where this will lead you to. | `~cp` -`~boobs` | Real adult content. | `~boobs` -`~butts`, `~ass`, `~butt` | Real adult content. | `~butts` or `~ass` - -### ClashOfClans -Command and aliases | Description | Usage -----------------|--------------|------- -`,createwar`, `,cw` | Creates a new war by specifying a size (>10 and multiple of 5) and enemy clan name. | ,cw 15 The Enemy Clan -`,startwar`, `,sw` | Starts a war with a given number. -`,listwar`, `,lw` | Shows the active war claims by a number. Shows all wars in a short way if no number is specified. | ,lw [war_number] or ,lw -`,claim`, `,call`, `,c` | Claims a certain base from a certain war. You can supply a name in the third optional argument to claim in someone else's place. | ,call [war_number] [base_number] [optional_other_name] -`,claimfinish`, `,cf`, `,cf3`, `,claimfinish3` | Finish your claim with 3 stars if you destroyed a base. Optional second argument finishes for someone else. | ,cf [war_number] [optional_other_name] -`,claimfinish2`, `,cf2` | Finish your claim with 2 stars if you destroyed a base. Optional second argument finishes for someone else. | ,cf [war_number] [optional_other_name] -`,claimfinish1`, `,cf1` | Finish your claim with 1 stars if you destroyed a base. Optional second argument finishes for someone else. | ,cf [war_number] [optional_other_name] -`,unclaim`, `,uncall`, `,uc` | Removes your claim from a certain war. Optional second argument denotes a person in whose place to unclaim | ,uc [war_number] [optional_other_name] -`,endwar`, `,ew` | Ends the war with a given index. | ,ew [war_number] - -### Pokegame -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` -`>heal` | Heals someone. Revives those who fainted. Costs a NadekoFlower | `>heal @someone` -`>type` | Get the poketype of the target. | `>type @someone` -`>settype` | Set your poketype. Costs a NadekoFlower. | `>settype fire` - -### Translator -Command and aliases | Description | Usage -----------------|--------------|------- -`~translate`, `~trans` | Translates from>to text. From the given language to the destiation language. | `~trans en>fr Hello` -`~translangs` | List the valid languages for translation. | `{Prefix}translangs` or `{Prefix}translangs language` - -### Customreactions -Command and aliases | Description | Usage -----------------|--------------|------- -`\o\` | Custom reaction. | \o\ -`/o/` | Custom reaction. | /o/ -`moveto` | Custom reaction. | moveto -`comeatmebro` | Custom reaction. | comeatmebro -`e` | Custom reaction. | e -`@BotName insult`, `<@!116275390695079945> insult` | Custom reaction. | %mention% insult -`@BotName praise`, `<@!116275390695079945> praise` | Custom reaction. | %mention% praise -`@BotName pat`, `<@!116275390695079945> pat` | Custom reaction. | %mention% pat -`@BotName cry`, `<@!116275390695079945> cry` | Custom reaction. | %mention% cry -`@BotName are you real?`, `<@!116275390695079945> are you real?` | Custom reaction. | %mention% are you real? -`@BotName are you there?`, `<@!116275390695079945> are you there?` | Custom reaction. | %mention% are you there? -`@BotName draw`, `<@!116275390695079945> draw` | Custom reaction. | %mention% draw -`@BotName bb`, `<@!116275390695079945> bb` | Custom reaction. | %mention% bb -`@BotName call`, `<@!116275390695079945> call` | Custom reaction. | %mention% call -`@BotName disguise`, `<@!116275390695079945> disguise` | Custom reaction. | %mention% disguise -`~hentai` | Custom reaction. | ~hentai - -### Trello -Command and aliases | Description | Usage -----------------|--------------|------- -`trello bind` | Bind a trello bot to a single channel. You will receive notifications from your board when something is added or edited. | `trello bind [board_id]` -`trello unbind` | Unbinds a bot from the channel and board. -`trello lists`, `trello list` | Lists all lists yo ;) -`trello cards` | Lists all cards from the supplied list. You can supply either a name or an index. | `trello cards index` diff --git a/docs/commandslist.md b/docs/commandslist.md deleted file mode 100644 index ebe50b5c..00000000 --- a/docs/commandslist.md +++ /dev/null @@ -1,311 +0,0 @@ - -### Permissions -Command and aliases | Description | Usage -----------------|--------------|------- -`;verbose` `;v` | `;verbose true` | Sets whether to show when a command/module is blocked. -`;permrole` `;pr` | `;pr role` | Sets a role which can change permissions. Or supply no parameters to find out the current one. Default one is 'Nadeko'. -`;listperms` `;lp` | `;lp` or `;lp 3` | Lists whole permission chain with their indexes. You can specify optional page number if there are a lot of permissions -`;removeperm` `;rp` | `;rp 1` | Removes a permission from a given position -`;moveperm` `;mp` | `;mp 2 4` | Moves permission from one position to another. -`;srvrcmd` `;sc` | `;sc "command name" disable` | Sets a command's permission at the server level. -`;srvrmdl` `;sm` | `;sm "module name" enable` | Sets a module's permission at the server level. -`;usrcmd` `;uc` | `;uc "command name" enable SomeUsername` | Sets a command's permission at the user level. -`;usrmdl` `;um` | `;um "module name" enable SomeUsername` | Sets a module's permission at the user level. -`;rolecmd` `;rc` | `;rc "command name" disable MyRole` | Sets a command's permission at the role level. -`;rolemdl` `;rm` | `;rm "module name" enable MyRole` | Sets a module's permission at the role level. -`;chnlcmd` `;cc` | `;cc "command name" enable SomeChannel` | Sets a command's permission at the channel level. -`;chnlmdl` `;cm` | `;cm "module name" enable SomeChannel` | Sets a module's permission at the channel level. -`;allchnlmdls` `;acm` | `;acm enable #SomeChannel` | Enable or disable all modules in a specified channel. -`;allrolemdls` `;arm` | `;arm [enable/disable] MyRole` | Enable or disable all modules for a specific role. -`;allusrmdls` `;aum` | `;aum enable @someone` | Enable or disable all modules for a specific user. -`;allsrvrmdls` `;asm` | `;asm [enable/disable]` | Enable or disable all modules for your server. -`;ubl` | `;ubl add @SomeUser` or `;ubl rem 12312312313` | Either [add]s or [rem]oves a user specified by a mention or ID from a blacklist. **Bot owner only.** -`;ubl` | `;ubl add @SomeUser` or `;ubl rem 12312312313` | Either [add]s or [rem]oves a user specified by a mention or ID from a blacklist. **Bot owner only.** -`;cbl` | `;cbl rem 12312312312` | Either [add]s or [rem]oves a channel specified by an ID from a blacklist. **Bot owner only.** -`;sbl` | `;sbl add 12312321312` or `;sbl rem SomeTrashServer` | Either [add]s or [rem]oves a server specified by a Name or ID from a blacklist. **Bot owner only.** -`;sbl` | `;sbl add 12312321312` or `;sbl rem SomeTrashServer` | Either [add]s or [rem]oves a server specified by a Name or ID from a blacklist. **Bot owner only.** -`;cmdcooldown` `;cmdcd` | `;cmdcd "some cmd" 5` | Sets a cooldown per user for a command. Set 0 to clear. -`;allcmdcooldowns` `;acmdcds` | `;acmdcds` | Shows a list of all commands and their respective cooldowns. -`;srvrfilterinv` `;sfi` | `;sfi disable` | Enables or disables automatic deleting of invites on the server. -`;chnlfilterinv` `;cfi` | `;cfi enable #general-chat` | Enables or disables automatic deleting of invites on the channel.If no channel supplied, it will default to current one. Use ALL to apply to all existing channels at once. -`;srvrfilterwords` `;sfw` | `;sfw disable` | Enables or disables automatic deleting of messages containing forbidden words on the server. -`;chnlfilterwords` `;cfw` | `;cfw enable #general-chat` | Enables or disables automatic deleting of messages containing banned words on the channel.If no channel supplied, it will default to current one. Use ALL to apply to all existing channels at once. -`;fw` | `;fw poop` | Adds or removes (if it exists) a word from the list of filtered words -`;lstfilterwords` `;lfw` | `;lfw` | Shows a list of filtered words - -### Gambling -Command and aliases | Description | Usage -----------------|--------------|------- -`$raffle` | `$raffle` or `$raffle RoleName` | Prints a name and ID of a random user from the online list from the (optional) role. -`$cash` `$$$` | `$$$` or `$$$ @SomeGuy` | Check how much NadekoFlowers a person has. (Defaults to yourself) -`$cash` `$$$` | `$$$` or `$$$ @SomeGuy` | Check how much NadekoFlowers a person has. (Defaults to yourself) -`$give` | `$give 1 "@SomeGuy"` | Give someone a certain amount of NadekoFlowers -`$award` | `$award 100 @person` | Gives someone a certain amount of flowers. **Bot owner only.** -`$award` | `$award 100 @person` | Gives someone a certain amount of flowers. **Bot owner only.** -`$take` | `$take 1 "@someguy"` | Takes a certain amount of flowers from someone. **Bot owner only.** -`$take` | `$take 1 "@someguy"` | Takes a certain amount of flowers from someone. **Bot owner only.** -`$betroll` `$br` | `$br 5` | Bets a certain amount of NadekoFlowers and rolls a dice. Rolling over 66 yields x2 flowers, over 90 - x3 and 100 x10. -`$leaderboard` `$lb` | `$lb` | Displays bot currency leaderboard -`$race` | `$race` | Starts a new animal race. -`$joinrace` `$jr` | `$jr` or `$jr 5` | Joins a new race. You can specify an amount of flowers for betting (optional). You will get YourBet*(participants-1) back if you win. -`$roll` | `$roll` or `$roll 7` or `$roll 3d5` | 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. -`$roll` | `$roll` or `$roll 7` or `$roll 3d5` | 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. -`$roll` | `$roll` or `$roll 7` or `$roll 3d5` | 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. -`$rolluo` | `$rolluo` or `$rolluo 7` or `$rolluo 3d5` | 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` | `$rolluo` or `$rolluo 7` or `$rolluo 3d5` | 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. -`$nroll` | `$nroll 5` (rolls 0-5) or `$nroll 5-15` | Rolls in a given range. -`$draw` | `$draw` or `$draw 5` | Draws a card from the deck.If you supply number X, she draws up to 5 cards from the deck. -`$shuffle` `$sh` | `$sh` | Reshuffles all cards back into the deck. -`$flip` | `$flip` or `$flip 3` | Flips coin(s) - heads or tails, and shows an image. -`$betflip` `$bf` | `$bf 5 heads` or `$bf 3 t` | Bet to guess will the result be heads or tails. Guessing award you double flowers you've bet. - -### ClashOfClans -Command and aliases | Description | Usage -----------------|--------------|------- -`,createwar` `,cw` | `,cw 15 The Enemy Clan` | Creates a new war by specifying a size (>10 and multiple of 5) and enemy clan name. -`,startwar` `,sw` | `,sw 15` | Starts a war with a given number. -`,listwar` `,lw` | `,lw [war_number] or ,lw` | Shows the active war claims by a number. Shows all wars in a short way if no number is specified. -`,claim` `,call` `,c` | `,call [war_number] [base_number] [optional_other_name]` | Claims a certain base from a certain war. You can supply a name in the third optional argument to claim in someone else's place. -`,claimfinish1` `,cf1` | `,cf [war_number] [optional_other_name]` | Finish your claim with 1 stars if you destroyed a base. Optional second argument finishes for someone else. -`,claimfinish2` `,cf2` | `,cf [war_number] [optional_other_name]` | Finish your claim with 2 stars if you destroyed a base. Optional second argument finishes for someone else. -`,claimfinish` `,cf` `,cf3` `,claimfinish3` | `,cf [war_number] [optional_other_name]` | Finish your claim with 3 stars if you destroyed a base. Optional second argument finishes for someone else. -`,endwar` `,ew` | `,ew [war_number]` | Ends the war with a given index. -`,unclaim` `,ucall` `,uc` | `,uc [war_number] [optional_other_name]` | Removes your claim from a certain war. Optional second argument denotes a person in whose place to unclaim - -### Games -Command and aliases | Description | Usage -----------------|--------------|------- -`>choose` | `>choose Get up;Sleep;Sleep more` | Chooses a thing from a list of things -`>8ball` | `>8ball should i do something` | Ask the 8ball a yes/no question. -`>rps` | `>rps scissors` | Play a game of rocket paperclip scissors with Nadeko. -`>linux` | `>linux Spyware Windows` | Prints a customizable Linux interjection -`>leet` | `>leet 3 Hello` | Converts a text to leetspeak with 6 (1-6) severity levels -`>poll` | `>poll Question?;Answer1;Answ 2;A_3` | Creates a poll, only person who has manage server permission can do it. -`>pollend` | `>pollend` | Stops active poll on this server and prints the results in this channel. -`>pick` | `>pick` | Picks a flower planted in this channel. -`>plant` | `>plant` | Spend a flower to plant it in this channel. (If bot is restarted or crashes, flower will be lost) -`>gencurrency` `>gc` | `>gc` | Toggles currency generation on this channel. Every posted message will have 2% chance to spawn a NadekoFlower. Requires Manage Messages permission. **Requires ManageMessages server permission.** -`>typestart` | `>typestart` | Starts a typing contest. -`>typestop` | `>typestop` | Stops a typing contest on the current channel. -`>typeadd` | `>typeadd wordswords` | Adds a new article to the typing contest. **Bot owner only.** -`>trivia` `>t` | `>t nohint` or `>t 5 nohint` | 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. -`>tl` | `>tl` | Shows a current trivia leaderboard. -`>tq` | `>tq` | Quits current trivia after current question. - -### Pokemon -Command and aliases | Description | Usage -----------------|--------------|------- -`>poke_cmd` | poke_usage | poke_desc - -### Administration -Command and aliases | Description | Usage -----------------|--------------|------- -`.restart` | `.restart` | Restarts the bot. Might not work. **Bot owner only.** -`.delmsgoncmd` | `.delmsgoncmd` | Toggles the automatic deletion of user's successful command message to prevent chat flood. **Server Manager Only.** **Requires Administrator server permission.** -`.setrole` `.sr` | `.sr @User Guest` | Sets a role for a given user. **Requires ManageRoles server permission.** -`.removerole` `.rr` | `.rr @User Admin` | Removes a role from a given user. **Requires ManageRoles server permission.** -`.renamerole` `.renr` | `.renr "First role" SecondRole` | Renames a role. Roles you are renaming must be lower than bot's highest role. **Manage Roles Permissions.** **Requires ManageRoles server permission.** -`.removeallroles` `.rar` | `.rar @User` | Removes all roles from a mentioned user. **Requires ManageRoles server permission.** -`.createrole` `.cr` | `.cr Awesome Role` | Creates a role with a given name. **Requires ManageRoles server permission.** -`.rolecolor` `.rc` | `.rc Admin 255 200 100` or `.rc Admin ffba55` | Set a role's color to the hex or 0-255 rgb color value provided. **Requires ManageRoles server permission.** -`.ban` `.b` | `.b "@some Guy" Your behaviour is toxic.` | Bans a user by id or name with an optional message. **Requires BanMembers server permission.** -`.softban` `.sb` | `.sb "@some Guy" Your behaviour is toxic.` | Bans and then unbans a user by id or name with an optional message. **Requires BanMembers server permission.** -`.kick` `.k` | `.k "@some Guy" Your behaviour is toxic.` | Kicks a mentioned user. **Requires KickMembers server permission.** -`.mute` | `.mute @Someone` | Mutes a mentioned user in a voice channel. **Requires MuteMembers server permission.** -`.unmute` | `.unmute "@Someguy"` or `.unmute "@Someguy" "@Someguy"` | Unmutes mentioned user or users. **Requires MuteMembers server permission.** -`.deafen` `.deaf` | `.deaf "@Someguy"` or `.deaf "@Someguy" "@Someguy"` | Deafens mentioned user or users. **Requires DeafenMembers server permission.** -`.undeafen` `.undef` | `.undef "@Someguy"` or `.undef "@Someguy" "@Someguy"` | Undeafens mentioned user or users. **Requires DeafenMembers server permission.** -`.delvoichanl` `.dvch` | `.dvch VoiceChannelName` | Deletes a voice channel with a given name. **Requires ManageChannels server permission.** -`.creatvoichanl` `.cvch` | `.cvch VoiceChannelName` | Creates a new voice channel with a given name. **Requires ManageChannels server permission.** -`.deltxtchanl` `.dtch` | `.dtch TextChannelName` | Deletes a text channel with a given name. **Requires ManageChannels server permission.** -`.creatxtchanl` `.ctch` | `.ctch TextChannelName` | Creates a new text channel with a given name. **Requires ManageChannels server permission.** -`.settopic` `.st` | `.st My new topic` | Sets a topic on the current channel. **Requires ManageChannels server permission.** -`.setchanlname` `.schn` | `.schn NewName` | Changed the name of the current channel. **Requires ManageChannels server permission.** -`.prune` `.clr` | `.prune` or `.prune 5` or `.prune @Someone` or `.prune @Someone X` | `.prune` removes all nadeko's messages in the last 100 messages.`.prune X` removes last X 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 'Someone's' messages in the channel. -`.prune` `.clr` | `.prune` or `.prune 5` or `.prune @Someone` or `.prune @Someone X` | `.prune` removes all nadeko's messages in the last 100 messages.`.prune X` removes last X 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 'Someone's' messages in the channel. **Requires ManageMessages server permission.** -`.prune` `.clr` | `.prune` or `.prune 5` or `.prune @Someone` or `.prune @Someone X` | `.prune` removes all nadeko's messages in the last 100 messages.`.prune X` removes last X 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 'Someone's' messages in the channel. **Requires ManageMessages server permission.** -`.die` | `@NadekoBot die` | Works only for the owner. Shuts the bot down. **Bot owner only.** -`.setname` `.newnm` | `.newnm BotName` | Give the bot a new name. **Bot owner only.** -`.setavatar` `.setav` | `.setav http://i.imgur.com/xTG3a1I.jpg` | Sets a new avatar image for the NadekoBot. Argument is a direct link to an image. **Bot owner only.** -`.setgame` | `.setgame Playing with kwoth` | Sets the bots game. **Bot owner only.** -`.send` | `.send sid` | Send a message to someone on a different server through the bot. **Bot owner only.** -`.announce` | `.announce Useless spam` | Sends a message to all servers' general channel bot is connected to. **Bot owner only.** -`.savechat` | `.savechat 150` | Saves a number of messages to a text file and sends it to you. **Bot owner only.** -`.mentionrole` `.menro` | `.menro RoleName` | Mentions every person from the provided role or roles (separated by a ',') on this server. Requires you to have mention everyone permission. **Requires MentionEveryone server permission.** -`.donators` | `.donators` | List of lovely people who donated to keep this project alive. -`.donadd` | `.donadd Donate Amount` | Add a donator to the database. **Kwoth Only** **Bot owner only.** -`.autoassignrole` `.aar` | `.aar` to disable, `.aar Role Name` to enable | Automaticaly assigns a specified role to every user who joins the server. **Requires ManageRoles server permission.** -`.scsc` | `.scsc` | Starts an instance of cross server channel. You will get a token as a DM that other people will use to tune in to the same instance. **Bot owner only.** -`.jcsc` | `.jcsc` | Joins current channel to an instance of cross server channel using the token. **Requires ManageServer server permission.** -`.lcsc` | `.lcsc` | Leaves Cross server channel instance from this channel. **Requires ManageServer server permission.** -`.logserver` | `.logserver` | Logs server activity in this channel. **Requires Administrator server permission.** **Bot owner only.** -`.logignore` | `.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.** -`.userpresence` | `.userpresence` | Starts logging to this channel when someone from the server goes online/offline/idle. **Requires Administrator server permission.** -`.voicepresence` | `.voicerpresence` | Toggles logging to this channel whenever someone joins or leaves a voice channel you are in right now. **Requires Administrator server permission.** -`.repeatinvoke` `.repinv` | `.repinv` | Immediately shows the repeat message and restarts the timer. **Requires ManageMessages server permission.** -`.repeat` | `.repeat 5 Hello there` | Repeat a message every X minutes. If no parameters are specified, repeat is disabled. -`.repeat` | `.repeat 5 Hello there` | Repeat a message every X minutes. If no parameters are specified, repeat is disabled. -`.migratedata` | `.migratedata` | Migrate data from old bot configuration **Bot owner only.** -`.rotateplaying` `.ropl` | `.ropl` | Toggles rotation of playing status of the dynamic strings you specified earlier. **Bot owner only.** -`.addplaying` `.adpl` | `.adpl` | Adds a specified string to the list of playing strings to rotate. Supported placeholders: %servers%, %users%, %playing%, %queued% **Bot owner only.** -`.listplaying` `.lipl` | `.lipl` | Lists all playing statuses with their corresponding number. **Bot owner only.** -`.removeplaying` `.rmlp` `.repl` | `.rmpl` | Removes a playing string on a given number. **Bot owner only.** -`.slowmode` | `.slowmode` | Toggles slow mode. When ON, users will be able to send only 1 message every 5 seconds. -`.asar` | `.asar Gamer` | Adds a role, or list of roles separated by whitespace(use quotations for multiword roles) to the list of self-assignable roles. **Requires ManageRoles server permission.** -`.rsar` | `.rsar` | Removes a specified role from the list of self-assignable roles. **Requires ManageRoles server permission.** -`.lsar` | `.lsar` | Lists all self-assignable roles. -`.togglexclsar` `.tesar` | `.tesar` | toggle whether the self-assigned roles should be exclusive **Requires ManageRoles server permission.** -`.iam` | `.iam Gamer` | Adds a role to you that you choose. Role must be on a list of self-assignable roles. -`.iamnot` `.iamn` | `.iamn Gamer` | Removes a role to you that you choose. Role must be on a list of self-assignable roles. -`.leave` | `.leave 123123123331` | Makes Nadeko leave the server. Either name or id required. **Bot owner only.** -`.greetdel` | `.greetdel` | Toggles automatic deletion of greet messages. **Requires ManageServer server permission.** -`.greet` | `.greet` | Toggles anouncements on the current channel when someone joins the server. **Requires ManageServer server permission.** -`.greetmsg` | `.greetmsg Welcome, %user%.` | 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. **Requires ManageServer server permission.** -`.greetdm` | `.greetdm` | Toggles whether the greet messages will be sent in a DM (This is separate from greet - you can have both, any or neither enabled). **Requires ManageServer server permission.** -`.greetdmmsg` | `.greetdmmsg Welcome to the server, %user%`. | Sets a new join announcement message which will be sent to the user who joined. Type %user% if you want to mention the new member. Using it with no message will show the current DM greet message. **Requires ManageServer server permission.** -`.bye` | `.bye` | Toggles anouncements on the current channel when someone leaves the server. **Requires ManageServer server permission.** -`.byemsg` | `.byemsg %user% has left.` | Sets a new leave announcement message. Type %user% if you want to mention the new member. Using it with no message will show the current bye message. **Requires ManageServer server permission.** -`.byedel` | `.byedel` | Toggles automatic deletion of bye messages. **Requires ManageServer server permission.** -`.voice+text` `.v+t` | `.voice+text` | Creates a text channel for each voice channel only users in that voice channel can see.If you are server owner, keep in mind you will see them all the time regardless. **Requires ManageRoles server permission.** **Requires ManageChannels server permission.** -`.cleanvplust` `.cv+t` | `.cleanv+t` | Deletes all text channels ending in `-voice` for which voicechannels are not found. **Use at your own risk. Needs Manage Roles and Manage Channels Permissions.** **Requires ManageChannels server permission.** **Requires ManageRoles server permission.** - -### Music -Command and aliases | Description | Usage -----------------|--------------|------- -`!!next` `!!n` | `!!n` | Goes to the next song in the queue. You have to be in the same voice channel as the bot. -`!!stop` `!!s` | `!!s` | Stops the music and clears the playlist. Stays in the channel. -`!!destroy` `!!d` | `!!d` | Completely stops the music and unbinds the bot from the channel. (may cause weird behaviour) -`!!pause` `!!p` | `!!p` | Pauses or Unpauses the song. -`!!queue` `!!q` `!!yq` | `!!q Dream Of Venice` | Queue a song using keywords or a link. Bot will join your voice channel.**You must be in a voice channel**. -`!!soundcloudqueue` `!!sq` | `!!sq Dream Of Venice` | Queue a soundcloud song using keywords. Bot will join your voice channel.**You must be in a voice channel**. -`!!listqueue` `!!lq` | `!!lq` or `!!lq 2` | Lists 15 currently queued songs per page. Default page is 1. -`!!nowplaying` `!!np` | `!!np` | Shows the song currently playing. -`!!volume` `!!vol` | `!!vol 50` | Sets the music volume 0-100% -`!!defvol` `!!dv` | `!!dv 80` | Sets the default music volume when music playback is started (0-100). Persists through restarts. -`!!shuffle` `!!sh` | `!!sh` | Shuffles the current playlist. -`!!playlist` `!!pl` | `!!pl playlist link or name` | Queues up to 500 songs from a youtube playlist specified by a link, or keywords. -`!!soundcloudpl` `!!scpl` | `!!scpl soundcloudseturl` | Queue a soundcloud playlist using a link. -`!!localplaylst` `!!lopl` | `!!lopl C:/music/classical` | Queues all songs from a directory. **Bot owner only.** -`!!radio` `!!ra` | `!!ra radio link here` | Queues a radio stream from a link. It can be a direct mp3 radio stream, .m3u, .pls .asx or .xspf (Usage Video: ) -`!!local` `!!lo` | `!!lo C:/music/mysong.mp3` | Queues a local file by specifying a full path. **Bot owner only.** -`!!move` `!!mv` | `!!mv` | Moves the bot to your voice channel. (works only if music is already playing) -`!!remove` `!!rm` | `!!rm 5` | Remove a song by its # in the queue, or 'all' to remove whole queue. -`!!remove` `!!rm` | `!!rm 5` | Remove a song by its # in the queue, or 'all' to remove whole queue. -`!!movesong` `!!ms` | `!! ms 5>3` | Moves a song from one position to another. -`!!setmaxqueue` `!!smq` | `!!smq 50` or `!!smq` | Sets a maximum queue size. Supply 0 or no argument to have no limit. -`!!reptcursong` `!!rcs` | `!!rcs` | Toggles repeat of current song. -`!!rpeatplaylst` `!!rpl` | `!!rpl` | Toggles repeat of all songs in the queue (every song that finishes is added to the end of the queue). -`!!save` | `!!save classical1` | Saves a playlist under a certain name. Name must be no longer than 20 characters and mustn't contain dashes. -`!!load` | `!!load classical-1` | Loads a playlist under a certain name. -`!!playlists` `!!pls` | `!!pls 1` | Lists all playlists. Paginated. 20 per page. Default page is 0. -`!!deleteplaylist` `!!delpls` | `!!delpls animu-5` | Deletes a saved playlist. Only if you made it or if you are the bot owner. -`!!goto` | `!!goto 30` | Goes to a specific time in seconds in a song. -`!!getlink` `!!gl` | `!!gl` | Shows a link to the song in the queue by index, or the currently playing song by default. -`!!autoplay` `!!ap` | `!!ap` | Toggles autoplay - When the song is finished, automatically queue a related youtube song. (Works only for youtube songs and when queue is empty) - -### Help -Command and aliases | Description | Usage -----------------|--------------|------- -`-modules` `-mdls` | `-modules` or `.modules` | List all bot modules. -`-commands` `-cmds` | `-commands` or `.commands` | List all of the bot's commands from a certain module. -`-h` `-help` | `-h !m q` or just `-h` | Either shows a help for a single command, or PMs you help link if no arguments are specified. -`-hgit` | `-hgit` | Generates the commandlist.md file. **Bot owner only.** -`-readme` `-guide` | `-readme` or `-guide` | Sends a readme and a guide links to the channel. -`-donate` | `-donate` or `~donate` | Instructions for helping the project! - -### Utility -Command and aliases | Description | Usage -----------------|--------------|------- -`.whosplaying` | `.whoplays Overwatch` | Shows a list of users who are playing the specified game. -`.inrole` | `.inrole Role` | Lists every person from the provided role or roles (separated by a ',') on this server. If the list is too long for 1 message, you must have Manage Messages permission. -`.checkmyperms` | `.checkmyperms` | Checks your userspecific permissions on this channel. -`.userid` `.uid` | `.uid` or `.uid "@SomeGuy"` | Shows user ID. -`.channelid` `.cid` | `.cid` | Shows current channel ID. -`.serverid` `.sid` | `.sid` | Shows current server ID. -`.roles` | `.roles` | List all roles on this server or a single user if specified. -`.channeltopic` `.ct` | `.ct` | Sends current channel's topic as a message. -`.stats` | `.stats` | Shows some basic stats for Nadeko. -`.showemojis` `.se` | `.se A message full of SPECIALemojis` | Shows a name and a link to every SPECIAL emoji in the message. -`.serverinfo` `.sinfo` | `.sinfo Some Server` | Shows info about the server the bot is on. If no channel is supplied, it defaults to current one. -`.channelinfo` `.cinfo` | `.cinfo #some-channel` | Shows info about the channel. If no channel is supplied, it defaults to current one. -`.userinfo` `.uinfo` | `.uinfo @SomeUser` | Shows info about the user. If no user is supplied, it defaults a user running the command. -`...` | `... abc` | Shows a random quote with a specified name. -`..` | `.. sayhi Hi` | Adds a new quote with the specified name and message. -`.deletequote` `.delq` | `.delq abc` | Deletes all quotes with the specified keyword. You have to either be bot owner or the creator of the quote to delete it. -`.delallq` `.daq` | `.delallq kek` | Deletes all quotes on a specified keyword. -`.remind` | `.remind me 1d5h Do something` or `.remind #general Start now!` | 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. -`.remindtemplate` | `.remindtemplate %user%, you gotta do %message%!` | 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.** - -### Searches -Command and aliases | Description | Usage -----------------|--------------|------- -`~weather` `~we` | `~we Moscow RF` | Shows weather data for a specified city and a country. BOTH ARE REQUIRED. Use country abbrevations. -`~youtube` `~yt` | `~yt query` | Searches youtubes and shows the first result -`~imdb` | `~imdb Batman vs Superman` | Queries imdb for movies or series, show first result. -`~randomcat` `~meow` | `~meow` | Shows a random cat image. -`~randomdog` `~woof` | `~woof` | Shows a random dog image. -`~img` `~i` | `~i cute kitten` | Pulls the first image found using a search parameter. Use ~ir for different results. -`~ir` | `~ir cute kitten` | Pulls a random image using a search parameter. -`~lmgtfy` | `~lmgtfy query` | Google something for an idiot. -`~google` `~g` | `~google query` | Get a google search link for some terms. -`~hearthstone` `~hs` | `~hs Ysera` | Searches for a Hearthstone card and shows its image. Takes a while to complete. -`~urbandict` `~ud` | `~ud Pineapple` | Searches Urban Dictionary for a word. -`~#` | `~# ff` | Searches Tagdef.com for a hashtag. -`~catfact` | `~catfact` | Shows a random catfact from -`~revav` | `~revav "@SomeGuy"` | Returns a google reverse image search for someone's avatar. -`~revimg` | `~revimg Image link` | Returns a google reverse image search for an image from a link. -`~safebooru` | `~safebooru yuri+kissing` | Shows a random image from safebooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) -`~wikipedia` `~wiki` | `~wiki query` | Gives you back a wikipedia link -`~color` `~clr` | `~clr 00ff00` | Shows you what color corresponds to that hex. -`~videocall` | `~videocall "@SomeGuy"` | Creates a private video call link for you and other mentioned people. The link is sent to mentioned people via a private message. -`~av` `~avatar` | `~av "@SomeGuy"` | Shows a mentioned person's avatar. -`~calculate` `~calc` | `~calc 1+1` | Evaluate a mathematical expression. -`~calcops` | `~calcops` | Shows all available operations in .calc command -`~lolban` | `~lolban` | Shows top banned champions ordered by ban rate. -`~memelist` | `~memelist` | Pulls a list of memes you can use with `~memegen` from http://memegen.link/templates/ -`~memegen` | `~memegen biw "gets iced coffee" "in the winter"` | Generates a meme from memelist with top and bottom text. -`~anime` `~ani` `~aq` | `~ani aquarion evol` | Queries anilist for an anime and shows the first result. -`~manga` `~mang` `~mq` | `~mq Shingeki no kyojin` | Queries anilist for a manga and shows the first result. -`~yomama` `~ym` | `~ym` | Shows a random joke from -`~randjoke` `~rj` | `~rj` | Shows a random joke from -`~chucknorris` `~cn` | `~cn` | Shows a random chucknorris joke from -`~wowjoke` | `~wowjoke` | Get one of Kwoth's penultimate WoW jokes. -`~magicitem` `~mi` | `~mi` | Shows a random magicitem from -`~osu` | `~osu Name` or `~osu Name taiko` | Shows osu stats for a player. -`~osub` | `~osub https://osu.ppy.sh/s/127712` | Shows information about an osu beatmap. -`~osu5` | `~osu5 Name` | Displays a user's top 5 plays. -`~pokemon` `~poke` | `~poke Sylveon` | Searches for a pokemon. -`~pokemonability` `~pokeab` | `~pokeab "water gun"` | Searches for a pokemon ability. -`~hitbox` `~hb` | `~hitbox SomeStreamer` | Notifies this channel when a certain user starts streaming. **Requires ManageMessages server permission.** -`~twitch` `~tw` | `~twitch SomeStreamer` | Notifies this channel when a certain user starts streaming. **Requires ManageMessages server permission.** -`~beam` `~bm` | `~beam SomeStreamer` | Notifies this channel when a certain user starts streaming. **Requires ManageMessages server permission.** -`~liststreams` `~ls` | `~ls` | Lists all streams you are following on this server. -`~removestream` `~rms` | `~rms SomeGuy` | Removes notifications of a certain streamer on this channel. -`~checkstream` `~cs` | `~cs twitch MyFavStreamer` | Checks if a user is online on a certain streaming platform. -`~convertlist` | `~convertlist` | List of the convertable dimensions and currencies. -`~convert` | `~convert m>km 1000` | Convert quantities from>to. - -### Translator -Command and aliases | Description | Usage -----------------|--------------|------- -`~translate` `~trans` | `~trans en>fr Hello` | Translates from>to text. From the given language to the destiation language. -`~translangs` | `~translangs` | List the valid languages for translation. - -### NSFW -Command and aliases | Description | Usage -----------------|--------------|------- -`~hentai` | `~hentai yuri+kissing` | Shows a random NSFW hentai image from gelbooru and danbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) -`~danbooru` | `~danbooru yuri+kissing` | Shows a random hentai image from danbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) -`~gelbooru` | `~gelbooru yuri+kissing` | Shows a random hentai image from gelbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) -`~rule34` | `~rule34 yuri+kissing` | Shows a random image from rule34.xx with a given tag. Tag is optional but preffered. (multiple tags are appended with +) -`~e621` | `~e621 yuri kissing` | Shows a random hentai image from e621.net with a given tag. Tag is optional but preffered. Use spaces for multiple tags. -`~cp` | `~cp` | We all know where this will lead you to. -`~boobs` | `~boobs` | Real adult content. -`~butts` `~ass` `~butt` | `~butts` or `~ass` | Real adult content. - -### CustomReactions -Command and aliases | Description | Usage -----------------|--------------|------- -`.addcustreact` `.acr` | `.acr "hello" Hi there %user%` | Add a custom reaction with a trigger and a response. Running this command in server requires Administration permission. Running this command in DM is Bot Owner only and adds a new global custom reaction. Guide here: -`.listcustreact` `.lcr` | `.lcr 1` | Lists global or server custom reactions (15 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. -`.delcustreact` `.dcr` | `.dcr 5` | Deletes a custom reaction on a specific index. If ran in DM, it is bot owner only and deletes a global custom reaction. If ran in a server, it requires Administration priviledges and removes server custom reaction. diff --git a/docs/guides/Building from Source.md b/docs/guides/Building from Source.md new file mode 100644 index 00000000..557dc3c3 --- /dev/null +++ b/docs/guides/Building from Source.md @@ -0,0 +1,8 @@ +###Building from Source +For easy setup and no programming knowledge, you can use [Updater](https://github.com/Kwoth/NadekoUpdater/releases/latest) or download release from [Releases](https://github.com/Kwoth/NadekoBot/releases) and follow the [Windows Guide](Windows Guide.md) + +In your bin/debug folder (or next to your exe if you are using release version), you must have a file called 'credentials.json' in which you will store all the necessary data to make the bot know who the owner is, and your api keys. + +When you clone the project, make sure to run `git submodule init` and `git submodule update` to get the correct discord.net version + +Make sure you've read ComprehensiveGuide to get a grasp of basic config/credentials setup and then look at "Credentials and config" chapter. diff --git a/docs/DockerGuide.md b/docs/guides/Docker Guide.md similarity index 97% rename from docs/DockerGuide.md rename to docs/guides/Docker Guide.md index 5a87bc22..1c0bb3c4 100644 --- a/docs/DockerGuide.md +++ b/docs/guides/Docker Guide.md @@ -1,6 +1,6 @@ -## Docker guide with digitalocean +# Docker Guide with DigitalOcean -#####Prerequisites: +#####Prerequisites - Digital ocean account (you can use my [reflink][reflink] to support the project and get 10$ after you register) - [PuTTY][PuTTY] - A bot account - follow this [guide][guide] diff --git a/docs/LinuxSetup.md b/docs/guides/Linux Guide.md similarity index 80% rename from docs/LinuxSetup.md rename to docs/guides/Linux Guide.md index 0272affc..c60eb5c3 100644 --- a/docs/LinuxSetup.md +++ b/docs/guides/Linux Guide.md @@ -1,9 +1,9 @@ -#Setting up NadekoBot on Linux +##Setting up NadekoBot on Linux ####Setting up NadekoBot on Linux Digital Ocean Droplet -######If you want Nadeko to play music for you 24/7 without having to hosting it on your PC and want to keep it cheap, reliable and convenient as possible, you can try Nadeko on Linux Digital Ocean Droplet using the link [DigitalOcean][DigitalOcean] (and using this link will be supporting Nadeko and will give you **$10 credit**) +If you want Nadeko to play music for you 24/7 without having to hosting it on your PC and want to keep it cheap, reliable and convenient as possible, you can try Nadeko on Linux Digital Ocean Droplet using the link [DigitalOcean][DigitalOcean] (and using this link will be supporting Nadeko and will give you **$10 credit**) -######Keep this helpful video handy [Linux Setup Video][Linux Setup Video] (thanks to klincheR) it contains how to set up the Digital Ocean droplet aswell. +Keep this helpful video handy [Linux Setup Video][Linux Setup Video] (thanks to klincheR) it contains how to set up the Digital Ocean droplet aswell. ####Setting up NadekoBot Assuming you have followed the link above to created an account in Digital Ocean and video to set up the bot until you get the `IP address and root password (in email)` to login, its time to begin. @@ -24,47 +24,52 @@ If you entered your Droplets IP address correctly, it should show **login as:** **Copy and just paste** using **mouse right-click** (it should paste automatically) -######MONO (Source: [Mono Source][Mono Source]) +####Installing Mono +MONO (Source: [Mono Source][Mono Source]) -**1) Installing Mono** +**1)** `sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF` - `echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list` - `sudo apt-get update` Note if the command is not being initiated, hit **Enter** **2)** -`echo "deb http://download.mono-project.com/repo/debian wheezy-apache24-compat main" | sudo tee -a /etc/apt/sources.list.d/mono-xamarin.list` +`echo "deb http://download.mono-project.com/repo/debian wheezy-apache24-compat main" | sudo +tee -a /etc/apt/sources.list.d/mono-xamarin.list` +####Mono on Debian 8 and later **2.5)** -*ONLY DEBIAN 8 and later* -`echo "deb http://download.mono-project.com/repo/debian wheezy-libjpeg62-compat main" | sudo tee -a /etc/apt/sources.list.d/mono-xamarin.list` +`echo "deb http://download.mono-project.com/repo/debian wheezy-libjpeg62-compat main" | sudo +tee -a /etc/apt/sources.list.d/mono-xamarin.list` +####Mono on CentOS 7, Fedora 19 (and later) and later **2.6)** -*ONLY CentOS 7, Fedora 19 (and later)* `yum install yum-util` - `rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"` - `yum-config-manager --add-repo http://download.mono-project.com/repo/centos/` +####Mono Devel **3)** -*Mono Devel* `apt-get install mono-devel` **Type** `y` **hit Enter** +####Mono Fix +**In case you are having issues with Mono where you get a random string and the bot won't run, do this:** +`sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF` +`echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list` +`apt-get install ca-certificates-mono` +`mozroots --import --sync` + +####Installing Opus Voice Codec **4)** -Opus Voice Codec - `sudo apt-get install libopus0 opus-tools` **Type** `y` **hit Enter** @@ -72,17 +77,6 @@ Opus Voice Codec **5)** `sudo apt-get install libopus-dev` -**In case you are having issues with Mono where you get a random string and the bot won't run, do this:** - -`sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF` - -`echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list` - -`apt-get install ca-certificates-mono` - -`mozroots --import --sync` - - ####FFMPEG **6)** @@ -95,9 +89,7 @@ NOTE: if its "not installing" then, follow the guide here: [FFMPEG Help Guide][F **All you need to do, if you are running UBUNTU 14.04 is initiate these:** `sudo add-apt-repository ppa:mc3man/trusty-media` - `sudo apt-get update` - `sudo apt-get dist-upgrade` *Before executing* `sudo apt-get install ffmpeg` @@ -109,11 +101,8 @@ NOTE: if its "not installing" then, follow the guide here: [FFMPEG Help Guide][F In case you are not able to install it with installer ^up there, follow these steps: `sudo apt-get update` - `echo "deb http://ftp.debian.org/debian jessie-backports main" | tee /etc/apt/sources.list.d/debian-backports.list` - `sudo apt-get update` - `sudo apt-get install ffmpeg -y` ####Uncomplicated Firewall UFW @@ -134,30 +123,25 @@ In case you are not able to install it with installer ^up there, follow these st **10)** `sudo ufw allow ssh` - - +####Installing Unzip **11)** -Unzip - `apt-get install unzip` +####Installing TMUX **12)** -TMUX - `apt-get install tmux` **Type** `y` **hit Enter** -####NOW WE NEED TO IMPORT SOME DISCORD CERTS +####Importing Discord certs **13)** `certmgr -ssl https://discordapp.com` - **14)** `certmgr -ssl https://gateway.discord.gg` Type `yes` and hit Enter **(three times - as it will ask for three times)** - +####Creating Nadeko folder **15)** Create a new folder “nadeko” or anything you prefer @@ -168,7 +152,7 @@ Move to “nadeko” folder (note `cd --` to go back the directory) `cd nadeko` -**NOW WE NEED TO GET NADEKO FROM RELEASES** +####Getting NadekoBot from Releases Go to this link: [Releases][Releases] and **copy the zip file address** of the lalest version available, it should look like `https://github.com/Kwoth/NadekoBot/releases/download/vx.xx/NadekoBot.vx.x.zip` @@ -181,14 +165,13 @@ Get the correct link, type `wget`, then *paste the link*, then hit **Enter**. **^Do not copy-paste it** **18)** - Now we need to `unzip` the downloaded zip file and to do that, type the file name as it showed in your screen or just copy from the screen, should be like ` NadekoBot.vx.x.zip` `unzip NadekoBot.vx.x.zip` **^Do not copy-paste it** -#####NOW TO SETUP NADEKO +####Setting up NadekoBot - Open **CyberDuck** - Click on **Open Connection** (top-left corner), a new window should appear. @@ -201,15 +184,16 @@ Now we need to `unzip` the downloaded zip file and to do that, type the file nam - It should show you the new folder you created. - Open it. -#####MAKE SURE YOU READ THE README BEFORE PROCEEDING +####Renaming Credentials.json - Copy the `credentials_example.json` to desktop -- EDIT it as it is guided here: [Readme][Readme] +- EDIT it as it is guided here: [Setting up Credentials.json](Windows Guide.md#setting-up-credentialsjson-file) +- Read here how to [Create DiscordBot application](https://github.com/miraai/NadekoBot/blob/dev/docs/guides/Windows%20Guide.md#creating-discordbot-application) - Rename it to `credentials.json` and paste/put it back in the folder. `(Yes, using CyberDuck)` - You should see two files `credentials_example.json` and `credentials.json` - Also if you already have nadeko setup and have `credentials.json`, `config.json`, `nadekobot.sqlite`, and `"permissions" folder`, you can just copy and paste it to the Droplets folder using CyberDuck. -######TIME TO RUN +####Running NadekoBot Go back to **PuTTY**, `(hope its still running xD)` @@ -218,7 +202,8 @@ Type/ Copy and hit **Enter**. `tmux new -s nadeko` -**^this will create a new session named “nadeko”** `(you can replace “nadeko” with anything you prefer and remember its your session name) so you can run the bot in background without having to keep running PuTTY in the background.` +**^this will create a new session named “nadeko”** `(you can replace “nadeko” with anything you prefer and remember +its your session name) so you can run the bot in background without having to keep running PuTTY in the background.` `cd nadeko` @@ -227,33 +212,33 @@ Type/ Copy and hit **Enter**. **CHECK THE BOT IN DISCORD, IF EVERYTHING IS WORKING** -Now time to **move bot to background** and to do that, press **CTRL+B+D** (this will ditach the nadeko session using TMUX), and you can finally close PuTTY now. +####Setting up Nadeko Music + +For how to set up Nadeko for music and Google API Keys, follow [Setting up NadekoBot for Music](Windows Guide.md#setting-up-nadekobot-for-music) + +Now time to **move bot to background** and to do that, press **CTRL+B+D** (this will detach the nadeko session using TMUX), and you can finally close PuTTY now. Copy your CLIENT ID (that's in the same Developer page where you brought your token) and replace `12345678` in this link: `https://discordapp.com/oauth2/authorize?client_id=12345678&scope=bot&permissions=66186303` with it. Go to that link and you will be able to add your bot to your server. **NOW YOU HAVE YOUR OWN NADEKO BOT** `Thanks to Kwoth <3` -######SOME MORE INFO (JUST TO KNOW): +####Some more Info (just in case) -If you want to **see the sessions** after logging back again, type `tmux ls`, and that will give you the list of sessions running. -If you want to **switch to/ see that session**, type `tmux a -t nadeko` (**nadeko** is the name of the session we created before so, replace **“nadeko”** with the session name you created.) - -**21)** -If you want to **kill** NadekoBot **session**, type `tmux kill-session -t nadeko` -######TO RESTART YOUR BOT ALONG WITH THE WHOLE SERVER (for science): -**22)** +####Restarting Nadeko with the Server Open **PuTTY** and login as you have before, type `reboot` and hit Enter. -######IF YOU WANT TO UPDATE YOUR BOT +####Updating Nadeko **FOLLOW THESE STEPS SERIALLY** -- **-21 OR 22** -- **-19** - **-16** - **-17** - **-18** +- **-19** - **-20** HIT **CTRL+B+D** and close **PuTTY** diff --git a/docs/guides/OSX Guide.md b/docs/guides/OSX Guide.md new file mode 100644 index 00000000..4fed4867 --- /dev/null +++ b/docs/guides/OSX Guide.md @@ -0,0 +1,167 @@ +### Setting Up NadekoBot on OSX +#### Prerequisites +- 1) [Homebrew][Homebrew] +- 2) Mono +- 3) Google Account +- 4) Soundcloud Account (if you want soundcloud support) +- 5) Text Editor (TextWrangler, or equivalent) or outside editor such as [Atom][Atom] + +####Installing Homebrew + +`/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"` + +Run `brew update` to fetch the latest package data. +####Installing dependencies +``` +brew install git +brew install ffmpeg +brew update && brew upgrade ffmpeg +brew install opus +brew install opus-tools +brew install opusfile +brew install libffi +brew install libsodium +brew install tmux +``` + +####Check your `FFMPEG` + +**In case your `FFMPEG` wasnt installed properly** + +- `brew options ffmpeg` +- `brew install ffmpeg --with-x --with-y --with-z` etc. +- `brew update && brew upgrade` (Update formulae and Homebrew itself && Install newer versions of outdated packages) +- `brew prune` (Remove dead symlinks from Homebrew’s prefix) +- `brew doctor` (Check your Homebrew installation for common issues) +- Then try `brew install ffmpeg` again. + +####Installing xcode-select +Xcode command line tools. You will do this in Terminal.app by running the following command line: + +`xcode-select --install` + +A dialog box will open asking if you want to install `xcode-select`. Select install and finish the installation. + +####Installing Mono +- Building Mono dependencies: + +`brew install autoconf automake libtool pkg-config` + +- Building Mono from Source: + +To build Mono from a Git Source Code checkout, you will want to have the official Mono installed on the system, as the build requires a working C# compiler to run. Once you do this, run the following commands, remember to replace PREFIX with your installation prefix that you selected: + +``` +PATH=$PREFIX/bin:$PATH +git clone https://github.com/mono/mono.git +cd mono +CC='cc -m32' ./autogen.sh --prefix=$PREFIX --disable-nls --build=i386-apple-darwin11.2.0 +make +make install +``` +To build Mono in 64 bit mode instead use this to configure the build: + +`./autogen.sh --prefix=$PREFIX --disable-nls` + +####Nadeko Setup +- Create a new folder and name it `Nadeko`. +- Move to our `Nadeko` folder + +`cd Nadeko` +- Go to [Releases][Releases] and copy the zip file address of the lalest version available, it should look like `https://github.com/Kwoth/NadekoBot/releases/download/vx.xx/NadekoBot.vx.x.zip` +- Get the correct link, type `curl -O` and past the link, then hit `Enter` +- It should be something like this: + +`curl -O https://github.com/Kwoth/NadekoBot/releases/download/vx.xx/NadekoBot.vx.x.zip` + +^ do not copy-paste it + +- Unzip the downloaded file in our `Nadeko` folder + +####Creating DiscordBot application +- Go to [DiscordApp][DiscordApp]. +- Log in with your Discord account. +- On the left side, press `New Application`. +- Fill out the `App Name` (your bot's name, in this case), put the image you want, and add an app description(optional). +- Create the application. +- Once the application is created, click on `Create a Bot User` and confirm it. +- Keep this window open for now. + +####Setting up Credentials.json file +- In our `NadekoBot` folder you should have `.json` file named `credentials_example.json`. (Note: If you do not see a **.json** after `credentials_example.json `, do not add the `**.json**`. You most likely have `"Hide file extensions"` enabled.) +- Rename `credentials_example.json` to `credentials.json`. +- Open the file with your Text editor. +- In there you will see fields like `Token`, `ClientId`, `BotId`, `OwnerIDs`. +- In your [DiscordApp][DiscordApp], under `Bot User` part, you will see the `Token:click to reveal` part, click to reveal it. +- Copy your bot's token, and put it between `" "` in your `credentials.json` file. +- Copy `Client ID` and replace it with the example one in your `credentials.json` in `Client ID` **and** `BotID` field. +- Save your `credentials.json` but keep it open. We need to put your `User ID` and owner. + +####Running NadekoBot +- Copy/past and hit `Enter` + +`tmux new -s nadeko` + +^this will create a new session named “nadeko” `(you can replace “nadeko” with anything you prefer and remember its your +session name)`. + +or if you want to use Screen, run: + +`screen -S nadeko` + +^this will create a new screen named “nadeko” `(you can replace “nadeko” with anything you prefer and remember its your +screen name)`. + +`cd nadeko` + +- Start NadekoBot.exe using Mono: + +`mono NadekoBot.exe` + +CHECK THE BOT IN DISCORD, IF EVERYTHING IS WORKING + +Now time to move bot to background and to do that, press CTRL+B+D (this will ditach the nadeko session using TMUX) + +*if you used Screen press CTRL+A+D (this will detach the nadeko screen)* + +####Inviting your bot to your server - [Invite Guide][Invite Guide] +- Create a new server in Discord. +- Copy your `Client ID` from your [DiscordApp][DiscordApp]. +- Replace `12345678` in this link `https://discordapp.com/oauth2/authorize?client_id=12345678&scope=bot&permissions=66186303` with your `Client ID`. +- Link should look like this: `https://discordapp.com/oauth2/authorize?client_id=**YOUR_CLENT_ID**&scope=bot&permissions=66186303`. +- Go to newly created link and pick the server we created, and click `Authorize`. +- Bot should be added to your server. + +####Setting up OwnerIds +- In the server where your bot is, in a text channel, type `.uid` +- Your `User ID` should show, copy it. +- Close `NadekoBot.exe` +- Replace your `User ID` in the `credentials.json` between `[ ]` and save the changes. +- Run `NadekoBot.exe` again. +- Now you are the bot owner. +- You can add `User IDs` from the other users by separating IDs with a comma if you want to have more owners. + +####Setting NadekoBot Music + +For Music Setup and API keys check [Setting up NadekoBot for Music](Windows Guide.md#setting-up-nadekobot-for-music) and [JSON Explanations](JSON Explanations.md). + +####Some more Info - TMUX + +-If you want to see the sessions after logging back again, type `tmux ls`, and that will give you the list of sessions running. +-If you want to switch to/ see that session, type `tmux a -t nadeko` (nadeko is the name of the session we created before so, replace `“nadeko”` with the session name you created.) +-If you want to kill NadekoBot session, type `tmux kill-session -t nadeko` + +####Some more Info - Screen + +-If you want to see the sessions after logging back again, type `screen -ls`, and that will give you the list of screens. +-If you want to switch to/ see that screen, type `screen -r nadeko` (nadeko is the name of the screen we created before so, replace `“nadeko”` with the screen name you created.) +-If you want to kill the NadekoBot screen, type `screen -X -S nadeko quit` + +[Homebrew]: http://brew.sh/ +[Mono]: http://www.mono-project.com/docs/compiling-mono/mac/ +[Releases]: https://github.com/Kwoth/NadekoBot/releases +[DiscordApp]: https://discordapp.com/developers/applications/me +[Atom]: https://atom.io/ +[Invite Guide]: http://discord.kongslien.net/guide.html +[Google Console]: https://console.developers.google.com +[Soundcloud]: https://soundcloud.com/you/apps/new diff --git a/docs/ComprehensiveGuide.md b/docs/guides/Windows Guide.md similarity index 86% rename from docs/ComprehensiveGuide.md rename to docs/guides/Windows Guide.md index 1666d345..5d1a680d 100644 --- a/docs/ComprehensiveGuide.md +++ b/docs/guides/Windows Guide.md @@ -11,10 +11,10 @@ ________________________________________________________________________________ - 5) [7zip][7zip] (or whatever you are using, WinRar) - 6) [Notepad++][Notepad++] -####Guide: +####Guide - Create a folder, name it `Nadeko`. -- Head to [Releases][Releases]* and download `WINDOWS.-.nadeupdater.7z`. +- Head to [Updater Releases Page][Updater] and download `WINDOWS.-.nadeupdater.7z`. - Copy `WINDOWS.-.nadeupdater.7z` to the `Nadeko` (folder we created before) and extract everything. - You will see a file `NadekoUpdater.bat ` and a folder `publish ` after extraction. - Run/Launch/Open the file `NadekoUpdater.bat ` and you will see it running in cmd.exe asking you with **3 options** *1-3*. @@ -40,11 +40,11 @@ ________________________________________________________________________________ - In there you will see fields like `Token`, `ClientId`, `BotId`, `OwnerIDs`. - In your [DiscordApp][DiscordApp], under `Bot User` part, you will see the `Token:click to reveal` part, click to reveal it. - Copy your bot's token, and put it between `" "` in your `credentials.json` file. -- Copy `Client ID` and replace it with the example one in your `credentials.json`. -- Copy `Bot ID` and replace it with the example one in your `credentials.json`. +- Copy `Client ID` and replace it with the example one in your `credentials.json` in `Client ID` **and** `BotID` field. - Save your `credentials.json` but keep it open. We need to put your `User ID` and owner. -####Inviting your bot to your server [Invite Guide][Invite Guide] +####Inviting your bot to your server +- [Invite Guide][Invite Guide] - Create a new server in Discord. - Copy your `Client ID` from your [DiscordApp][DiscordApp]. - Replace `12345678` in this link `https://discordapp.com/oauth2/authorize?client_id=12345678&scope=bot&permissions=66186303` with your `Client ID`. @@ -58,7 +58,7 @@ ________________________________________________________________________________ - Your bot should now be online in the server we added him to. - Note: Your bot will be offline in case you close `NadekoBot.exe`. -####Setting up OwnerIds: +####Setting up OwnerIds - In the server where your bot is, in a text channel, type `.uid` - Your `User ID` should show, copy it. - Close `NadekoBot.exe` @@ -67,7 +67,10 @@ ________________________________________________________________________________ - Now you are the bot owner. - You can add `User IDs` from the other users by separating IDs with a comma if you want to have more owners. -`*Alternatively, you can download nadekobot from [Releases][Releases] and extract the zip yourself. That is what updater does, except it makes it easier for you to update because it doesn't overwrite important files. If you are downloading releases you will have to be careful about your config, credentials, and other files you edited in order to preserve your data every time you update.` +`*Alternatively, you can download nadekobot from` [Releases][Releases] `and extract the zip yourself. +That is what updater does, except it makes it easier for you to update because it doesn't overwrite +important files.If you are downloading releases you will have to be careful about your config, +credentials, and other files you edited in order to preserve your data every time you update.` ________________________________________________________________________________ @@ -80,7 +83,7 @@ ________________________________________________________________________________ - Go to [Google Console][Google Console] and log in. - Create a new project (name does not matter). Once the project is created, go into "Enable and manage APIs." - Under the "Other Popular APIs" section, enable `URL Shortener API` and `Custom Search Api`. Under the `YouTube APIs` section, enable `YouTube Data API`. - - On the left tab, access `Credentials`. Click `Create Credentials` button. Click on `API Key`, and then `Server Key` in the new window that appears. Enter in a name for the `Server Key`. A new window will appear with your `Google API key`. + - On the left tab, access `Credentials`. Click `Create Credentials` button. Click on `API Key`. A new window will appear with your `Google API key`. - Copy the key. - Open up `credentials.json`. - For `"GoogleAPIKey"`, fill in with the new key we copied. @@ -91,8 +94,9 @@ ________________________________________________________________________________ - In `credentials.json`, fill in `"SoundcloudClientID"` with the copied ID. - Restart your computer. -##### Prerequisites for manual `ffmpeg` setup: +####Manual `ffmpeg` setup **Do this step in case you were not able to install `ffmpeg` with the installer.** + - Create a folder named `ffmpeg` in your main Windows directory. We will use **C:\ffmpeg** (for our guide) - Download FFMPEG through the link https://ffmpeg.zeranoe.com/builds/ (download static build) - Extract it using `7zip` and place the folder `ffmpeg-xxxxx-git-xxxxx-xxxx-static` inside **C:\ffmpeg** @@ -104,7 +108,8 @@ ________________________________________________________________________________ [NET Framework]: https://www.microsoft.com/en-us/download/details.aspx?id=48130 [FFMPEG]: https://github.com/Soundofdarkness/FFMPEG-Installer [7zip]: http://www.7-zip.org/download.html -[Releases]: //github.com/Kwoth/NadekoUpdater/releases/tag/v1.0 +[Updater]: https://github.com/Kwoth/NadekoUpdater/releases +[Releases]: https://github.com/Kwoth/NadekoBot/releases [DiscordApp]: https://discordapp.com/developers/applications/me [Notepad++]: https://notepad-plus-plus.org/ [Invite Guide]: http://discord.kongslien.net/guide.html diff --git a/docs/guides/mii-chan.md b/docs/guides/mii-chan.md new file mode 100644 index 00000000..76be958b --- /dev/null +++ b/docs/guides/mii-chan.md @@ -0,0 +1,2 @@ +Docs are in the air. +Kwoth is magic. diff --git a/docs/index.md b/docs/index.md index 9cec30e0..942c22a5 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1 +1,47 @@ -Hai, this will be docs of nakeda \ No newline at end of file +#NadekoBot Documentation + +To invite NadekoBot to your server, click on the image bellow: + +[![img][img]](https://discordapp.com/oauth2/authorize?client_id=170254782546575360&scope=bot&permissions=66186303) + +In case you need any help, hop on [NadekoBot Server][NadekoBot Server], where we can provide support. + +NadekoBot is an open source project, and it can be found on our [GitHub][GitHub] page. + +Here you can read current [Issues][Issues]. + +If you want to contribute, be sure to PR on the **[dev][dev]** branch. +##Content +- [About](about.md) +- Guides + - [Windows Guide](guides/Windows Guide.md) + - [Linux Guide](guides/Linux Guide.md) + - [OSX Guide](guides/OSX Guide.md) + - [Building from Source](guides/Building from Source.md) + - [Docker Guide](guides/Docker Guide.md) +- Commands + - [Readme](Readme.md) + - [Commands List](Commands List.md) +- [Permissions System](Permissions System.md) +- [JSON Explanations](JSON Explanations.md) +- [Custom Reactions](Custom Reactions.md) +- [Frequently Asked Questions](Frequently Asked Questions.md) +- [Contribution Guide](Contribution Guide.md) +- [Donate](Donate.md) + +[img]: https://discordcdn.com/attachments/202743183774318593/210580315381563392/discord.png +[NadekoBot Server]: https://discord.gg/0ehQwTK2RBjAxzEY +[GitHub]: https://github.com/Kwoth/NadekoBot +[Issues]: https://github.com/Kwoth/NadekoBot/issues +[dev]: https://github.com/Kwoth/NadekoBot/tree/dev + +[Italian]: http://i.imgur.com/SsaTwOF.png?1 +[Russian]: http://i.imgur.com/wf9bc5G.png?1 +[German]: http://i.imgur.com/EM5qPzf.png?1 +[Chinese]: http://i.imgur.com/MVCNOjT.png?1 +[English]: http://i.imgur.com/jHTyZFS.png?1 +[Spanish]: http://i.imgur.com/9BsusB6.png?1 +[French]: http://i.imgur.com/g2ARPF6.png?1 +[Dutch]: http://i.imgur.com/SadddLj.png?1 +[Norwegian]: http://i.imgur.com/TCVa0V8.png?1 +[Serbian]: http://i.imgur.com/5evoUbU.png diff --git a/docs/index.rst b/docs/index.rst deleted file mode 100644 index 9cec30e0..00000000 --- a/docs/index.rst +++ /dev/null @@ -1 +0,0 @@ -Hai, this will be docs of nakeda \ No newline at end of file diff --git a/docs/license.md b/docs/license.md deleted file mode 100644 index ad9c4e5f..00000000 --- a/docs/license.md +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2015 Master Kwoth - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/src/NadekoBot/Modules/Help/Help.cs b/src/NadekoBot/Modules/Help/Help.cs index e21bdf12..24d7ecc8 100644 --- a/src/NadekoBot/Modules/Help/Help.cs +++ b/src/NadekoBot/Modules/Help/Help.cs @@ -140,7 +140,7 @@ namespace NadekoBot.Modules.Help } helpstr = helpstr.Replace(NadekoBot.Client.GetCurrentUser().Username , "@BotName"); #if DEBUG - File.WriteAllText("../../docs/commandslist.md", helpstr.ToString()); + File.WriteAllText("../../docs/Commands List.md", helpstr.ToString()); #else File.WriteAllText("commandlist.md", helpstr.ToString()); #endif diff --git a/src/tests/Tests.cs b/src/tests/Tests.cs index 57d1e8f9..520b5fbf 100644 --- a/src/tests/Tests.cs +++ b/src/tests/Tests.cs @@ -60,25 +60,25 @@ namespace Tests Assert.Throws(typeof(IndexOutOfRangeException), () => { root.GetAt(10); }); } - [Fact] - public void InsertTest() { + //[Fact] + //public void InsertTest() { - var root = GetRoot(); + // var root = GetRoot(); - root.Insert(5, new Permission() { SecondaryTargetName = "in2" }); + // root.Insert(5, new Permission() { SecondaryTargetName = "in2" }); - Assert.Equal(11, root.Count()); - Assert.Equal("in2", root.GetAt(5).SecondaryTargetName); + // Assert.Equal(11, root.Count()); + // Assert.Equal("in2", root.GetAt(5).SecondaryTargetName); - root.Insert(0, new Permission() { SecondaryTargetName = "Inserted" }); + // root.Insert(0, new Permission() { SecondaryTargetName = "Inserted" }); - root = root.Previous; - Assert.Equal("Inserted", root.SecondaryTargetName); - Assert.Equal(12, root.Count()); - Assert.Equal("Root", root.GetAt(1).SecondaryTargetName); + // root = root.Previous; + // Assert.Equal("Inserted", root.SecondaryTargetName); + // Assert.Equal(12, root.Count()); + // Assert.Equal("Root", root.GetAt(1).SecondaryTargetName); - Assert.Throws(typeof(IndexOutOfRangeException), () => { root.GetAt(12); }); - } + // Assert.Throws(typeof(IndexOutOfRangeException), () => { root.GetAt(12); }); + //} [Fact] public void RemoveAtTest() From bc40f3eb7ffd9efb07266f1f2ba7b84180bfa714 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Mon, 10 Oct 2016 00:45:35 +0200 Subject: [PATCH 64/74] Cmd list with new docs --- docs/Commands List.md | 599 +++++++++++++++++++----------------------- 1 file changed, 275 insertions(+), 324 deletions(-) diff --git a/docs/Commands List.md b/docs/Commands List.md index 675b3f62..c9367655 100644 --- a/docs/Commands List.md +++ b/docs/Commands List.md @@ -1,360 +1,311 @@ -### Help -Command and aliases | Description | Usage -----------------|--------------|------- -`-h`, `-help`, `@BotName help`, `@BotName h`, `~h` | Either shows a help for a single command, or PMs you help link if no arguments are specified. | `-h !m q` or just `-h` -`-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`, `~donate` | Instructions for helping the project! | `-donate` or `~donate` -`-modules`, `.modules` | List all bot modules. | `-modules` or `.modules` -`-commands`, `.commands` | List all of the bot's commands from a certain module. | `-commands` or `.commands` - ### Administration Command and aliases | Description | Usage ----------------|--------------|------- -`.grdel` | Toggles automatic deletion of greet and bye messages. **Needs Manage Server Permissions.**| `.grdel` -`.greet` | Toggles anouncements on the current channel when someone joins the server. **Needs Manage Server Permissions.**| `.greet` -`.greetmsg` | Sets a new join announcement message. Type %user% if you want to mention the new member. Using it with no message will show the current greet message. **Needs Manage Server Permissions.**| `.greetmsg Welcome, %user%.` -`.bye` | Toggles anouncements on the current channel when someone leaves the server. | `.bye` -`.byemsg` | Sets a new leave announcement message. Type %user% if you want to mention the new member. Using it with no message will show the current bye message. **Needs Manage Server Permissions.**| `.byemsg %user% has left.` -`.byepm` | Toggles whether the good bye messages will be sent in a PM or in the text channel. **Needs Manage Server Permissions.**| `.byepm` -`.greetpm` | Toggles whether the greet messages will be sent in a PM or in the text channel. **Needs Manage Server Permissions.**| `.greetpm` -`.spmom` | Toggles whether mentions of other offline users on your server will send a pm to them. **Needs Manage Server Permissions.**| `.spmom` -`.logserver` | Toggles logging in this channel. Logs every message sent/deleted/edited on the server. **Bot Owner Only!** | `.logserver` -`.logignore` | Toggles whether the .logserver command ignores this channel. Useful if you have hidden admin channel and public log channel. **Bot Owner Only!**| `.logignore` -`.userpresence` | Starts logging to this channel when someone from the server goes online/offline/idle. **Needs Manage Server Permissions.**| `.userpresence` -`.voicepresence` | Toggles logging to this channel whenever someone joins or leaves a voice channel you are in right now. **Needs Manage Server Permissions.**| `.voicerpresence` -`.repeatinvoke`, `.repinv` | Immediately shows the repeat message and restarts the timer. **Needs Manage Messages Permissions.**| `.repinv` -`.repeat` | Repeat a message every X minutes. If no parameters are specified, repeat is disabled. **Needs Manage Messages Permissions.** |`.repeat 5 Hello there` -`.rotateplaying`, `.ropl` | Toggles rotation of playing status of the dynamic strings you specified earlier. **Bot Owner Only!** | `.ropl` -`.addplaying`, `.adpl` | Adds a specified string to the list of playing strings to rotate. Supported placeholders: %servers%, %users%, %playing%, %queued%, %trivia% **Bot Owner Only!**| `.adpl` -`.listplaying`, `.lipl` | Lists all playing statuses with their corresponding number. **Bot Owner Only!**| `.lipl` -`.removeplaying`, `.repl`, `.rmpl` | Removes a playing string on a given number. **Bot Owner Only!**| `.rmpl` -`.slowmode` | Toggles slow mode. When ON, users will be able to send only 1 message every 5 seconds. **Needs Manage Messages Permissions.**| `.slowmode` -`.cleanv+t`, `.cv+t` | Deletes all text channels ending in `-voice` for which voicechannels are not found. **Use at your own risk. Needs Manage Roles and Manage Channels Permissions.** | `.cleanv+t` -`.voice+text`, `.v+t` | Creates a text channel for each voice channel only users in that voice channel can see.If you are server owner, keep in mind you will see them all the time regardless. **Needs Manage Roles and Manage Channels Permissions.**| `.voice+text` -`.scsc` | Starts an instance of cross server channel. You will get a token as a DM that other people will use to tune in to the same instance. **Bot Owner Only.** | `.scsc` -`.jcsc` | Joins current channel to an instance of cross server channel using the token. **Needs Manage Server Permissions.**| `.jcsc` -`.lcsc` | Leaves Cross server channel instance from this channel. **Needs Manage Server Permissions.**| `.lcsc` -`.asar` | Adds a role, or list of roles separated by whitespace(use quotations for multiword roles) to the list of self-assignable roles. **Needs Manage Roles Permissions.**| `.asar Gamer` -`.rsar` | Removes a specified role from the list of self-assignable roles. | `.rsar` -`.lsar` | Lists all self-assignable roles. | `.lsar` -`.togglexclsar`, `.tesar` | toggle whether the self-assigned roles should be exclusive | `.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 role to you that you choose. Role must be on a list of self-assignable roles. | `.iamn Gamer` -`.addcustreact`, `.acr` | Add a custom reaction. Guide here: **Bot Owner Only!** | `.acr "hello" Hi there %user%` -`.listcustreact`, `.lcr` | Lists custom reactions (paginated with 30 commands per page). Use 'all' instead of page number to get all custom reactions DM-ed to you. |`.lcr 1` -`.showcustreact`, `.scr` | Shows all possible responses from a single custom reaction. |`.scr %mention% bb` -`.editcustreact`, `.ecr` | Edits a custom reaction, arguments are custom reactions name, index to change, and a (multiword) message **Bot Owner Only** | `.ecr "%mention% disguise" 2 Test 123` -`.delcustreact`, `.dcr` | Deletes a custom reaction with given name (and index). **Bot Owner Only.**| `.dcr index` -`.autoassignrole`, `.aar` | Automaticaly assigns a specified role to every user who joins the server. **Needs Manage Roles Permissions.** |`.aar` to disable, `.aar Role Name` to enable -`.leave` | Makes Nadeko leave the server. Either name or id required. **Bot Owner Only!**| `.leave 123123123331` -`.listincidents`, `.lin` | List all UNREAD incidents and flags them as read. **Needs Manage Server Permissions.**| `.lin` -`.listallincidents`, `.lain` | Sends you a file containing all incidents and flags them as read. **Needs Manage Server Permissions.**| `.lain` -`.delmsgoncmd` | Toggles the automatic deletion of user's successful command message to prevent chat flood. **Server Manager Only.** | `.delmsgoncmd` -`.restart` | Restarts the bot. Might not work. **Bot Owner Only** | `.restart` -`.setrole`, `.sr` | Sets a role for a given user. **Needs Manage Roles Permissions.**| `.sr @User Guest` -`.removerole`, `.rr` | Removes a role from a given user. **Needs Manage Roles Permissions.**| `.rr @User Admin` -`.renamerole`, `.renr` | Renames a role. Roles you are renaming must be lower than bot's highest role. **Manage Roles Permissions.** | `.renr "First role" SecondRole` -`.removeallroles`, `.rar` | Removes all roles from a mentioned user. **Needs Manage Roles Permissions.**| `.rar @User` -`.createrole`, `.cr` | Creates a role with a given name. **Needs Manage Roles Permissions.**| `.cr Awesome Role` -`.rolecolor`, `.rc` | Set a role's color to the hex or 0-255 rgb color value provided. **Needs Manage Roles Permissions.** | `.rc Admin 255 200 100` or `.rc Admin ffba55` -`.ban`, `.b` | Bans a user by id or name with an optional message. **Needs Ban Permissions.**| `.b "@some Guy" Your behaviour is toxic.` -`.softban`, `.sb` | Bans and then unbans a user by id or name with an optional message. **Needs Ban Permissions.**| `.sb "@some Guy" Your behaviour is toxic.` -`.kick`, `.k` | Kicks a mentioned user. **Needs Kick Permissions.**| `.k "@some Guy" Your behaviour is toxic.` -`.mute` | Mutes mentioned user or users. **Needs Mute Permissions.**| `.mute "@Someguy"` or `.mute "@Someguy" "@Someguy"` -`.unmute` | Unmutes mentioned user or users. **Needs Mute Permissions.**| `.unmute "@Someguy"` or `.unmute "@Someguy" "@Someguy"` -`.deafen`, `.deaf` | Deafens mentioned user or users. **Needs Deafen Permissions.**| `.deaf "@Someguy"` or `.deaf "@Someguy" "@Someguy"` -`.undeafen`, `.undef` | Undeafens mentioned user or users. **Needs Deafen Permissions.** | `.undef "@Someguy"` or `.undef "@Someguy" "@Someguy"` -`.delvoichanl`, `.dvch` | Deletes a voice channel with a given name. **Needs Manage Channel Permissions.**| `.dvch VoiceChannelName` -`.creatvoichanl`, `.cvch` | Creates a new voice channel with a given name. **Needs Manage Channel Permissions.** | `.cvch VoiceChannelName` -`.deltxtchanl`, `.dtch` | Deletes a text channel with a given name. **Needs Manage Channel Permissions.** | `.dtch TextChannelName` -`.creatxtchanl`, `.ctch` | Creates a new text channel with a given name. **Needs Manage Channel Permissions.** | `.ctch TextChannelName` -`.settopic`, `.st` | Sets a topic on the current channel. **Needs Manage Channel Permissions.** | `.st My new topic` -`.setchanlname`, `.schn` | Changed the name of the current channel. **Needs Manage Channel Permissions.**| `.schn NewName` -`.heap` | Shows allocated memory - **Bot Owner Only!** | `.heap` -`.prune`, `.clr` | `.prune` removes all nadeko's messages in the last 100 messages.`.prune X` removes last X 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 'Someone's' messages in the channel. **Needs Manage Messages Permissions**| `.prune` or `.prune 5` or `.prune @Someone` or `.prune @Someone X` -`.die` | Shuts the bot down and notifies users about the restart. **Bot Owner Only!** | `.die` -`.setname`, `.newnm` | Give the bot a new name. **Bot Owner Only!** | `.newnm BotName` -`.newavatar`, `.setavatar` | Sets a new avatar image for the NadekoBot. Argument is a direct link to an image. **Bot Owner Only!** | `.setavatar http://i.imgur.com/xTG3a1I.jpg` -`.setgame` | Sets the bots game. **Bot Owner Only!** | `.setgame Playing with kwoth` -`.send` | Send a message to someone on a different server through the bot. **Bot Owner Only!** | `.send sid|u:uid Hello user!` or `.send sid|c:cid Message to channel!` (cid = channel id, sid = server id) -`.mentionrole`, `.menro` | Mentions every person from the provided role or roles (separated by a ',') on this server. Requires you to have mention everyone permission. | `.menro RoleName` -`.unstuck` | Clears the message queue. **Bot Owner Only!** | `.unstuck` -`.donators` | List of lovely people who donated to keep this project alive. | `.donators` -`.donadd` | Add a donator to the database. **Kwoth Only** | `.donadd Donate Amount` -`.announce` | Sends a message to all servers' general channel bot is connected to.**Bot Owner Only!** | `.announce Useless spam` -`.savechat` | Saves a number of messages to a text file and sends it to you. **Bot Owner Only** | `.savechat 150` - -### Utility -Command and aliases | Description | Usage -----------------|--------------|------- -`.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 Start now!` -`.remindmsg` | 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!** | `.remindmsg do something else` -`.serverinfo`, `.sinfo` | Shows info about the server the bot is on. If no channel 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` -`.whoplays` | Shows a list of users who are playing the specified game. | `.whoplays Overwatch` -`.inrole` | Lists every person from the provided role or roles (separated by a ',') on this server. If the list is too long for 1 message, you must have Manage Messages permission. | `.inrole Role` -`.checkmyperms` | Checks your userspecific permissions on this channel. | `.checkmyperms` -`.stats` | Shows some basic stats for Nadeko. | `.stats` -`.dysyd` | Shows some basic stats for Nadeko. | `.dysyd` -`.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 all roles on this server or a single user if specified. | `.roles` -`.channeltopic`, `.ct` | Sends current channel's topic as a message. | `.ct` +`.restart` | `.restart` | Restarts the bot. Might not work. **Bot owner only.** +`.delmsgoncmd` | `.delmsgoncmd` | Toggles the automatic deletion of user's successful command message to prevent chat flood. **Server Manager Only.** **Requires Administrator server permission.** +`.setrole` `.sr` | `.sr @User Guest` | Sets a role for a given user. **Requires ManageRoles server permission.** +`.removerole` `.rr` | `.rr @User Admin` | Removes a role from a given user. **Requires ManageRoles server permission.** +`.renamerole` `.renr` | `.renr "First role" SecondRole` | Renames a role. Roles you are renaming must be lower than bot's highest role. **Manage Roles Permissions.** **Requires ManageRoles server permission.** +`.removeallroles` `.rar` | `.rar @User` | Removes all roles from a mentioned user. **Requires ManageRoles server permission.** +`.createrole` `.cr` | `.cr Awesome Role` | Creates a role with a given name. **Requires ManageRoles server permission.** +`.rolecolor` `.rc` | `.rc Admin 255 200 100` or `.rc Admin ffba55` | Set a role's color to the hex or 0-255 rgb color value provided. **Requires ManageRoles server permission.** +`.ban` `.b` | `.b "@some Guy" Your behaviour is toxic.` | Bans a user by id or name with an optional message. **Requires BanMembers server permission.** +`.softban` `.sb` | `.sb "@some Guy" Your behaviour is toxic.` | Bans and then unbans a user by id or name with an optional message. **Requires BanMembers server permission.** +`.kick` `.k` | `.k "@some Guy" Your behaviour is toxic.` | Kicks a mentioned user. **Requires KickMembers server permission.** +`.mute` | `.mute @Someone` | Mutes a mentioned user in a voice channel. **Requires MuteMembers server permission.** +`.unmute` | `.unmute "@Someguy"` or `.unmute "@Someguy" "@Someguy"` | Unmutes mentioned user or users. **Requires MuteMembers server permission.** +`.deafen` `.deaf` | `.deaf "@Someguy"` or `.deaf "@Someguy" "@Someguy"` | Deafens mentioned user or users. **Requires DeafenMembers server permission.** +`.undeafen` `.undef` | `.undef "@Someguy"` or `.undef "@Someguy" "@Someguy"` | Undeafens mentioned user or users. **Requires DeafenMembers server permission.** +`.delvoichanl` `.dvch` | `.dvch VoiceChannelName` | Deletes a voice channel with a given name. **Requires ManageChannels server permission.** +`.creatvoichanl` `.cvch` | `.cvch VoiceChannelName` | Creates a new voice channel with a given name. **Requires ManageChannels server permission.** +`.deltxtchanl` `.dtch` | `.dtch TextChannelName` | Deletes a text channel with a given name. **Requires ManageChannels server permission.** +`.creatxtchanl` `.ctch` | `.ctch TextChannelName` | Creates a new text channel with a given name. **Requires ManageChannels server permission.** +`.settopic` `.st` | `.st My new topic` | Sets a topic on the current channel. **Requires ManageChannels server permission.** +`.setchanlname` `.schn` | `.schn NewName` | Changed the name of the current channel. **Requires ManageChannels server permission.** +`.prune` `.clr` | `.prune` or `.prune 5` or `.prune @Someone` or `.prune @Someone X` | `.prune` removes all nadeko's messages in the last 100 messages.`.prune X` removes last X 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 'Someone's' messages in the channel. +`.prune` `.clr` | `.prune` or `.prune 5` or `.prune @Someone` or `.prune @Someone X` | `.prune` removes all nadeko's messages in the last 100 messages.`.prune X` removes last X 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 'Someone's' messages in the channel. **Requires ManageMessages server permission.** +`.prune` `.clr` | `.prune` or `.prune 5` or `.prune @Someone` or `.prune @Someone X` | `.prune` removes all nadeko's messages in the last 100 messages.`.prune X` removes last X 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 'Someone's' messages in the channel. **Requires ManageMessages server permission.** +`.die` | `@NadekoBot die` | Works only for the owner. Shuts the bot down. **Bot owner only.** +`.setname` `.newnm` | `.newnm BotName` | Give the bot a new name. **Bot owner only.** +`.setavatar` `.setav` | `.setav http://i.imgur.com/xTG3a1I.jpg` | Sets a new avatar image for the NadekoBot. Argument is a direct link to an image. **Bot owner only.** +`.setgame` | `.setgame Playing with kwoth` | Sets the bots game. **Bot owner only.** +`.send` | `.send sid` | Send a message to someone on a different server through the bot. **Bot owner only.** +`.announce` | `.announce Useless spam` | Sends a message to all servers' general channel bot is connected to. **Bot owner only.** +`.savechat` | `.savechat 150` | Saves a number of messages to a text file and sends it to you. **Bot owner only.** +`.mentionrole` `.menro` | `.menro RoleName` | Mentions every person from the provided role or roles (separated by a ',') on this server. Requires you to have mention everyone permission. **Requires MentionEveryone server permission.** +`.donators` | `.donators` | List of lovely people who donated to keep this project alive. +`.donadd` | `.donadd Donate Amount` | Add a donator to the database. **Kwoth Only** **Bot owner only.** +`.autoassignrole` `.aar` | `.aar` to disable, `.aar Role Name` to enable | Automaticaly assigns a specified role to every user who joins the server. **Requires ManageRoles server permission.** +`.scsc` | `.scsc` | Starts an instance of cross server channel. You will get a token as a DM that other people will use to tune in to the same instance. **Bot owner only.** +`.jcsc` | `.jcsc` | Joins current channel to an instance of cross server channel using the token. **Requires ManageServer server permission.** +`.lcsc` | `.lcsc` | Leaves Cross server channel instance from this channel. **Requires ManageServer server permission.** +`.logserver` | `.logserver` | Logs server activity in this channel. **Requires Administrator server permission.** **Bot owner only.** +`.logignore` | `.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.** +`.userpresence` | `.userpresence` | Starts logging to this channel when someone from the server goes online/offline/idle. **Requires Administrator server permission.** +`.voicepresence` | `.voicerpresence` | Toggles logging to this channel whenever someone joins or leaves a voice channel you are in right now. **Requires Administrator server permission.** +`.repeatinvoke` `.repinv` | `.repinv` | Immediately shows the repeat message and restarts the timer. **Requires ManageMessages server permission.** +`.repeat` | `.repeat 5 Hello there` | Repeat a message every X minutes. If no parameters are specified, repeat is disabled. +`.repeat` | `.repeat 5 Hello there` | Repeat a message every X minutes. If no parameters are specified, repeat is disabled. +`.migratedata` | `.migratedata` | Migrate data from old bot configuration **Bot owner only.** +`.rotateplaying` `.ropl` | `.ropl` | Toggles rotation of playing status of the dynamic strings you specified earlier. **Bot owner only.** +`.addplaying` `.adpl` | `.adpl` | Adds a specified string to the list of playing strings to rotate. Supported placeholders: %servers%, %users%, %playing%, %queued% **Bot owner only.** +`.listplaying` `.lipl` | `.lipl` | Lists all playing statuses with their corresponding number. **Bot owner only.** +`.removeplaying` `.rmlp` `.repl` | `.rmpl` | Removes a playing string on a given number. **Bot owner only.** +`.slowmode` | `.slowmode` | Toggles slow mode. When ON, users will be able to send only 1 message every 5 seconds. +`.asar` | `.asar Gamer` | Adds a role, or list of roles separated by whitespace(use quotations for multiword roles) to the list of self-assignable roles. **Requires ManageRoles server permission.** +`.rsar` | `.rsar` | Removes a specified role from the list of self-assignable roles. **Requires ManageRoles server permission.** +`.lsar` | `.lsar` | Lists all self-assignable roles. +`.togglexclsar` `.tesar` | `.tesar` | toggle whether the self-assigned roles should be exclusive **Requires ManageRoles server permission.** +`.iam` | `.iam Gamer` | Adds a role to you that you choose. Role must be on a list of self-assignable roles. +`.iamnot` `.iamn` | `.iamn Gamer` | Removes a role to you that you choose. Role must be on a list of self-assignable roles. +`.leave` | `.leave 123123123331` | Makes Nadeko leave the server. Either name or id required. **Bot owner only.** +`.greetdel` | `.greetdel` | Toggles automatic deletion of greet messages. **Requires ManageServer server permission.** +`.greet` | `.greet` | Toggles anouncements on the current channel when someone joins the server. **Requires ManageServer server permission.** +`.greetmsg` | `.greetmsg Welcome, %user%.` | 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. **Requires ManageServer server permission.** +`.greetdm` | `.greetdm` | Toggles whether the greet messages will be sent in a DM (This is separate from greet - you can have both, any or neither enabled). **Requires ManageServer server permission.** +`.greetdmmsg` | `.greetdmmsg Welcome to the server, %user%`. | Sets a new join announcement message which will be sent to the user who joined. Type %user% if you want to mention the new member. Using it with no message will show the current DM greet message. **Requires ManageServer server permission.** +`.bye` | `.bye` | Toggles anouncements on the current channel when someone leaves the server. **Requires ManageServer server permission.** +`.byemsg` | `.byemsg %user% has left.` | Sets a new leave announcement message. Type %user% if you want to mention the new member. Using it with no message will show the current bye message. **Requires ManageServer server permission.** +`.byedel` | `.byedel` | Toggles automatic deletion of bye messages. **Requires ManageServer server permission.** +`.voice+text` `.v+t` | `.voice+text` | Creates a text channel for each voice channel only users in that voice channel can see.If you are server owner, keep in mind you will see them all the time regardless. **Requires ManageRoles server permission.** **Requires ManageChannels server permission.** +`.cleanvplust` `.cv+t` | `.cleanv+t` | Deletes all text channels ending in `-voice` for which voicechannels are not found. **Use at your own risk. Needs Manage Roles and Manage Channels Permissions.** **Requires ManageChannels server permission.** **Requires ManageRoles server permission.** ### Permissions Command and aliases | Description | Usage ----------------|--------------|------- -`;chnlfilterinv`, `;cfi` | Enables or disables automatic deleting of invites on the channel.If no channel supplied, it will default to current one. Use ALL to apply to all existing channels at once. | `;cfi enable #general-chat` -`;srvrfilterinv`, `;sfi` | Enables or disables automatic deleting of invites on the server. | `;sfi disable` -`;chnlfilterwords`, `;cfw` | Enables or disables automatic deleting of messages containing banned words on the channel.If no channel supplied, it will default to current one. Use ALL to apply to all existing channels at once. | `;cfw enable #general-chat` -`;addfilterword`, `;afw` | Adds a new word to the list of filtered words | `;afw poop` -`;rmvfilterword`, `;rfw` | Removes the word from the list of filtered words | `;rw poop` -`;lstfilterwords`, `;lfw` | Shows a list of filtered words | `;lfw` -`;srvrfilterwords`, `;sfw` | Enables or disables automatic deleting of messages containing forbidden words on the server. | `;sfw disable` -`;permrole`, `;pr` | Sets a role which can change permissions. Or supply no parameters to find out the current one. Default one is 'Nadeko'. | `;pr role` -`;rolepermscopy`, `;rpc` | Copies BOT PERMISSIONS (not discord permissions) from one role to another. |`;rpc Some Role ~ Some other role` -`;chnlpermscopy`, `;cpc` | Copies BOT PERMISSIONS (not discord permissions) from one channel to another. |`;cpc Some Channel ~ Some other channel` -`;usrpermscopy`, `;upc` | Copies BOT PERMISSIONS (not discord permissions) from one role to another. |`;upc @SomeUser ~ @SomeOtherUser` -`;verbose`, `;v` | Sets whether to show when a command/module is blocked. | `;verbose true` -`;srvrperms`, `;sp` | Shows banned permissions for this server. | `;sp` -`;roleperms`, `;rp` | Shows banned permissions for a certain role. No argument means for everyone. | `;rp AwesomeRole` -`;chnlperms`, `;cp` | Shows banned permissions for a certain channel. No argument means for this channel. | `;cp #dev` -`;userperms`, `;up` | Shows banned permissions for a certain user. No argument means for yourself. | `;up Kwoth` -`;srvrmdl`, `;sm` | Sets a module's permission at the server level. | `;sm "module name" enable` -`;srvrcmd`, `;sc` | Sets a command's permission at the server level. | `;sc "command name" disable` -`;rolemdl`, `;rm` | Sets a module's permission at the role level. | `;rm "module name" enable MyRole` -`;rolecmd`, `;rc` | Sets a command's permission at the role level. | `;rc "command name" disable MyRole` -`;chnlmdl`, `;cm` | Sets a module's permission at the channel level. | `;cm "module name" enable SomeChannel` -`;chnlcmd`, `;cc` | Sets a command's permission at the channel level. | `;cc "command name" enable SomeChannel` -`;usrmdl`, `;um` | Sets a module's permission at the user level. | `;um "module name" enable SomeUsername` -`;usrcmd`, `;uc` | Sets a command's permission at the user level. | `;uc "command name" enable SomeUsername` -`;allsrvrmdls`, `;asm` | Sets permissions for all modules at the server level. | `;asm [enable/disable]` -`;allsrvrcmds`, `;asc` | Sets permissions for all commands from a certain module at the server level. | `;asc "module name" [enable/disable]` -`;allchnlmdls`, `;acm` | Sets permissions for all modules at the channel level. | `;acm [enable/disable] SomeChannel` -`;allchnlcmds`, `;acc` | Sets permissions for all commands from a certain module at the channel level. | `;acc "module name" [enable/disable] SomeChannel` -`;allrolemdls`, `;arm` | Sets permissions for all modules at the role level. | `;arm [enable/disable] MyRole` -`;allrolecmds`, `;arc` | Sets permissions for all commands from a certain module at the role level. | `;arc "module name" [enable/disable] MyRole` -`;ubl` | Blacklists a mentioned user. **Bot Owner Only!**| `;ubl [user_mention]` -`;uubl` | Unblacklists a mentioned user. **Bot Owner Only!** | `;uubl [user_mention]` -`;cbl` | Blacklists a mentioned channel (#general for example). | `;cbl #some_channel` -`;cubl` | Unblacklists a mentioned channel (#general for example). | `;cubl #some_channel` -`;sbl` | Blacklists a server by a name or id (#general for example). **BOT OWNER ONLY** | `;sbl [servername/serverid]` -`;cmdcooldown`, `;cmdcd` | Sets a cooldown per user for a command. Set 0 to clear. **Needs Manager Messages Permissions**| `;cmdcd "some cmd" 5` -`;allcmdcooldowns`, `;acmdcds` | Shows a list of all commands and their respective cooldowns. | `;acmdcds` +`;verbose` `;v` | `;verbose true` | Sets whether to show when a command/module is blocked. +`;permrole` `;pr` | `;pr role` | Sets a role which can change permissions. Or supply no parameters to find out the current one. Default one is 'Nadeko'. +`;listperms` `;lp` | `;lp` or `;lp 3` | Lists whole permission chain with their indexes. You can specify optional page number if there are a lot of permissions +`;removeperm` `;rp` | `;rp 1` | Removes a permission from a given position +`;moveperm` `;mp` | `;mp 2 4` | Moves permission from one position to another. +`;srvrcmd` `;sc` | `;sc "command name" disable` | Sets a command's permission at the server level. +`;srvrmdl` `;sm` | `;sm "module name" enable` | Sets a module's permission at the server level. +`;usrcmd` `;uc` | `;uc "command name" enable SomeUsername` | Sets a command's permission at the user level. +`;usrmdl` `;um` | `;um "module name" enable SomeUsername` | Sets a module's permission at the user level. +`;rolecmd` `;rc` | `;rc "command name" disable MyRole` | Sets a command's permission at the role level. +`;rolemdl` `;rm` | `;rm "module name" enable MyRole` | Sets a module's permission at the role level. +`;chnlcmd` `;cc` | `;cc "command name" enable SomeChannel` | Sets a command's permission at the channel level. +`;chnlmdl` `;cm` | `;cm "module name" enable SomeChannel` | Sets a module's permission at the channel level. +`;allchnlmdls` `;acm` | `;acm enable #SomeChannel` | Enable or disable all modules in a specified channel. +`;allrolemdls` `;arm` | `;arm [enable/disable] MyRole` | Enable or disable all modules for a specific role. +`;allusrmdls` `;aum` | `;aum enable @someone` | Enable or disable all modules for a specific user. +`;allsrvrmdls` `;asm` | `;asm [enable/disable]` | Enable or disable all modules for your server. +`;ubl` | `;ubl add @SomeUser` or `;ubl rem 12312312313` | Either [add]s or [rem]oves a user specified by a mention or ID from a blacklist. **Bot owner only.** +`;ubl` | `;ubl add @SomeUser` or `;ubl rem 12312312313` | Either [add]s or [rem]oves a user specified by a mention or ID from a blacklist. **Bot owner only.** +`;cbl` | `;cbl rem 12312312312` | Either [add]s or [rem]oves a channel specified by an ID from a blacklist. **Bot owner only.** +`;sbl` | `;sbl add 12312321312` or `;sbl rem SomeTrashServer` | Either [add]s or [rem]oves a server specified by a Name or ID from a blacklist. **Bot owner only.** +`;sbl` | `;sbl add 12312321312` or `;sbl rem SomeTrashServer` | Either [add]s or [rem]oves a server specified by a Name or ID from a blacklist. **Bot owner only.** +`;cmdcooldown` `;cmdcd` | `;cmdcd "some cmd" 5` | Sets a cooldown per user for a command. Set 0 to clear. +`;allcmdcooldowns` `;acmdcds` | `;acmdcds` | Shows a list of all commands and their respective cooldowns. +`;srvrfilterinv` `;sfi` | `;sfi disable` | Enables or disables automatic deleting of invites on the server. +`;chnlfilterinv` `;cfi` | `;cfi enable #general-chat` | Enables or disables automatic deleting of invites on the channel.If no channel supplied, it will default to current one. Use ALL to apply to all existing channels at once. +`;srvrfilterwords` `;sfw` | `;sfw disable` | Enables or disables automatic deleting of messages containing forbidden words on the server. +`;chnlfilterwords` `;cfw` | `;cfw enable #general-chat` | Enables or disables automatic deleting of messages containing banned words on the channel.If no channel supplied, it will default to current one. Use ALL to apply to all existing channels at once. +`;fw` | `;fw poop` | Adds or removes (if it exists) a word from the list of filtered words +`;lstfilterwords` `;lfw` | `;lfw` | Shows a list of filtered words -### Conversations +### Utility Command and aliases | Description | Usage ----------------|--------------|------- -`..` | Adds a new quote with the specified name (single word) and message (no limit). | `.. abc My message` -`...` | Shows a random quote with a specified name. | `... abc` -`..qdel`, `..quotedelete` | Deletes all quotes with the specified keyword. You have to either be bot owner or the creator of the quote to delete it. | `..qdel abc` -`@BotName rip` | Shows a grave image of someone with a start year | `@NadekoBot rip @Someone 2000` -`@BotName die` | Works only for the owner. Shuts the bot down. | `@NadekoBot die` -`@BotName do you love me` | Replies with positive answer only to the bot owner. | `@NadekoBot do you love me` -`@BotName how are you`, `@BotName how are you?` | Replies positive only if bot owner is online. | `@NadekoBot how are you` -`@BotName fire` | Shows a unicode fire message. Optional parameter [x] tells her how many times to repeat the fire. | `@NadekoBot fire [x]` -`@BotName dump` | Dumps all of the invites it can to dump.txt.** Owner Only.** | `@NadekoBot dump` -`@BotName ab` | Try to get 'abalabahaha'| `@NadekoBot ab` - -### Gambling -Command and aliases | Description | Usage -----------------|--------------|------- -`$draw` | Draws a card from the deck.If you supply number [x], she draws up to 5 cards from the deck. | `$draw [x]` -`$shuffle`, `$sh` | Reshuffles all cards back into the deck.|`$shuffle` -`$flip` | Flips coin(s) - heads or tails, and shows an image. | `$flip` or `$flip 3` -`$betflip`, `$bf` | Bet to guess will the result be heads or tails. Guessing award you double flowers you've bet. | `$bf 5 heads` or `$bf 3 t` -`$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. | `$roll` or `$roll 7` or `$roll 3d5` -`$rolluo` | Rolls 0-100. If you supply a number [x] it rolls up to 30 normal dice (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` -`$race` | Starts a new animal race. | `$race` -`$joinrace`, `$jr` | Joins a new race. You can specify an amount of flowers for betting (optional). You will get YourBet*(participants-1) back if you win. | `$jr` or `$jr 5` -`$raffle` | Prints a name and ID of a random user from the online list from the (optional) role. | `$raffle` or `$raffle RoleName` -`$$$` | Check how much NadekoFlowers a person has. (Defaults to yourself) |`$$$` or `$$$ @Someone` -`$give` | Give someone a certain amount of NadekoFlowers|`$give 1 "@SomeGuy"` -`$award` | Gives someone a certain amount of flowers. **Bot Owner Only!** | `$award 100 @person` -`$take` | Takes a certain amount of flowers from someone. **Bot Owner Only!** | `$take 1 "@someguy"` -`$betroll`, `$br` | Bets a certain amount of NadekoFlowers and rolls a dice. Rolling over 66 yields x2 flowers, over 90 - x3 and 100 x10. | `$br 5` -`$leaderboard`, `$lb` | Displays bot currency leaderboard | `$lb` - -### Games -Command and aliases | Description | Usage -----------------|--------------|------- -`>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 nohint` or `>t 5 nohint` -`>tl` | Shows a current trivia leaderboard. | `>tl` -`>tq` | Quits current trivia after current question. | `>tq` -`>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. Owner only. | `>typeadd wordswords` -`>poll` | Creates a poll, only person who has manage server permission can do it. **Needs Manage Server Permissions**| `>poll Question?;Answer1;Answ 2;A_3` -`>pollend` | Stops active poll on this server and prints the results in this channel. | `>pollend` -`>pick` | Picks a flower planted in this channel. | `>pick` -`>plant` | Spend a flower to plant it in this channel. (If bot is restarted or crashes, flower will be lost) | `>plant` -`>gencurrency`, `>gc` | Toggles currency generation on this channel. Every posted message will have 2% chance to spawn a NadekoFlower. Optional parameter cooldown time in minutes, 5 minutes by default. Requires Manage Messages permission. | `>gc` or `>gc 60` -`>leet` | Converts a text to leetspeak with 6 (1-6) severity levels | `>leet 3 Hello` -`>choose` | Chooses a thing from a list of things | `>choose Get up;Sleep;Sleep more` -`>8ball` | Ask the 8ball a yes/no question. | `>8ball should i do something` -`>rps` | Play a game of rocket paperclip scissors with Nadeko. | `>rps scissors` -`>linux` | Prints a customizable Linux interjection | `>linux Spyware Windows` - -### Music -Command and aliases | Description | Usage -----------------|--------------|------- -`!!next`, `!!n`, `!!skip` | Goes to the next song in the queue. You have to be in the same voice channel as the bot. | `!!n` -`!!stop`, `!!s` | Stops the music and clears the playlist. Stays in the channel. | `!!s` -`!!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` -`!!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` -`!!soundcloudqueue`, `!!sq` | Queue a soundcloud song using keywords. Bot will join your voice channel.**You must be in a voice channel**. | `!!sq Dream Of Venice` -`!!listqueue`, `!!lq` | Lists 15 currently queued songs per page. Default page is 1. | `!!lq` or `!!lq 2` -`!!nowplaying`, `!!np` | Shows the song currently playing. | `!!np` -`!!volume`, `!!vol` | Sets the music volume 0-100% | `!!vol 50` -`!!defvol`, `!!dv` | Sets the default music volume when music playback is started (0-100). Persists through restarts. | `!!dv 80` -`!!mute`, `!!min` | Sets the music volume to 0% | `!!min` -`!!max` | Sets the music volume to 100%. | `!!max` -`!!half` | Sets the music volume to 50%. | `!!half` -`!!shuffle`, `!!sh` | Shuffles the current playlist. | `!!sh` -`!!playlist`, `!!pl` | Queues up to 500 songs from a youtube playlist specified by a link, or keywords. | `!!pl playlist link or name` -`!!soundcloudpl`, `!!scpl` | Queue a soundcloud playlist using a link. | `!!scpl soundcloudseturl` -`!!localplaylst`, `!!lopl` | Queues all songs from a directory. **Bot Owner Only!** | `!!lopl C:/music/classical` -`!!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` -`!!move`, `!!mv` | Moves the bot to your voice channel. (works only if music is already playing) | `!!mv` -`!!remove`, `!!rm` | Remove a song by its # in the queue, or 'all' to remove whole queue. | `!!rm 5` -`!!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` -`!!cleanup` | Cleans up hanging voice connections. **Bot Owner Only!** | `!!cleanup` -`!!reptcursong`, `!!rcs` | Toggles repeat of current song. | `!!rcs` -`!!rpeatplaylst`, `!!rpl` | Toggles repeat of all songs in the queue (every song that finishes is added to the end of the queue). | `!!rpl` -`!!save` | Saves a playlist under a certain name. Name must be no longer than 20 characters and mustn't contain dashes. | `!!save classical1` -`!!load` | Loads a playlist under a certain name. | `!!load classical-1` -`!!playlists`, `!!pls` | Lists all playlists. Paginated. 20 per page. Default page is 0. |`!!pls 1` -`!!deleteplaylist`, `!!delpls` | Deletes a saved playlist. Only if you made it or if you are the bot owner. | `!!delpls animu-5` -`!!goto` | Goes to a specific time in seconds in a song. | `!!goto 30` -`!!getlink`, `!!gl` | Shows a link to the song in the queue by index, or the currently playing song by default. | `!!gl` -`!!autoplay`, `!!ap` | Toggles autoplay - When the song is finished, automatically queue a related youtube song. (Works only for youtube songs and when queue is empty) | `!!ap` +`.whosplaying` | `.whoplays Overwatch` | Shows a list of users who are playing the specified game. +`.inrole` | `.inrole Role` | Lists every person from the provided role or roles (separated by a ',') on this server. If the list is too long for 1 message, you must have Manage Messages permission. +`.checkmyperms` | `.checkmyperms` | Checks your userspecific permissions on this channel. +`.userid` `.uid` | `.uid` or `.uid "@SomeGuy"` | Shows user ID. +`.channelid` `.cid` | `.cid` | Shows current channel ID. +`.serverid` `.sid` | `.sid` | Shows current server ID. +`.roles` | `.roles` | List all roles on this server or a single user if specified. +`.channeltopic` `.ct` | `.ct` | Sends current channel's topic as a message. +`.stats` | `.stats` | Shows some basic stats for Nadeko. +`.showemojis` `.se` | `.se A message full of SPECIALemojis` | Shows a name and a link to every SPECIAL emoji in the message. +`.serverinfo` `.sinfo` | `.sinfo Some Server` | Shows info about the server the bot is on. If no channel is supplied, it defaults to current one. +`.channelinfo` `.cinfo` | `.cinfo #some-channel` | Shows info about the channel. If no channel is supplied, it defaults to current one. +`.userinfo` `.uinfo` | `.uinfo @SomeUser` | Shows info about the user. If no user is supplied, it defaults a user running the command. +`...` | `... abc` | Shows a random quote with a specified name. +`..` | `.. sayhi Hi` | Adds a new quote with the specified name and message. +`.deletequote` `.delq` | `.delq abc` | Deletes all quotes with the specified keyword. You have to either be bot owner or the creator of the quote to delete it. +`.delallq` `.daq` | `.delallq kek` | Deletes all quotes on a specified keyword. +`.remind` | `.remind me 1d5h Do something` or `.remind #general Start now!` | 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. +`.remindtemplate` | `.remindtemplate %user%, you gotta do %message%!` | 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.** ### Searches Command and aliases | Description | Usage ----------------|--------------|------- -`~lolchamp` | Shows League Of Legends champion statistics. If there are spaces/apostrophes or in the name - omit them. Optional second parameter is a role. |`~lolchamp Riven` or `~lolchamp Annie sup` -`~lolban` | Shows top 6 banned champions ordered by ban rate. Ban these champions and you will be Plat 5 in no time. | `~lolban` -`~hitbox`, `~hb` | Notifies this channel when a certain user starts streaming. | `~hitbox SomeStreamer` -`~twitch`, `~tw` | Notifies this channel when a certain user starts streaming. | `~twitch SomeStreamer` -`~beam`, `~bm` | Notifies this channel when a certain user starts streaming. | `~beam SomeStreamer` -`~checkhitbox`, `~chhb` | Checks if a certain user is streaming on the hitbox platform. | `~chhb SomeStreamer` -`~checktwitch`, `~chtw` | Checks if a certain user is streaming on the twitch platform. | `~chtw SomeStreamer` -`~checkbeam`, `~chbm` | Checks if a certain user is streaming on the beam platform. | `~chbm SomeStreamer` -`~removestream`, `~rms` | Removes notifications of a certain streamer on this channel. | `~rms SomeGuy` -`~liststreams`, `~ls` | Lists all streams you are following on this server. | `~ls` -`~convert` | Convert quantities from>to. | `~convert m>km 1000` -`~convertlist` | List of the convertable dimensions and currencies. -`~wowjoke` | Get one of Kwoth's penultimate WoW jokes. | `~wowjoke` -`~calculate`, `~calc` | Evaluate a mathematical expression. | `~calc 1+1` -`~osu` | Shows osu stats for a player. | `~osu Name` or `~osu Name taiko` -`~osu b` | Shows information about an osu beatmap. |`~osu b https://osu.ppy.sh/s/127712` -`~osu top5` | Displays a user's top 5 plays. |`~osu top5 Name` -`~pokemon`, `~poke` | Searches for a pokemon. | `~poke Sylveon` -`~pokemonability`, `~pokeab` | Searches for a pokemon ability. | `~pokeab "water gun"` -`~memelist` | Pulls a list of memes you can use with `~memegen` from http://memegen.link/templates/ | `~memelist` -`~memegen` | Generates a meme from memelist with top and bottom text. | `~memegen biw "gets iced coffee" "in the winter"` -`~we` | Shows weather data for a specified city and a country. BOTH ARE REQUIRED. Use country abbrevations. | `~we Moscow RF` -`~yt` | Searches youtubes and shows the first result | `~yt query` -`~ani`, `~anime`, `~aq` | Queries anilist for an anime and shows the first result. | `~aq aquarion evol` -`~imdb` | Queries imdb for movies or series, show first result. | `~imdb Batman vs Superman` -`~mang`, `~manga`, `~mq` | Queries anilist for a manga and shows the first result. | `~mq Shingeki no kyojin` -`~randomcat`, `~meow` | Shows a random cat image. | `~meow` -`~randomdog`, `~woof` | Shows a random dog image. | `~woof` -`~i` | Pulls the first image found using a search parameter. Use ~ir for different results. | `~i cute kitten` -`~ir` | Pulls a random image using a search parameter. | `~ir cute kitten` -`~lmgtfy` | Google something for an idiot. | `~lmgtfy query` -`~google`, `~g` | Get a google search link for some terms. | `~google query` -`~hs` | Searches for a Hearthstone card and shows its image. Takes a while to complete. | `~hs Ysera` -`~ud` | Searches Urban Dictionary for a word. | `~ud Pineapple` -`~#` | Searches Tagdef.com for a hashtag. | `~# ff` -`~quote` | Shows a random quote. | `~quote` -`~catfact` | Shows a random catfact from | `~catfact` -`~yomama`, `~ym` | Shows a random joke from | `~ym` -`~randjoke`, `~rj` | Shows a random joke from | `~rj` -`~chucknorris`, `~cn` | Shows a random chucknorris joke from | `~cn` -`~magicitem`, `~mi` | Shows a random magicitem from | `~mi` -`~revav` | Returns a google reverse image search for someone's avatar. | `~revav "@SomeGuy"` -`~revimg` | Returns a google reverse image search for an image from a link. | `~revav Image link` -`~safebooru` | Shows a random image from safebooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) | `~safebooru yuri+kissing` -`~wiki` | Gives you back a wikipedia link | `~wiki query` -`~clr` | Shows you what color corresponds to that hex. | `~clr 00ff00` -`~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 "@SomeGuy"` -`~av`, `~avatar` | Shows a mentioned person's avatar. | `~av "@SomeGuy"` +`~weather` `~we` | `~we Moscow RF` | Shows weather data for a specified city and a country. BOTH ARE REQUIRED. Use country abbrevations. +`~youtube` `~yt` | `~yt query` | Searches youtubes and shows the first result +`~imdb` | `~imdb Batman vs Superman` | Queries imdb for movies or series, show first result. +`~randomcat` `~meow` | `~meow` | Shows a random cat image. +`~randomdog` `~woof` | `~woof` | Shows a random dog image. +`~img` `~i` | `~i cute kitten` | Pulls the first image found using a search parameter. Use ~ir for different results. +`~ir` | `~ir cute kitten` | Pulls a random image using a search parameter. +`~lmgtfy` | `~lmgtfy query` | Google something for an idiot. +`~google` `~g` | `~google query` | Get a google search link for some terms. +`~hearthstone` `~hs` | `~hs Ysera` | Searches for a Hearthstone card and shows its image. Takes a while to complete. +`~urbandict` `~ud` | `~ud Pineapple` | Searches Urban Dictionary for a word. +`~#` | `~# ff` | Searches Tagdef.com for a hashtag. +`~catfact` | `~catfact` | Shows a random catfact from +`~revav` | `~revav "@SomeGuy"` | Returns a google reverse image search for someone's avatar. +`~revimg` | `~revimg Image link` | Returns a google reverse image search for an image from a link. +`~safebooru` | `~safebooru yuri+kissing` | Shows a random image from safebooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) +`~wikipedia` `~wiki` | `~wiki query` | Gives you back a wikipedia link +`~color` `~clr` | `~clr 00ff00` | Shows you what color corresponds to that hex. +`~videocall` | `~videocall "@SomeGuy"` | Creates a private video call link for you and other mentioned people. The link is sent to mentioned people via a private message. +`~av` `~avatar` | `~av "@SomeGuy"` | Shows a mentioned person's avatar. +`~calculate` `~calc` | `~calc 1+1` | Evaluate a mathematical expression. +`~calcops` | `~calcops` | Shows all available operations in .calc command +`~lolban` | `~lolban` | Shows top banned champions ordered by ban rate. +`~memelist` | `~memelist` | Pulls a list of memes you can use with `~memegen` from http://memegen.link/templates/ +`~memegen` | `~memegen biw "gets iced coffee" "in the winter"` | Generates a meme from memelist with top and bottom text. +`~anime` `~ani` `~aq` | `~ani aquarion evol` | Queries anilist for an anime and shows the first result. +`~manga` `~mang` `~mq` | `~mq Shingeki no kyojin` | Queries anilist for a manga and shows the first result. +`~yomama` `~ym` | `~ym` | Shows a random joke from +`~randjoke` `~rj` | `~rj` | Shows a random joke from +`~chucknorris` `~cn` | `~cn` | Shows a random chucknorris joke from +`~wowjoke` | `~wowjoke` | Get one of Kwoth's penultimate WoW jokes. +`~magicitem` `~mi` | `~mi` | Shows a random magicitem from +`~osu` | `~osu Name` or `~osu Name taiko` | Shows osu stats for a player. +`~osub` | `~osub https://osu.ppy.sh/s/127712` | Shows information about an osu beatmap. +`~osu5` | `~osu5 Name` | Displays a user's top 5 plays. +`~pokemon` `~poke` | `~poke Sylveon` | Searches for a pokemon. +`~pokemonability` `~pokeab` | `~pokeab "water gun"` | Searches for a pokemon ability. +`~hitbox` `~hb` | `~hitbox SomeStreamer` | Notifies this channel when a certain user starts streaming. **Requires ManageMessages server permission.** +`~twitch` `~tw` | `~twitch SomeStreamer` | Notifies this channel when a certain user starts streaming. **Requires ManageMessages server permission.** +`~beam` `~bm` | `~beam SomeStreamer` | Notifies this channel when a certain user starts streaming. **Requires ManageMessages server permission.** +`~liststreams` `~ls` | `~ls` | Lists all streams you are following on this server. +`~removestream` `~rms` | `~rms SomeGuy` | Removes notifications of a certain streamer on this channel. +`~checkstream` `~cs` | `~cs twitch MyFavStreamer` | Checks if a user is online on a certain streaming platform. +`~convertlist` | `~convertlist` | List of the convertable dimensions and currencies. +`~convert` | `~convert m>km 1000` | Convert quantities from>to. + +### Help +Command and aliases | Description | Usage +----------------|--------------|------- +`-modules` `-mdls` | `-modules` or `.modules` | List all bot modules. +`-commands` `-cmds` | `-commands` or `.commands` | List all of the bot's commands from a certain module. +`-h` `-help` | `-h !m q` or just `-h` | Either shows a help for a single command, or PMs you help link if no arguments are specified. +`-hgit` | `-hgit` | Generates the commandlist.md file. **Bot owner only.** +`-readme` `-guide` | `-readme` or `-guide` | Sends a readme and a guide links to the channel. +`-donate` | `-donate` or `~donate` | Instructions for helping the project! ### NSFW Command and aliases | Description | Usage ----------------|--------------|------- -`~hentai` | Shows a random NSFW hentai image from gelbooru and danbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) | `~hentai yuri+kissing` -`~danbooru` | Shows a random hentai image from danbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) | `~danbooru yuri+kissing` -`~gelbooru` | Shows a random hentai image from gelbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) | `~gelbooru yuri+kissing` -`~rule34` | Shows a random image from rule34.xx with a given tag. Tag is optional but preffered. (multiple tags are appended with +) | `~rule34 yuri+kissing` -`~e621` | Shows a random hentai image from e621.net with a given tag. Tag is optional but preffered. Use spaces for multiple tags. | `~e621 yuri kissing` -`~cp` | We all know where this will lead you to. | `~cp` -`~boobs` | Real adult content. | `~boobs` -`~butts`, `~ass`, `~butt` | Real adult content. | `~butts` or `~ass` +`~hentai` | `~hentai yuri+kissing` | Shows a random NSFW hentai image from gelbooru and danbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) +`~danbooru` | `~danbooru yuri+kissing` | Shows a random hentai image from danbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) +`~gelbooru` | `~gelbooru yuri+kissing` | Shows a random hentai image from gelbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) +`~rule34` | `~rule34 yuri+kissing` | Shows a random image from rule34.xx with a given tag. Tag is optional but preffered. (multiple tags are appended with +) +`~e621` | `~e621 yuri kissing` | Shows a random hentai image from e621.net with a given tag. Tag is optional but preffered. Use spaces for multiple tags. +`~cp` | `~cp` | We all know where this will lead you to. +`~boobs` | `~boobs` | Real adult content. +`~butts` `~ass` `~butt` | `~butts` or `~ass` | Real adult content. + +### Gambling +Command and aliases | Description | Usage +----------------|--------------|------- +`$raffle` | `$raffle` or `$raffle RoleName` | Prints a name and ID of a random user from the online list from the (optional) role. +`$cash` `$$$` | `$$$` or `$$$ @SomeGuy` | Check how much NadekoFlowers a person has. (Defaults to yourself) +`$cash` `$$$` | `$$$` or `$$$ @SomeGuy` | Check how much NadekoFlowers a person has. (Defaults to yourself) +`$give` | `$give 1 "@SomeGuy"` | Give someone a certain amount of NadekoFlowers +`$award` | `$award 100 @person` | Gives someone a certain amount of flowers. **Bot owner only.** +`$award` | `$award 100 @person` | Gives someone a certain amount of flowers. **Bot owner only.** +`$take` | `$take 1 "@someguy"` | Takes a certain amount of flowers from someone. **Bot owner only.** +`$take` | `$take 1 "@someguy"` | Takes a certain amount of flowers from someone. **Bot owner only.** +`$betroll` `$br` | `$br 5` | Bets a certain amount of NadekoFlowers and rolls a dice. Rolling over 66 yields x2 flowers, over 90 - x3 and 100 x10. +`$leaderboard` `$lb` | `$lb` | Displays bot currency leaderboard +`$race` | `$race` | Starts a new animal race. +`$joinrace` `$jr` | `$jr` or `$jr 5` | Joins a new race. You can specify an amount of flowers for betting (optional). You will get YourBet*(participants-1) back if you win. +`$roll` | `$roll` or `$roll 7` or `$roll 3d5` | 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. +`$roll` | `$roll` or `$roll 7` or `$roll 3d5` | 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. +`$roll` | `$roll` or `$roll 7` or `$roll 3d5` | 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. +`$rolluo` | `$rolluo` or `$rolluo 7` or `$rolluo 3d5` | 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` | `$rolluo` or `$rolluo 7` or `$rolluo 3d5` | 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. +`$nroll` | `$nroll 5` (rolls 0-5) or `$nroll 5-15` | Rolls in a given range. +`$draw` | `$draw` or `$draw 5` | Draws a card from the deck.If you supply number X, she draws up to 5 cards from the deck. +`$shuffle` `$sh` | `$sh` | Reshuffles all cards back into the deck. +`$flip` | `$flip` or `$flip 3` | Flips coin(s) - heads or tails, and shows an image. +`$betflip` `$bf` | `$bf 5 heads` or `$bf 3 t` | Bet to guess will the result be heads or tails. Guessing award you double flowers you've bet. + +### Games +Command and aliases | Description | Usage +----------------|--------------|------- +`>choose` | `>choose Get up;Sleep;Sleep more` | Chooses a thing from a list of things +`>8ball` | `>8ball should i do something` | Ask the 8ball a yes/no question. +`>rps` | `>rps scissors` | Play a game of rocket paperclip scissors with Nadeko. +`>linux` | `>linux Spyware Windows` | Prints a customizable Linux interjection +`>leet` | `>leet 3 Hello` | Converts a text to leetspeak with 6 (1-6) severity levels +`>poll` | `>poll Question?;Answer1;Answ 2;A_3` | Creates a poll, only person who has manage server permission can do it. +`>pollend` | `>pollend` | Stops active poll on this server and prints the results in this channel. +`>pick` | `>pick` | Picks a flower planted in this channel. +`>plant` | `>plant` | Spend a flower to plant it in this channel. (If bot is restarted or crashes, flower will be lost) +`>gencurrency` `>gc` | `>gc` | Toggles currency generation on this channel. Every posted message will have 2% chance to spawn a NadekoFlower. Requires Manage Messages permission. **Requires ManageMessages server permission.** +`>typestart` | `>typestart` | Starts a typing contest. +`>typestop` | `>typestop` | Stops a typing contest on the current channel. +`>typeadd` | `>typeadd wordswords` | Adds a new article to the typing contest. **Bot owner only.** +`>trivia` `>t` | `>t nohint` or `>t 5 nohint` | 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. +`>tl` | `>tl` | Shows a current trivia leaderboard. +`>tq` | `>tq` | Quits current trivia after current question. ### ClashOfClans Command and aliases | Description | Usage ----------------|--------------|------- -`,createwar`, `,cw` | Creates a new war by specifying a size (>10 and multiple of 5) and enemy clan name. | `,cw 15 The Enemy Clan` -`,startwar`, `,sw` | Starts a war with a given number. | `,sw 15` -`,listwar`, `,lw` | Shows the active war claims by a number. Shows all wars in a short way if no number is specified. | `,lw [war_number] or ,lw` -`,claim`, `,call`, `,c` | Claims a certain base from a certain war. You can supply a name in the third optional argument to claim in someone else's place. | `,call [war_number] [base_number] [optional_other_name]` -`,claimfinish`, `,cf`, `,cf3`, `,claimfinish3` | Finish your claim with 3 stars if you destroyed a base. Optional second argument finishes for someone else. | `,cf [war_number] [optional_other_name]` -`,claimfinish2`, `,cf2` | Finish your claim with 2 stars if you destroyed a base. Optional second argument finishes for someone else. | `,cf [war_number] [optional_other_name]` -`,claimfinish1`, `,cf1` | Finish your claim with 1 stars if you destroyed a base. Optional second argument finishes for someone else. | `,cf [war_number] [optional_other_name]` -`,unclaim`, `,uncall`, `,uc` | Removes your claim from a certain war. Optional second argument denotes a person in whose place to unclaim | `,uc [war_number] [optional_other_name]` -`,endwar`, `,ew` | Ends the war with a given index. | `,ew [war_number]` +`,createwar` `,cw` | `,cw 15 The Enemy Clan` | Creates a new war by specifying a size (>10 and multiple of 5) and enemy clan name. +`,startwar` `,sw` | `,sw 15` | Starts a war with a given number. +`,listwar` `,lw` | `,lw [war_number] or ,lw` | Shows the active war claims by a number. Shows all wars in a short way if no number is specified. +`,claim` `,call` `,c` | `,call [war_number] [base_number] [optional_other_name]` | Claims a certain base from a certain war. You can supply a name in the third optional argument to claim in someone else's place. +`,claimfinish1` `,cf1` | `,cf [war_number] [optional_other_name]` | Finish your claim with 1 stars if you destroyed a base. Optional second argument finishes for someone else. +`,claimfinish2` `,cf2` | `,cf [war_number] [optional_other_name]` | Finish your claim with 2 stars if you destroyed a base. Optional second argument finishes for someone else. +`,claimfinish` `,cf` `,cf3` `,claimfinish3` | `,cf [war_number] [optional_other_name]` | Finish your claim with 3 stars if you destroyed a base. Optional second argument finishes for someone else. +`,endwar` `,ew` | `,ew [war_number]` | Ends the war with a given index. +`,unclaim` `,ucall` `,uc` | `,uc [war_number] [optional_other_name]` | Removes your claim from a certain war. Optional second argument denotes a person in whose place to unclaim -### Pokegame +### CustomReactions 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` -`>heal` | Heals someone. Revives those who fainted. Costs a NadekoFlower | `>heal @someone` -`>type` | Get the poketype of the target. | `>type @someone` -`>settype` | Set your poketype. Costs a NadekoFlower. | `>settype fire` +`.addcustreact` `.acr` | `.acr "hello" Hi there %user%` | Add a custom reaction with a trigger and a response. Running this command in server requires Administration permission. Running this command in DM is Bot Owner only and adds a new global custom reaction. Guide here: +`.listcustreact` `.lcr` | `.lcr 1` | Lists global or server custom reactions (15 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. +`.delcustreact` `.dcr` | `.dcr 5` | Deletes a custom reaction on a specific index. If ran in DM, it is bot owner only and deletes a global custom reaction. If ran in a server, it requires Administration priviledges and removes server custom reaction. ### Translator Command and aliases | Description | Usage ----------------|--------------|------- -`~translate`, `~trans` | Translates from>to text. From the given language to the destiation language. | `~trans en>fr Hello` -`~translangs` | List the valid languages for translation. | `~translangs` or `~translangs language` +`~translate` `~trans` | `~trans en>fr Hello` | Translates from>to text. From the given language to the destiation language. +`~translangs` | `~translangs` | List the valid languages for translation. -### Customreactions +### Pokemon Command and aliases | Description | Usage ----------------|--------------|------- -`\o\` | Custom reaction. | `\o\` -`/o/` | Custom reaction. | `/o/` -`moveto` | Custom reaction. | `moveto` -`comeatmebro` | Custom reaction. | `comeatmebro` -`e` | Custom reaction. | `e` -`@BotName insult`, `<@!116275390695079945> insult` | Custom reaction. | `%mention% insult` -`@BotName praise`, `<@!116275390695079945> praise` | Custom reaction. | `%mention% praise` -`@BotName pat`, `<@!116275390695079945> pat` | Custom reaction. | `%mention% pat` -`@BotName cry`, `<@!116275390695079945> cry` | Custom reaction. | `%mention% cry` -`@BotName are you real?`, `<@!116275390695079945> are you real?` | Custom reaction. | `%mention% are you real?` -`@BotName are you there?`, `<@!116275390695079945> are you there?` | Custom reaction. | `%mention% are you there?` -`@BotName draw`, `<@!116275390695079945> draw` | Custom reaction. | `%mention% draw` -`@BotName bb`, `<@!116275390695079945> bb` | Custom reaction. | `%mention% bb` -`@BotName call`, `<@!116275390695079945> call` | Custom reaction. | `%mention% call` -`@BotName disguise`, `<@!116275390695079945> disguise` | Custom reaction. | `%mention% disguise` -`@BotName inv`, `<@!116275390695079945> inv` | Custom reaction. | `%mention% inv` -`@BotName threaten`, `<@!116275390695079945> threaten` | Custom reaction. | `%mention% threaten` -`@BotName archer`, `<@!116275390695079945> archer` | Custom reaction. | `%mention% archer` +`>poke_cmd` | poke_usage | poke_desc -### Trello +### Music Command and aliases | Description | Usage ----------------|--------------|------- -`trello bind` | Bind a trello bot to a single channel. You will receive notifications from your board when something is added or edited. **Bot Owner Only!**| `trello bind [board_id]` -`trello unbind` | Unbinds a bot from the channel and board. **Bot Owner Only!**| `trello unbind` -`trello lists`, `trello list` | Lists all lists, yo ;) **Bot Owner Only!**| `trello list` -`trello cards` | Lists all cards from the supplied list. You can supply either a name or an index. **Bot Owner Only!**| `trello cards index` +`!!next` `!!n` | `!!n` | Goes to the next song in the queue. You have to be in the same voice channel as the bot. +`!!stop` `!!s` | `!!s` | Stops the music and clears the playlist. Stays in the channel. +`!!destroy` `!!d` | `!!d` | Completely stops the music and unbinds the bot from the channel. (may cause weird behaviour) +`!!pause` `!!p` | `!!p` | Pauses or Unpauses the song. +`!!queue` `!!q` `!!yq` | `!!q Dream Of Venice` | Queue a song using keywords or a link. Bot will join your voice channel.**You must be in a voice channel**. +`!!soundcloudqueue` `!!sq` | `!!sq Dream Of Venice` | Queue a soundcloud song using keywords. Bot will join your voice channel.**You must be in a voice channel**. +`!!listqueue` `!!lq` | `!!lq` or `!!lq 2` | Lists 15 currently queued songs per page. Default page is 1. +`!!nowplaying` `!!np` | `!!np` | Shows the song currently playing. +`!!volume` `!!vol` | `!!vol 50` | Sets the music volume 0-100% +`!!defvol` `!!dv` | `!!dv 80` | Sets the default music volume when music playback is started (0-100). Persists through restarts. +`!!shuffle` `!!sh` | `!!sh` | Shuffles the current playlist. +`!!playlist` `!!pl` | `!!pl playlist link or name` | Queues up to 500 songs from a youtube playlist specified by a link, or keywords. +`!!soundcloudpl` `!!scpl` | `!!scpl soundcloudseturl` | Queue a soundcloud playlist using a link. +`!!localplaylst` `!!lopl` | `!!lopl C:/music/classical` | Queues all songs from a directory. **Bot owner only.** +`!!radio` `!!ra` | `!!ra radio link here` | Queues a radio stream from a link. It can be a direct mp3 radio stream, .m3u, .pls .asx or .xspf (Usage Video: ) +`!!local` `!!lo` | `!!lo C:/music/mysong.mp3` | Queues a local file by specifying a full path. **Bot owner only.** +`!!move` `!!mv` | `!!mv` | Moves the bot to your voice channel. (works only if music is already playing) +`!!remove` `!!rm` | `!!rm 5` | Remove a song by its # in the queue, or 'all' to remove whole queue. +`!!remove` `!!rm` | `!!rm 5` | Remove a song by its # in the queue, or 'all' to remove whole queue. +`!!movesong` `!!ms` | `!! ms 5>3` | Moves a song from one position to another. +`!!setmaxqueue` `!!smq` | `!!smq 50` or `!!smq` | Sets a maximum queue size. Supply 0 or no argument to have no limit. +`!!reptcursong` `!!rcs` | `!!rcs` | Toggles repeat of current song. +`!!rpeatplaylst` `!!rpl` | `!!rpl` | Toggles repeat of all songs in the queue (every song that finishes is added to the end of the queue). +`!!save` | `!!save classical1` | Saves a playlist under a certain name. Name must be no longer than 20 characters and mustn't contain dashes. +`!!load` | `!!load classical-1` | Loads a playlist under a certain name. +`!!playlists` `!!pls` | `!!pls 1` | Lists all playlists. Paginated. 20 per page. Default page is 0. +`!!deleteplaylist` `!!delpls` | `!!delpls animu-5` | Deletes a saved playlist. Only if you made it or if you are the bot owner. +`!!goto` | `!!goto 30` | Goes to a specific time in seconds in a song. +`!!getlink` `!!gl` | `!!gl` | Shows a link to the song in the queue by index, or the currently playing song by default. +`!!autoplay` `!!ap` | `!!ap` | Toggles autoplay - When the song is finished, automatically queue a related youtube song. (Works only for youtube songs and when queue is empty) From 46000b36049c2feb037852ee4a9956731c8fedbd Mon Sep 17 00:00:00 2001 From: Kwoth Date: Mon, 10 Oct 2016 00:59:56 +0200 Subject: [PATCH 65/74] Pokemon removed, reveresed usage and description --- src/NadekoBot/Modules/Help/Help.cs | 2 +- src/NadekoBot/Modules/Pokemon/Pokemon.cs | 27 ------------------------ 2 files changed, 1 insertion(+), 28 deletions(-) delete mode 100644 src/NadekoBot/Modules/Pokemon/Pokemon.cs diff --git a/src/NadekoBot/Modules/Help/Help.cs b/src/NadekoBot/Modules/Help/Help.cs index 24d7ecc8..9a9cbe6c 100644 --- a/src/NadekoBot/Modules/Help/Help.cs +++ b/src/NadekoBot/Modules/Help/Help.cs @@ -136,7 +136,7 @@ namespace NadekoBot.Modules.Help helpstr.AppendLine("----------------|--------------|-------"); lastModule = com.Module.Name; } - helpstr.AppendLine($"`{com.Text}` {string.Join(" ", com.Aliases.Skip(1).Select(a=>"`"+a+"`"))} | {com.Remarks} | {com.Summary} {GetCommandRequirements(com)}"); + helpstr.AppendLine($"`{com.Text}` {string.Join(" ", com.Aliases.Skip(1).Select(a=>"`"+a+"`"))} | {com.Summary} | {com.Remarks} {GetCommandRequirements(com)}"); } helpstr = helpstr.Replace(NadekoBot.Client.GetCurrentUser().Username , "@BotName"); #if DEBUG diff --git a/src/NadekoBot/Modules/Pokemon/Pokemon.cs b/src/NadekoBot/Modules/Pokemon/Pokemon.cs deleted file mode 100644 index 3504154a..00000000 --- a/src/NadekoBot/Modules/Pokemon/Pokemon.cs +++ /dev/null @@ -1,27 +0,0 @@ -using Discord.Commands; -using Discord; -using NadekoBot.Attributes; -using System.Threading.Tasks; -using NadekoBot.Services; -using Discord.WebSocket; - -namespace NadekoBot.Modules.Games -{ - [Module(">", AppendSpace = false)] - public partial class Pokemon : DiscordModule - { - public Pokemon(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client) - { - } - - //todo Dragon should PR this in - [NadekoCommand, Usage, Description, Aliases] - [RequireContext(ContextType.Guild)] - public async Task Poke(IUserMessage umsg) - { - var channel = (ITextChannel)umsg.Channel; - - - } - } -} \ No newline at end of file From 75c4da7edd2fa46dbbfc43faf5cac511a911c32f Mon Sep 17 00:00:00 2001 From: Kwoth Date: Mon, 10 Oct 2016 02:27:33 +0200 Subject: [PATCH 66/74] So many fixes. Thanks a lot to @fearnlj01 for the testing --- .../Commands/RatelimitCommand.cs | 1 + src/NadekoBot/Modules/Help/Help.cs | 2 +- .../Searches/Commands/UnitConversion.cs | 19 +-- src/NadekoBot/Modules/Searches/Searches.cs | 2 +- .../Modules/Utility/Commands/QuoteCommands.cs | 11 +- src/NadekoBot/Modules/Utility/Utility.cs | 16 ++- .../Resources/CommandStrings.Designer.cs | 133 +++++++----------- src/NadekoBot/Resources/CommandStrings.resx | 115 +++++++-------- .../Database/Repositories/IQuoteRepository.cs | 2 +- .../Repositories/Impl/QuoteRepository.cs | 6 +- src/NadekoBot/_Extensions/Extensions.cs | 2 + 11 files changed, 146 insertions(+), 163 deletions(-) diff --git a/src/NadekoBot/Modules/Administration/Commands/RatelimitCommand.cs b/src/NadekoBot/Modules/Administration/Commands/RatelimitCommand.cs index b7b11f64..51ca481e 100644 --- a/src/NadekoBot/Modules/Administration/Commands/RatelimitCommand.cs +++ b/src/NadekoBot/Modules/Administration/Commands/RatelimitCommand.cs @@ -86,6 +86,7 @@ namespace NadekoBot.Modules.Administration [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] + [RequirePermission(GuildPermission.ManageMessages)] public async Task Slowmode(IUserMessage umsg, int msg = 1, int perSec = 5) { var channel = (ITextChannel)umsg.Channel; diff --git a/src/NadekoBot/Modules/Help/Help.cs b/src/NadekoBot/Modules/Help/Help.cs index 9a9cbe6c..b9b90702 100644 --- a/src/NadekoBot/Modules/Help/Help.cs +++ b/src/NadekoBot/Modules/Help/Help.cs @@ -127,7 +127,7 @@ namespace NadekoBot.Modules.Help var helpstr = new StringBuilder(); var lastModule = ""; - foreach (var com in _commands.Commands) + foreach (var com in _commands.Commands.GroupBy(c=>c.Text).Select(g=>g.First())) { if (com.Module.Name != lastModule) { diff --git a/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs b/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs index 844ee5d0..9b2da234 100644 --- a/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs +++ b/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs @@ -109,7 +109,7 @@ namespace NadekoBot.Modules.Searches await msg.ReplyLong(sb.ToString(), breakOn: new[] { "```xl\n", "\n" }); } [NadekoCommand, Usage, Description, Aliases] - public async Task Convert(IUserMessage msg, string origin, string target, decimal value) + public async Task Convert(IUserMessage msg, string origin, string target, double value) { var originUnit = Units.Find(x => x.Triggers.Select(y => y.ToLowerInvariant()).Contains(origin.ToLowerInvariant())); var targetUnit = Units.Find(x => x.Triggers.Select(y => y.ToLowerInvariant()).Contains(target.ToLowerInvariant())); @@ -123,7 +123,7 @@ namespace NadekoBot.Modules.Searches await msg.Reply(string.Format("Cannot convert {0} to {1}: types of unit are not equal", originUnit.Triggers.First(), targetUnit.Triggers.First())); return; } - decimal res; + double res; if (originUnit.Triggers == targetUnit.Triggers) res = value; else if (originUnit.UnitType == "temperature") { @@ -131,10 +131,10 @@ namespace NadekoBot.Modules.Searches switch (originUnit.Triggers.First().ToUpperInvariant()) { case "C": - res = value + (decimal)273.15; //celcius! + res = value + 273.15; //celcius! break; case "F": - res = (value + (decimal)459.67) * ((decimal)5 / 9); + res = (value + 459.67) * (5 / 9); break; default: res = value; @@ -144,10 +144,10 @@ namespace NadekoBot.Modules.Searches switch (targetUnit.Triggers.First()) { case "C": - res = value - (decimal)273.15; //celcius! + res = value - 273.15; //celcius! break; case "F": - res = res * ((decimal)9 / 5) - (decimal)458.67; + res = res * (9 / 5) - 458.67; break; default: break; @@ -157,13 +157,14 @@ namespace NadekoBot.Modules.Searches { if (originUnit.UnitType == "currency") { - res = (value * targetUnit.Modifier) / originUnit.Modifier; + res = (value * (double)targetUnit.Modifier) / (double)originUnit.Modifier; } else - res = (value * originUnit.Modifier) / targetUnit.Modifier; + res = (value * (double)originUnit.Modifier) / (double)targetUnit.Modifier; } res = Math.Round(res, 2); - await msg.Reply(string.Format("{0} {1} is equal to {2} {3}", value, originUnit.Triggers.First(), res, targetUnit.Triggers.First())); + + await msg.Reply(string.Format("{0} {1}s is equal to {2} {3}s", value, originUnit.Triggers.First().SnPl(value.IsInteger() ? (int)value : 2), res, targetUnit.Triggers.First().SnPl(res.IsInteger() ? (int)res : 2))); } } diff --git a/src/NadekoBot/Modules/Searches/Searches.cs b/src/NadekoBot/Modules/Searches/Searches.cs index 541d0f0d..e88656d3 100644 --- a/src/NadekoBot/Modules/Searches/Searches.cs +++ b/src/NadekoBot/Modules/Searches/Searches.cs @@ -39,7 +39,7 @@ namespace NadekoBot.Modules.Searches country = city.Replace(" ", ""); string response; using (var http = new HttpClient()) - response = await http.GetStringAsync($"http://api.lawlypopzz.xyz/nadekobot/weather/?city={city}&country={country}").ConfigureAwait(false); + response = await http.GetStringAsync($"http://api.ninetales.us/nadekobot/weather/?city={city}&country={country}").ConfigureAwait(false); var obj = JObject.Parse(response)["weather"]; diff --git a/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs b/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs index f9c37bf6..f1133359 100644 --- a/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs +++ b/src/NadekoBot/Modules/Utility/Commands/QuoteCommands.cs @@ -73,18 +73,22 @@ namespace NadekoBot.Modules.Utility if (string.IsNullOrWhiteSpace(keyword)) return; + var isAdmin = ((IGuildUser)umsg.Author).GuildPermissions.Administrator; + keyword = keyword.ToUpperInvariant(); string response; using (var uow = DbHandler.UnitOfWork()) { - var q = await uow.Quotes.GetRandomQuoteByKeywordAsync(channel.Guild.Id, keyword).ConfigureAwait(false); + var qs = uow.Quotes.GetAllQuotesByKeyword(channel.Guild.Id, keyword); - if (q == null) + if (qs==null || !qs.Any()) { response = "`No quotes found.`"; return; } + var q = qs.Shuffle().FirstOrDefault(elem => isAdmin || elem.AuthorId == umsg.Author.Id); + uow.Quotes.Remove(q); await uow.CompleteAsync().ConfigureAwait(false); response = "`Deleted a random quote`"; @@ -94,6 +98,7 @@ namespace NadekoBot.Modules.Utility [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] + [RequirePermission(GuildPermission.Administrator)] public async Task DelAllQuotes(IUserMessage umsg, [Remainder] string keyword) { var channel = (ITextChannel)umsg.Channel; @@ -105,7 +110,7 @@ namespace NadekoBot.Modules.Utility using (var uow = DbHandler.UnitOfWork()) { - var quotes = uow.Quotes.GetAllQuotesByKeyword(keyword); + var quotes = uow.Quotes.GetAllQuotesByKeyword(channel.Guild.Id, keyword); uow.Quotes.RemoveRange(quotes.ToArray());//wtf?! diff --git a/src/NadekoBot/Modules/Utility/Utility.cs b/src/NadekoBot/Modules/Utility/Utility.cs index 9224f351..6f4848ff 100644 --- a/src/NadekoBot/Modules/Utility/Utility.cs +++ b/src/NadekoBot/Modules/Utility/Utility.cs @@ -116,20 +116,30 @@ namespace NadekoBot.Modules.Utility [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] - public async Task Roles(IUserMessage msg, IGuildUser target = null) + public async Task Roles(IUserMessage msg, IGuildUser target, int page = 1) { var channel = (ITextChannel)msg.Channel; var guild = channel.Guild; + + const int RolesPerPage = 20; + + if (page < 1 || page > 100) + return; if (target != null) { - await msg.Reply($"`List of roles for **{target.Username}**:` \n• " + string.Join("\n• ", target.Roles.Except(new[] { guild.EveryoneRole }).OrderBy(r => r.Position)).SanitizeMentions()); + await msg.Reply($"`Page #{page} of roles for **{target.Username}**:` \n• " + string.Join("\n• ", target.Roles.Skip((page-1) * RolesPerPage).Take(RolesPerPage).Except(new[] { guild.EveryoneRole }).OrderBy(r => r.Position)).SanitizeMentions()); } else { - await msg.Reply("`List of roles:` \n• " + string.Join("\n• ", guild.Roles.Except(new[] { guild.EveryoneRole }).OrderBy(r=>r.Position)).SanitizeMentions()); + await msg.Reply($"`Page #{page} of all roles on this server:` \n• " + string.Join("\n• ", guild.Roles.Skip((page - 1) * RolesPerPage).Take(RolesPerPage).Except(new[] { guild.EveryoneRole }).OrderBy(r => r.Position)).SanitizeMentions()); } } + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + public Task Roles(IUserMessage msg, int page = 1) => + Roles(msg, null, page); + [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task ChannelTopic(IUserMessage umsg) diff --git a/src/NadekoBot/Resources/CommandStrings.Designer.cs b/src/NadekoBot/Resources/CommandStrings.Designer.cs index b5ef1d94..6e1cb268 100644 --- a/src/NadekoBot/Resources/CommandStrings.Designer.cs +++ b/src/NadekoBot/Resources/CommandStrings.Designer.cs @@ -78,7 +78,7 @@ namespace NadekoBot.Resources { } ///

- /// Looks up a localized string similar to `>8ball should i do something`. + /// Looks up a localized string similar to `>8ball should I do something`. /// public static string _8ball_usage { get { @@ -96,7 +96,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Add a custom reaction with a trigger and a response. Running this command in server requires Administration permission. Running this command in DM is Bot Owner only and adds a new global custom reaction. Guide here: <https://github.com/Kwoth/NadekoBot/wiki/Custom-Reactions>. + /// Looks up a localized string similar to Add a custom reaction with a trigger and a response. Running this command in server requires Administration permission. Running this command in DM is Bot Owner only and adds a new global custom reaction. Guide here: <http://nadekobot.readthedocs.io/en/1.0/Custom%20Reactions/>. /// public static string addcustreact_desc { get { @@ -501,7 +501,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Gives someone a certain amount of flowers. . + /// Looks up a localized string similar to Awards someone a certain amount of currency. . /// public static string award_desc { get { @@ -582,7 +582,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Bet to guess will the result be heads or tails. Guessing award you double flowers you've bet.. + /// Looks up a localized string similar to Bet to guess will the result be heads or tails. Guessing awards you double flowers you've bet.. /// public static string betflip_desc { get { @@ -1122,7 +1122,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Enables or disables automatic deleting of invites on the channel.If no channel supplied, it will default to current one. Use ALL to apply to all existing channels at once.. + /// Looks up a localized string similar to Toggles automatic deleting of invites posted in the channel. Does not negate the .srvrfilterinv enabled setting.. /// public static string chnlfilterinv_desc { get { @@ -1131,7 +1131,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `;cfi enable #general-chat`. + /// Looks up a localized string similar to `;cfi`. /// public static string chnlfilterinv_usage { get { @@ -1149,7 +1149,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Enables or disables automatic deleting of messages containing banned words on the channel.If no channel supplied, it will default to current one. Use ALL to apply to all existing channels at once.. + /// Looks up a localized string similar to Toggles automatic deleting of messages containing banned words on the channel. Does not negate the .srvrfilterwords enabled setting.. /// public static string chnlfilterwords_desc { get { @@ -1158,7 +1158,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `;cfw enable #general-chat`. + /// Looks up a localized string similar to `;cfw`. /// public static string chnlfilterwords_usage { get { @@ -1329,7 +1329,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to claimfinish cf cf3 claimfinish3. + /// Looks up a localized string similar to claimfinish cf. /// public static string claimfinish_cmd { get { @@ -1338,7 +1338,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Finish your claim with 3 stars if you destroyed a base. Optional second argument finishes for someone else.. + /// Looks up a localized string similar to Finish your claim with 3 stars if you destroyed a base. First argument is the war number, optional second argument finishes for someone else.. /// public static string claimfinish_desc { get { @@ -1347,7 +1347,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `,cf [war_number] [optional_other_name]`. + /// Looks up a localized string similar to `,cf 1 Someone`. /// public static string claimfinish_usage { get { @@ -1365,7 +1365,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Finish your claim with 1 stars if you destroyed a base. Optional second argument finishes for someone else.. + /// Looks up a localized string similar to Finish your claim with 1 star if you destroyed a base. First argument is the war number, optional second argument finishes for someone else.. /// public static string claimfinish1_desc { get { @@ -1374,7 +1374,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `,cf [war_number] [optional_other_name]`. + /// Looks up a localized string similar to `,cf1 2 SomeGirl`. /// public static string claimfinish1_usage { get { @@ -1392,7 +1392,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Finish your claim with 2 stars if you destroyed a base. Optional second argument finishes for someone else.. + /// Looks up a localized string similar to Finish your claim with 2 stars if you destroyed a base. First argument is the war number, optional second argument finishes for someone else.. /// public static string claimfinish2_desc { get { @@ -1401,7 +1401,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `,cf [war_number] [optional_other_name]`. + /// Looks up a localized string similar to `,cf2 1 SomeGuy`. /// public static string claimfinish2_usage { get { @@ -1473,7 +1473,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Sets a cooldown per user for a command. Set 0 to clear.. + /// Looks up a localized string similar to Sets a cooldown per user for a command. Set to 0 to remove the cooldown.. /// public static string cmdcooldown_desc { get { @@ -1527,7 +1527,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to List all of the bot's commands from a certain module.. + /// Looks up a localized string similar to List all of the bot's commands from a certain module. You can either specify full, or only first few letters of the module name.. /// public static string commands_desc { get { @@ -1536,7 +1536,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `-commands` or `.commands`. + /// Looks up a localized string similar to `-commands Administration` or `-cmds Admin`. /// public static string commands_usage { get { @@ -1554,7 +1554,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Convert quantities from>to.. + /// Looks up a localized string similar to Convert quantities. Use `~convertlist` to see supported dimensions and currencies.. /// public static string convert_desc { get { @@ -1563,7 +1563,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `~convert m>km 1000`. + /// Looks up a localized string similar to `~convert m km 1000`. /// public static string convert_usage { get { @@ -1581,7 +1581,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to List of the convertable dimensions and currencies.. + /// Looks up a localized string similar to List of the convertible dimensions and currencies.. /// public static string convertlist_desc { get { @@ -1905,7 +1905,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Deletes all quotes with the specified keyword. You have to either be bot owner or the creator of the quote to delete it.. + /// Looks up a localized string similar to Deletes a random quote with the specified keyword. You have to either be server Administrator or the creator of the quote to delete it.. /// public static string deletequote_desc { get { @@ -2094,7 +2094,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Instructions for helping the project!. + /// Looks up a localized string similar to Instructions for helping the project financially.. /// public static string donate_desc { get { @@ -2103,7 +2103,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `-donate` or `~donate`. + /// Looks up a localized string similar to `-donate`. /// public static string donate_usage { get { @@ -2310,7 +2310,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Adds or removes (if it exists) a word from the list of filtered words. + /// Looks up a localized string similar to Adds or removes (if it exists) a word from the list of filtered words.. /// public static string filterword_desc { get { @@ -2418,7 +2418,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Toggles currency generation on this channel. Every posted message will have 2% chance to spawn a NadekoFlower. Requires Manage Messages permission.. + /// Looks up a localized string similar to Toggles currency generation on this channel. Every posted message will have chance to spawn a NadekoFlower. Chance is specified by the Bot Owner. (default is 2%). /// public static string gencurrency_desc { get { @@ -2472,7 +2472,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Give someone a certain amount of NadekoFlowers. + /// Looks up a localized string similar to Give someone a certain amount of currency.. /// public static string give_desc { get { @@ -2571,7 +2571,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to greetdel. + /// Looks up a localized string similar to greetdel grdel. /// public static string greetdel_cmd { get { @@ -2706,7 +2706,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to h help. + /// Looks up a localized string similar to help h. /// public static string h_cmd { get { @@ -2715,7 +2715,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Either shows a help for a single command, or PMs you help link if no arguments are specified.. + /// Looks up a localized string similar to Either shows a help for a single command, or DMs you help link if no arguments are specified.. /// public static string h_desc { get { @@ -2724,7 +2724,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `-h !m q` or just `-h`. + /// Looks up a localized string similar to `-h !!q` or `-h`. /// public static string h_usage { get { @@ -2877,7 +2877,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Shows a random NSFW hentai image from gelbooru and danbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +). + /// Looks up a localized string similar to Shows a 2 random images (from gelbooru and danbooru) with a given tag. Tag is optional but preferred. Only 1 tag allowed.. /// public static string hentai_desc { get { @@ -2886,7 +2886,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `~hentai yuri+kissing`. + /// Looks up a localized string similar to `~hentai yuri`. /// public static string hentai_usage { get { @@ -3156,7 +3156,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `.jcsc`. + /// Looks up a localized string similar to `.jcsc TokenHere`. /// public static string jcsc_usage { get { @@ -3255,7 +3255,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Displays bot currency leaderboard. + /// Looks up a localized string similar to Displays bot currency leaderboard.. /// public static string leaderboard_desc { get { @@ -3444,7 +3444,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Lists whole permission chain with their indexes. You can specify optional page number if there are a lot of permissions. + /// Looks up a localized string similar to Lists whole permission chain with their indexes. You can specify an optional page number if there are a lot of permissions.. /// public static string listperms_desc { get { @@ -3849,7 +3849,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Shows a list of filtered words. + /// Looks up a localized string similar to Shows a list of filtered words.. /// public static string lstfilterwords_desc { get { @@ -4065,7 +4065,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to List all bot modules.. + /// Looks up a localized string similar to Lists all bot modules.. /// public static string modules_desc { get { @@ -4074,7 +4074,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `-modules` or `.modules`. + /// Looks up a localized string similar to `-modules`. /// public static string modules_usage { get { @@ -5001,7 +5001,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to removeplaying rmlp repl. + /// Looks up a localized string similar to removeplaying rmpl repl. /// public static string removeplaying_cmd { get { @@ -5091,7 +5091,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Renames a role. Roles you are renaming must be lower than bot's highest role. **Manage Roles Permissions.**. + /// Looks up a localized string similar to Renames a role. Roles you are renaming must be lower than bot's highest role.. /// public static string renamerole_desc { get { @@ -5324,33 +5324,6 @@ namespace NadekoBot.Resources { } } - /// - /// Looks up a localized string similar to rmvfilterword rw. - /// - public static string rmvfilterword_cmd { - get { - return ResourceManager.GetString("rmvfilterword_cmd", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Removes the word from the list of filtered words. - /// - public static string rmvfilterword_desc { - get { - return ResourceManager.GetString("rmvfilterword_desc", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to `;rw poop`. - /// - public static string rmvfilterword_usage { - get { - return ResourceManager.GetString("rmvfilterword_usage", resourceCulture); - } - } - /// /// Looks up a localized string similar to rolecmd rc. /// @@ -5793,7 +5766,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Send a message to someone on a different server through the bot. . + /// Looks up a localized string similar to Sends a message to someone on a different server through the bot. Separate server and channel/user ids with | and prepend channel id with `c:` and user id with `u:`.. /// public static string send_desc { get { @@ -5802,7 +5775,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `.send sid`. + /// Looks up a localized string similar to `.send serverid|c:channelid` or `.send serverid|u:userid`. /// public static string send_usage { get { @@ -6414,7 +6387,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Enables or disables automatic deleting of invites on the server.. + /// Looks up a localized string similar to Toggles automatic deleting of invites posted in the server.. /// public static string srvrfilterinv_desc { get { @@ -6423,7 +6396,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `;sfi disable`. + /// Looks up a localized string similar to `;sfi`. /// public static string srvrfilterinv_usage { get { @@ -6441,7 +6414,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Enables or disables automatic deleting of messages containing forbidden words on the server.. + /// Looks up a localized string similar to Toggles automatic deleting of messages containing forbidden words on the server.. /// public static string srvrfilterwords_desc { get { @@ -6450,7 +6423,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `;sfw disable`. + /// Looks up a localized string similar to `;sfw`. /// public static string srvrfilterwords_usage { get { @@ -6630,7 +6603,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to toggle whether the self-assigned roles should be exclusive. + /// Looks up a localized string similar to Toggles whether the self-assigned roles are exclusive. (So that any person can have only one of the self assignable roles). /// public static string tesar_desc { get { @@ -6711,7 +6684,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to List the valid languages for translation.. + /// Looks up a localized string similar to Lists the valid languages for translation.. /// public static string translangs_desc { get { @@ -6738,7 +6711,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Translates from>to text. From the given language to the destiation language.. + /// Looks up a localized string similar to Translates from>to text. From the given language to the destination language.. /// public static string translate_desc { get { @@ -7395,7 +7368,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `.voicerpresence`. + /// Looks up a localized string similar to `.voicepresence`. /// public static string voicepresence_usage { get { @@ -7458,7 +7431,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to whosplaying. + /// Looks up a localized string similar to whosplaying whpl. /// public static string whosplaying_cmd { get { @@ -7476,7 +7449,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `.whoplays Overwatch`. + /// Looks up a localized string similar to `.whpl Overwatch`. /// public static string whosplaying_usage { get { diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index 7ea75246..65d8b9ff 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -118,13 +118,13 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - h help + help h - Either shows a help for a single command, or PMs you help link if no arguments are specified. + Either shows a help for a single command, or DMs you help link if no arguments are specified. - `-h !m q` or just `-h` + `-h !!q` or `-h` hgit @@ -139,31 +139,31 @@ donate - Instructions for helping the project! + Instructions for helping the project financially. - `-donate` or `~donate` + `-donate` modules mdls - List all bot modules. + Lists all bot modules. - `-modules` or `.modules` + `-modules` commands cmds - List all of the bot's commands from a certain module. + List all of the bot's commands from a certain module. You can either specify full, or only first few letters of the module name. - `-commands` or `.commands` + `-commands Administration` or `-cmds Admin` - greetdel + greetdel grdel Toggles automatic deletion of greet messages. @@ -268,7 +268,7 @@ Toggles logging to this channel whenever someone joins or leaves a voice channel you are in right now. - `.voicerpresence` + `.voicepresence` repeatinvoke repinv @@ -316,7 +316,7 @@ `.lipl` - removeplaying rmlp repl + removeplaying rmpl repl Removes a playing string on a given number. @@ -367,7 +367,7 @@ Joins current channel to an instance of cross server channel using the token. - `.jcsc` + `.jcsc TokenHere` lcsc @@ -409,7 +409,7 @@ togglexclsar tesar - toggle whether the self-assigned roles should be exclusive + Toggles whether the self-assigned roles are exclusive. (So that any person can have only one of the self assignable roles) `.tesar` @@ -436,7 +436,7 @@ addcustreact acr - Add a custom reaction with a trigger and a response. Running this command in server requires Administration permission. Running this command in DM is Bot Owner only and adds a new global custom reaction. Guide here: <https://github.com/Kwoth/NadekoBot/wiki/Custom-Reactions> + Add a custom reaction with a trigger and a response. Running this command in server requires Administration permission. Running this command in DM is Bot Owner only and adds a new global custom reaction. Guide here: <http://nadekobot.readthedocs.io/en/1.0/Custom%20Reactions/> `.acr "hello" Hi there %user%` @@ -553,7 +553,7 @@ renamerole renr - Renames a role. Roles you are renaming must be lower than bot's highest role. **Manage Roles Permissions.** + Renames a role. Roles you are renaming must be lower than bot's highest role. `.renr "First role" SecondRole` @@ -760,10 +760,10 @@ send - Send a message to someone on a different server through the bot. + Sends a message to someone on a different server through the bot. Separate server and channel/user ids with | and prepend channel id with `c:` and user id with `u:`. - `.send sid` + `.send serverid|c:channelid` or `.send serverid|u:userid` mentionrole menro @@ -865,13 +865,13 @@ `.uinfo @SomeUser` - whosplaying + whosplaying whpl Shows a list of users who are playing the specified game. - `.whoplays Overwatch` + `.whpl Overwatch` inrole @@ -958,52 +958,43 @@ chnlfilterinv cfi - Enables or disables automatic deleting of invites on the channel.If no channel supplied, it will default to current one. Use ALL to apply to all existing channels at once. + Toggles automatic deleting of invites posted in the channel. Does not negate the .srvrfilterinv enabled setting. - `;cfi enable #general-chat` + `;cfi` srvrfilterinv sfi - Enables or disables automatic deleting of invites on the server. + Toggles automatic deleting of invites posted in the server. - `;sfi disable` + `;sfi` chnlfilterwords cfw - Enables or disables automatic deleting of messages containing banned words on the channel.If no channel supplied, it will default to current one. Use ALL to apply to all existing channels at once. + Toggles automatic deleting of messages containing banned words on the channel. Does not negate the .srvrfilterwords enabled setting. - `;cfw enable #general-chat` + `;cfw` fw - Adds or removes (if it exists) a word from the list of filtered words + Adds or removes (if it exists) a word from the list of filtered words. `;fw poop` - - rmvfilterword rw - - - Removes the word from the list of filtered words - - - `;rw poop` - lstfilterwords lfw - Shows a list of filtered words + Shows a list of filtered words. `;lfw` @@ -1012,10 +1003,10 @@ srvrfilterwords sfw - Enables or disables automatic deleting of messages containing forbidden words on the server. + Toggles automatic deleting of messages containing forbidden words on the server. - `;sfw disable` + `;sfw` permrole pr @@ -1228,7 +1219,7 @@ cmdcooldown cmdcd - Sets a cooldown per user for a command. Set 0 to clear. + Sets a cooldown per user for a command. Set to 0 to remove the cooldown. `;cmdcd "some cmd" 5` @@ -1264,7 +1255,7 @@ deletequote delq - Deletes all quotes with the specified keyword. You have to either be bot owner or the creator of the quote to delete it. + Deletes a random quote with the specified keyword. You have to either be server Administrator or the creator of the quote to delete it. `.delq abc` @@ -1336,7 +1327,7 @@ betflip bf - Bet to guess will the result be heads or tails. Guessing award you double flowers you've bet. + Bet to guess will the result be heads or tails. Guessing awards you double flowers you've bet. `$bf 5 heads` or `$bf 3 t` @@ -1399,7 +1390,7 @@ give - Give someone a certain amount of NadekoFlowers + Give someone a certain amount of currency. `$give 1 "@SomeGuy"` @@ -1408,7 +1399,7 @@ award - Gives someone a certain amount of flowers. + Awards someone a certain amount of currency. `$award 100 @person` @@ -1435,7 +1426,7 @@ leaderboard lb - Displays bot currency leaderboard + Displays bot currency leaderboard. `$lb` @@ -1534,7 +1525,7 @@ gencurrency gc - Toggles currency generation on this channel. Every posted message will have 2% chance to spawn a NadekoFlower. Requires Manage Messages permission. + Toggles currency generation on this channel. Every posted message will have chance to spawn a NadekoFlower. Chance is specified by the Bot Owner. (default is 2%) `>gc` @@ -1564,7 +1555,7 @@ Ask the 8ball a yes/no question. - `>8ball should i do something` + `>8ball should I do something` rps @@ -1930,16 +1921,16 @@ convert - Convert quantities from>to. + Convert quantities. Use `~convertlist` to see supported dimensions and currencies. - `~convert m>km 1000` + `~convert m km 1000` convertlist - List of the convertable dimensions and currencies. + List of the convertible dimensions and currencies. `~convertlist` @@ -2263,10 +2254,10 @@ hentai - Shows a random NSFW hentai image from gelbooru and danbooru with a given tag. Tag is optional but preffered. (multiple tags are appended with +) + Shows a 2 random images (from gelbooru and danbooru) with a given tag. Tag is optional but preferred. Only 1 tag allowed. - `~hentai yuri+kissing` + `~hentai yuri` danbooru @@ -2368,31 +2359,31 @@ `,call [war_number] [base_number] [optional_other_name]` - claimfinish cf cf3 claimfinish3 + claimfinish cf - Finish your claim with 3 stars if you destroyed a base. Optional second argument finishes for someone else. + Finish your claim with 3 stars if you destroyed a base. First argument is the war number, optional second argument finishes for someone else. - `,cf [war_number] [optional_other_name]` + `,cf 1 Someone` claimfinish2 cf2 - Finish your claim with 2 stars if you destroyed a base. Optional second argument finishes for someone else. + Finish your claim with 2 stars if you destroyed a base. First argument is the war number, optional second argument finishes for someone else. - `,cf [war_number] [optional_other_name]` + `,cf2 1 SomeGuy` claimfinish1 cf1 - Finish your claim with 1 stars if you destroyed a base. Optional second argument finishes for someone else. + Finish your claim with 1 star if you destroyed a base. First argument is the war number, optional second argument finishes for someone else. - `,cf [war_number] [optional_other_name]` + `,cf1 2 SomeGirl` unclaim ucall uc @@ -2461,7 +2452,7 @@ translate trans - Translates from>to text. From the given language to the destiation language. + Translates from>to text. From the given language to the destination language. `~trans en>fr Hello` @@ -2470,7 +2461,7 @@ translangs - List the valid languages for translation. + Lists the valid languages for translation. `~translangs` @@ -2557,7 +2548,7 @@ cash $$ - Lists whole permission chain with their indexes. You can specify optional page number if there are a lot of permissions + Lists whole permission chain with their indexes. You can specify an optional page number if there are a lot of permissions. `;lp` or `;lp 3` diff --git a/src/NadekoBot/Services/Database/Repositories/IQuoteRepository.cs b/src/NadekoBot/Services/Database/Repositories/IQuoteRepository.cs index 3bbef352..f119fb1e 100644 --- a/src/NadekoBot/Services/Database/Repositories/IQuoteRepository.cs +++ b/src/NadekoBot/Services/Database/Repositories/IQuoteRepository.cs @@ -9,7 +9,7 @@ namespace NadekoBot.Services.Database.Repositories { public interface IQuoteRepository : IRepository { - IEnumerable GetAllQuotesByKeyword(string keyword); + IEnumerable GetAllQuotesByKeyword(ulong guildId, string keyword); Task GetRandomQuoteByKeywordAsync(ulong guildId, string keyword); } } diff --git a/src/NadekoBot/Services/Database/Repositories/Impl/QuoteRepository.cs b/src/NadekoBot/Services/Database/Repositories/Impl/QuoteRepository.cs index 702cfc21..35e9bd0e 100644 --- a/src/NadekoBot/Services/Database/Repositories/Impl/QuoteRepository.cs +++ b/src/NadekoBot/Services/Database/Repositories/Impl/QuoteRepository.cs @@ -15,13 +15,13 @@ namespace NadekoBot.Services.Database.Repositories.Impl { } - public IEnumerable GetAllQuotesByKeyword(string keyword) => - _set.Where(q => q.Keyword == keyword); + public IEnumerable GetAllQuotesByKeyword(ulong guildId, string keyword) => + _set.Where(q => q.GuildId == guildId && q.Keyword == keyword); public Task GetRandomQuoteByKeywordAsync(ulong guildId, string keyword) { var rng = new NadekoRandom(); - return _set.Where(q => q.Keyword == keyword).OrderBy(q => rng.Next()).FirstOrDefaultAsync(); + return _set.Where(q => q.GuildId == guildId && q.Keyword == keyword).OrderBy(q => rng.Next()).FirstOrDefaultAsync(); } } } diff --git a/src/NadekoBot/_Extensions/Extensions.cs b/src/NadekoBot/_Extensions/Extensions.cs index f2c22573..9089646a 100644 --- a/src/NadekoBot/_Extensions/Extensions.cs +++ b/src/NadekoBot/_Extensions/Extensions.cs @@ -23,6 +23,8 @@ namespace NadekoBot.Extensions http.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); } + public static bool IsInteger(this double number) => number == Math.Truncate(number); + public static string SanitizeMentions(this string str) => str.Replace("@everyone", "@everyοne").Replace("@here", "@һere"); From ae8429f0b0d6821dd673a15970fcc4990e61bc97 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Mon, 10 Oct 2016 02:40:50 +0200 Subject: [PATCH 67/74] Fixed roles order --- src/NadekoBot/Modules/Utility/Utility.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/NadekoBot/Modules/Utility/Utility.cs b/src/NadekoBot/Modules/Utility/Utility.cs index 6f4848ff..946ee7c1 100644 --- a/src/NadekoBot/Modules/Utility/Utility.cs +++ b/src/NadekoBot/Modules/Utility/Utility.cs @@ -127,11 +127,11 @@ namespace NadekoBot.Modules.Utility return; if (target != null) { - await msg.Reply($"`Page #{page} of roles for **{target.Username}**:` \n• " + string.Join("\n• ", target.Roles.Skip((page-1) * RolesPerPage).Take(RolesPerPage).Except(new[] { guild.EveryoneRole }).OrderBy(r => r.Position)).SanitizeMentions()); + await msg.Reply($"`Page #{page} of roles for **{target.Username}**:` \n• " + string.Join("\n• ", target.Roles.Except(new[] { guild.EveryoneRole }).OrderBy(r => r.Position).Skip((page - 1) * RolesPerPage).Take(RolesPerPage)).SanitizeMentions()); } else { - await msg.Reply($"`Page #{page} of all roles on this server:` \n• " + string.Join("\n• ", guild.Roles.Skip((page - 1) * RolesPerPage).Take(RolesPerPage).Except(new[] { guild.EveryoneRole }).OrderBy(r => r.Position)).SanitizeMentions()); + await msg.Reply($"`Page #{page} of all roles on this server:` \n• " + string.Join("\n• ", guild.Roles.Except(new[] { guild.EveryoneRole }).OrderBy(r => r.Position).Skip((page - 1) * RolesPerPage).Take(RolesPerPage)).SanitizeMentions()); } } From fbd2beb34885210f061e0a5d3407b1ffd658be77 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Mon, 10 Oct 2016 02:52:03 +0200 Subject: [PATCH 68/74] Hopefuly fixed convert --- .../Searches/Commands/UnitConversion.cs | 18 +++++++++--------- src/NadekoBot/_Extensions/Extensions.cs | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs b/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs index 9b2da234..53c67413 100644 --- a/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs +++ b/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs @@ -109,7 +109,7 @@ namespace NadekoBot.Modules.Searches await msg.ReplyLong(sb.ToString(), breakOn: new[] { "```xl\n", "\n" }); } [NadekoCommand, Usage, Description, Aliases] - public async Task Convert(IUserMessage msg, string origin, string target, double value) + public async Task Convert(IUserMessage msg, string origin, string target, decimal value) { var originUnit = Units.Find(x => x.Triggers.Select(y => y.ToLowerInvariant()).Contains(origin.ToLowerInvariant())); var targetUnit = Units.Find(x => x.Triggers.Select(y => y.ToLowerInvariant()).Contains(target.ToLowerInvariant())); @@ -123,7 +123,7 @@ namespace NadekoBot.Modules.Searches await msg.Reply(string.Format("Cannot convert {0} to {1}: types of unit are not equal", originUnit.Triggers.First(), targetUnit.Triggers.First())); return; } - double res; + decimal res; if (originUnit.Triggers == targetUnit.Triggers) res = value; else if (originUnit.UnitType == "temperature") { @@ -131,10 +131,10 @@ namespace NadekoBot.Modules.Searches switch (originUnit.Triggers.First().ToUpperInvariant()) { case "C": - res = value + 273.15; //celcius! + res = value + 273.15m; //celcius! break; case "F": - res = (value + 459.67) * (5 / 9); + res = (value + 459.67m) * (5 / 9); break; default: res = value; @@ -144,10 +144,10 @@ namespace NadekoBot.Modules.Searches switch (targetUnit.Triggers.First()) { case "C": - res = value - 273.15; //celcius! + res = value - 273.15m; //celcius! break; case "F": - res = res * (9 / 5) - 458.67; + res = res * (9 / 5) - 458.67m; break; default: break; @@ -157,14 +157,14 @@ namespace NadekoBot.Modules.Searches { if (originUnit.UnitType == "currency") { - res = (value * (double)targetUnit.Modifier) / (double)originUnit.Modifier; + res = (value * targetUnit.Modifier) / originUnit.Modifier; } else - res = (value * (double)originUnit.Modifier) / (double)targetUnit.Modifier; + res = (value * originUnit.Modifier) / targetUnit.Modifier; } res = Math.Round(res, 2); - await msg.Reply(string.Format("{0} {1}s is equal to {2} {3}s", value, originUnit.Triggers.First().SnPl(value.IsInteger() ? (int)value : 2), res, targetUnit.Triggers.First().SnPl(res.IsInteger() ? (int)res : 2))); + await msg.Reply(string.Format("{0} {1} is equal to {2} {3}", value, (originUnit.Triggers.First() + "s").SnPl(value.IsInteger() ? (int)value : 2), res, (targetUnit.Triggers.First() + "s").SnPl(res.IsInteger() ? (int)res : 2))); } } diff --git a/src/NadekoBot/_Extensions/Extensions.cs b/src/NadekoBot/_Extensions/Extensions.cs index 9089646a..d73eab9b 100644 --- a/src/NadekoBot/_Extensions/Extensions.cs +++ b/src/NadekoBot/_Extensions/Extensions.cs @@ -23,7 +23,7 @@ namespace NadekoBot.Extensions http.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); } - public static bool IsInteger(this double number) => number == Math.Truncate(number); + public static bool IsInteger(this decimal number) => number == Math.Truncate(number); public static string SanitizeMentions(this string str) => str.Replace("@everyone", "@everyοne").Replace("@here", "@һere"); From 482d1a8fb44b9b3d6668cd3f7183cf048934f5bf Mon Sep 17 00:00:00 2001 From: Kwoth Date: Mon, 10 Oct 2016 03:02:42 +0200 Subject: [PATCH 69/74] Moved .convert and .calc to Utility, updated descriptions to match prefix --- .../Modules/Searches/Commands/CalcCommand.cs | 67 ------- .../Commands/Models/MeasurementUnit.cs | 11 -- .../Modules/Searches/Commands/Models/Rates.cs | 14 -- .../Searches/Commands/UnitConversion.cs | 180 ------------------ .../Resources/CommandStrings.Designer.cs | 10 +- src/NadekoBot/Resources/CommandStrings.resx | 10 +- 6 files changed, 10 insertions(+), 282 deletions(-) delete mode 100644 src/NadekoBot/Modules/Searches/Commands/CalcCommand.cs delete mode 100644 src/NadekoBot/Modules/Searches/Commands/Models/MeasurementUnit.cs delete mode 100644 src/NadekoBot/Modules/Searches/Commands/Models/Rates.cs delete mode 100644 src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs diff --git a/src/NadekoBot/Modules/Searches/Commands/CalcCommand.cs b/src/NadekoBot/Modules/Searches/Commands/CalcCommand.cs deleted file mode 100644 index f9edac0c..00000000 --- a/src/NadekoBot/Modules/Searches/Commands/CalcCommand.cs +++ /dev/null @@ -1,67 +0,0 @@ -using Discord; -using Discord.Commands; -using NadekoBot.Attributes; -using NadekoBot.Extensions; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Text; -using System.Threading.Tasks; - -namespace NadekoBot.Modules.Searches -{ - [Group] - public partial class Searches - { - [NadekoCommand, Usage, Description, Aliases] - [RequireContext(ContextType.Guild)] - public static async Task Calculate(IUserMessage msg, [Remainder] string expression) - { - try - { - var expr = new NCalc.Expression(expression, NCalc.EvaluateOptions.IgnoreCase); - expr.EvaluateParameter += Expr_EvaluateParameter; - var result = expr.Evaluate(); - await msg.Reply(string.Format("Your expression evaluated to: {0}", expr.Error ?? result)); - } - catch (Exception e) - { - await msg.Reply($"Your expression failed to evaluate: {e.Message} "); - } - } - - private static void Expr_EvaluateParameter(string name, NCalc.ParameterArgs args) - { - switch (name.ToLowerInvariant()) { - case "pi": args.Result= Math.PI; - break; - case "e": args.Result = Math.E; - break; - } - } - - [NadekoCommand, Usage, Description, Aliases] - [RequireContext(ContextType.Guild)] - public async Task CalcOps(IUserMessage msg) - { - StringBuilder builder = new StringBuilder(); - var selection = typeof(Math).GetTypeInfo().GetMethods().Except(typeof(object).GetTypeInfo().GetMethods()).Select(x => - { - var name = x.Name; - if (x.GetParameters().Any()) - { - name += " (" + string.Join(", ", x.GetParameters().Select(y => y.IsOptional ? $"[{y.ParameterType.Name + " " + y.Name }]" : y.ParameterType.Name + " " + y.Name)) + ")"; - } - return name; - }); - foreach (var method in selection) builder.AppendLine(method); - await msg.ReplyLong(builder.ToString()); - } - } - class ExpressionContext - { - public double Pi { get; set; } = Math.PI; - } - -} diff --git a/src/NadekoBot/Modules/Searches/Commands/Models/MeasurementUnit.cs b/src/NadekoBot/Modules/Searches/Commands/Models/MeasurementUnit.cs deleted file mode 100644 index ba4d1bb7..00000000 --- a/src/NadekoBot/Modules/Searches/Commands/Models/MeasurementUnit.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections.Generic; - -namespace NadekoBot.Modules.Searches.Commands.Models -{ - public class MeasurementUnit - { - public List Triggers { get; set; } - public string UnitType { get; set; } - public decimal Modifier { get; set; } - } -} diff --git a/src/NadekoBot/Modules/Searches/Commands/Models/Rates.cs b/src/NadekoBot/Modules/Searches/Commands/Models/Rates.cs deleted file mode 100644 index 5aed22fa..00000000 --- a/src/NadekoBot/Modules/Searches/Commands/Models/Rates.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Newtonsoft.Json; -using System; -using System.Collections.Generic; - -namespace NadekoBot.Modules.Searches.Commands.Models -{ - 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/Searches/Commands/UnitConversion.cs b/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs deleted file mode 100644 index 53c67413..00000000 --- a/src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs +++ /dev/null @@ -1,180 +0,0 @@ -using Discord; -using Discord.Commands; -using NadekoBot.Attributes; -using NadekoBot.Extensions; -using NadekoBot.Modules.Searches.Commands.Models; -using NadekoBot.Services; -using NadekoBot.Services.Database.Models; -using Newtonsoft.Json; -using NLog; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Net.Http; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using System.Xml; - -namespace NadekoBot.Modules.Searches -{ - public partial class Searches - { - [Group] - public class UnitConverterCommands - { - private Logger _log; - private static Timer _timer; - public static TimeSpan Span = new TimeSpan(12, 0, 0); - public UnitConverterCommands() - { - _log = LogManager.GetCurrentClassLogger(); - - try - { - using (var uow = DbHandler.UnitOfWork()) - { - //need to do this the first time - if (uow.ConverterUnits.Empty()) - { - var content = JsonConvert.DeserializeObject>(File.ReadAllText("units.json")).Select(u => new ConvertUnit() - { - Modifier = u.Modifier, - UnitType = u.UnitType, - InternalTrigger = string.Join("|", u.Triggers) - }); - - uow.ConverterUnits.AddRange(content.ToArray()); - uow.Complete(); - } - Units = uow.ConverterUnits.GetAll().ToList(); - } - } - catch (Exception e) - { - _log.Warn("Could not load units: " + e.Message); - } - - - - _timer = new Timer(new TimerCallback(UpdateCurrency), null, 0,(int)Span.TotalMilliseconds); - - } - - public void UpdateCurrency(object stateInfo) - { - var currencyRates = UpdateCurrencyRates().Result; - var unitTypeString = "currency"; - using (var uow = DbHandler.UnitOfWork()) - { - var toRemove = Units.Where(u => u.UnitType == unitTypeString); - Units.RemoveAll(u => u.UnitType == unitTypeString); - uow.ConverterUnits.RemoveRange(toRemove.ToArray()); - var baseType = new ConvertUnit() - { - Triggers = new[] { currencyRates.Base }, - Modifier = decimal.One, - UnitType = unitTypeString - }; - uow.ConverterUnits.Add(baseType); - Units.Add(baseType); - var range = currencyRates.ConversionRates.Select(u => new ConvertUnit() - { - InternalTrigger = u.Key, - Modifier = u.Value, - UnitType = unitTypeString - }).ToArray(); - uow.ConverterUnits.AddRange(range); - Units.AddRange(range); - - uow.Complete(); - } - _log.Info("Updated Currency"); - } - - public List Units { get; set; } - [NadekoCommand, Usage, Description, Aliases] - [RequireContext(ContextType.Guild)] - public async Task ConvertList(IUserMessage msg) - { - var sb = new StringBuilder("Units that can be used by the converter: \n"); - var res = Units.GroupBy(x => x.UnitType); - foreach (var group in res) - { - sb.AppendLine($"{group.Key}: ```xl"); - sb.AppendLine(string.Join(",", group.Select(x => x.Triggers.FirstOrDefault()).OrderBy(x => x))); - sb.AppendLine("```"); - } - await msg.ReplyLong(sb.ToString(), breakOn: new[] { "```xl\n", "\n" }); - } - [NadekoCommand, Usage, Description, Aliases] - public async Task Convert(IUserMessage msg, string origin, string target, decimal value) - { - var originUnit = Units.Find(x => x.Triggers.Select(y => y.ToLowerInvariant()).Contains(origin.ToLowerInvariant())); - var targetUnit = Units.Find(x => x.Triggers.Select(y => y.ToLowerInvariant()).Contains(target.ToLowerInvariant())); - if (originUnit == null || targetUnit == null) - { - await msg.Reply(string.Format("Cannot convert {0} to {1}: units not found", origin, target)); - return; - } - if (originUnit.UnitType != targetUnit.UnitType) - { - await msg.Reply(string.Format("Cannot convert {0} to {1}: types of unit are not equal", originUnit.Triggers.First(), targetUnit.Triggers.First())); - return; - } - decimal res; - if (originUnit.Triggers == targetUnit.Triggers) res = value; - else if (originUnit.UnitType == "temperature") - { - //don't really care too much about efficiency, so just convert to Kelvin, then to target - switch (originUnit.Triggers.First().ToUpperInvariant()) - { - case "C": - res = value + 273.15m; //celcius! - break; - case "F": - res = (value + 459.67m) * (5 / 9); - break; - default: - res = value; - break; - } - //from Kelvin to target - switch (targetUnit.Triggers.First()) - { - case "C": - res = value - 273.15m; //celcius! - break; - case "F": - res = res * (9 / 5) - 458.67m; - break; - default: - break; - } - } - else - { - if (originUnit.UnitType == "currency") - { - res = (value * targetUnit.Modifier) / originUnit.Modifier; - } - else - res = (value * originUnit.Modifier) / targetUnit.Modifier; - } - res = Math.Round(res, 2); - - await msg.Reply(string.Format("{0} {1} is equal to {2} {3}", value, (originUnit.Triggers.First() + "s").SnPl(value.IsInteger() ? (int)value : 2), res, (targetUnit.Triggers.First() + "s").SnPl(res.IsInteger() ? (int)res : 2))); - } - } - - public static async Task UpdateCurrencyRates() - { - using (var http = new HttpClient()) - { - var res = await http.GetStringAsync("http://api.fixer.io/latest").ConfigureAwait(false); - return JsonConvert.DeserializeObject(res); - } - } - } -} \ No newline at end of file diff --git a/src/NadekoBot/Resources/CommandStrings.Designer.cs b/src/NadekoBot/Resources/CommandStrings.Designer.cs index 6e1cb268..7e59fb43 100644 --- a/src/NadekoBot/Resources/CommandStrings.Designer.cs +++ b/src/NadekoBot/Resources/CommandStrings.Designer.cs @@ -807,7 +807,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `~calcops`. + /// Looks up a localized string similar to `.calcops`. /// public static string calcops_usage { get { @@ -834,7 +834,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `~calc 1+1`. + /// Looks up a localized string similar to `.calc 1+1`. /// public static string calculate_usage { get { @@ -1554,7 +1554,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Convert quantities. Use `~convertlist` to see supported dimensions and currencies.. + /// Looks up a localized string similar to Convert quantities. Use `.convertlist` to see supported dimensions and currencies.. /// public static string convert_desc { get { @@ -1563,7 +1563,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `~convert m km 1000`. + /// Looks up a localized string similar to `.convert m km 1000`. /// public static string convert_usage { get { @@ -1590,7 +1590,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to `~convertlist`. + /// Looks up a localized string similar to `.convertlist`. /// public static string convertlist_usage { get { diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index 65d8b9ff..730b3399 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -1921,10 +1921,10 @@ convert - Convert quantities. Use `~convertlist` to see supported dimensions and currencies. + Convert quantities. Use `.convertlist` to see supported dimensions and currencies. - `~convert m km 1000` + `.convert m km 1000` convertlist @@ -1933,7 +1933,7 @@ List of the convertible dimensions and currencies. - `~convertlist` + `.convertlist` wowjoke @@ -1951,7 +1951,7 @@ Evaluate a mathematical expression. - `~calc 1+1` + `.calc 1+1` osu @@ -2515,7 +2515,7 @@ Shows all available operations in .calc command - `~calcops` + `.calcops` calcops From 0470f634d00694c3a24612a61677c41594e5076d Mon Sep 17 00:00:00 2001 From: Kwoth Date: Mon, 10 Oct 2016 03:12:37 +0200 Subject: [PATCH 70/74] Updated ;cfi and cfw descriptions to say they don't affect bot owner, fixed .convert and .calc? --- .../Modules/Utility/Commands/CalcCommand.cs | 67 +++++++ .../Utility/Commands/UnitConversion.cs | 180 ++++++++++++++++++ .../Modules/Utility/Models/MeasurementUnit.cs | 11 ++ src/NadekoBot/Modules/Utility/Models/Rates.cs | 14 ++ .../Resources/CommandStrings.Designer.cs | 10 +- src/NadekoBot/Resources/CommandStrings.resx | 10 +- 6 files changed, 282 insertions(+), 10 deletions(-) create mode 100644 src/NadekoBot/Modules/Utility/Commands/CalcCommand.cs create mode 100644 src/NadekoBot/Modules/Utility/Commands/UnitConversion.cs create mode 100644 src/NadekoBot/Modules/Utility/Models/MeasurementUnit.cs create mode 100644 src/NadekoBot/Modules/Utility/Models/Rates.cs diff --git a/src/NadekoBot/Modules/Utility/Commands/CalcCommand.cs b/src/NadekoBot/Modules/Utility/Commands/CalcCommand.cs new file mode 100644 index 00000000..e3ad166b --- /dev/null +++ b/src/NadekoBot/Modules/Utility/Commands/CalcCommand.cs @@ -0,0 +1,67 @@ +using Discord; +using Discord.Commands; +using NadekoBot.Attributes; +using NadekoBot.Extensions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace NadekoBot.Modules.Utility +{ + [Group] + public partial class Utility + { + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + public static async Task Calculate(IUserMessage msg, [Remainder] string expression) + { + try + { + var expr = new NCalc.Expression(expression, NCalc.EvaluateOptions.IgnoreCase); + expr.EvaluateParameter += Expr_EvaluateParameter; + var result = expr.Evaluate(); + await msg.Reply(string.Format("Your expression evaluated to: {0}", expr.Error ?? result)); + } + catch (Exception e) + { + await msg.Reply($"Your expression failed to evaluate: {e.Message} "); + } + } + + private static void Expr_EvaluateParameter(string name, NCalc.ParameterArgs args) + { + switch (name.ToLowerInvariant()) { + case "pi": args.Result= Math.PI; + break; + case "e": args.Result = Math.E; + break; + } + } + + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + public async Task CalcOps(IUserMessage msg) + { + StringBuilder builder = new StringBuilder(); + var selection = typeof(Math).GetTypeInfo().GetMethods().Except(typeof(object).GetTypeInfo().GetMethods()).Select(x => + { + var name = x.Name; + if (x.GetParameters().Any()) + { + name += " (" + string.Join(", ", x.GetParameters().Select(y => y.IsOptional ? $"[{y.ParameterType.Name + " " + y.Name }]" : y.ParameterType.Name + " " + y.Name)) + ")"; + } + return name; + }); + foreach (var method in selection) builder.AppendLine(method); + await msg.ReplyLong(builder.ToString()); + } + } + class ExpressionContext + { + public double Pi { get; set; } = Math.PI; + } + +} diff --git a/src/NadekoBot/Modules/Utility/Commands/UnitConversion.cs b/src/NadekoBot/Modules/Utility/Commands/UnitConversion.cs new file mode 100644 index 00000000..459466bb --- /dev/null +++ b/src/NadekoBot/Modules/Utility/Commands/UnitConversion.cs @@ -0,0 +1,180 @@ +using Discord; +using Discord.Commands; +using NadekoBot.Attributes; +using NadekoBot.Extensions; +using NadekoBot.Modules.Utility.Commands.Models; +using NadekoBot.Services; +using NadekoBot.Services.Database.Models; +using Newtonsoft.Json; +using NLog; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net.Http; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Xml; + +namespace NadekoBot.Modules.Utility +{ + public partial class Utility + { + [Group] + public class UnitConverterCommands + { + private Logger _log; + private static Timer _timer; + public static TimeSpan Span = new TimeSpan(12, 0, 0); + public UnitConverterCommands() + { + _log = LogManager.GetCurrentClassLogger(); + + try + { + using (var uow = DbHandler.UnitOfWork()) + { + //need to do this the first time + if (uow.ConverterUnits.Empty()) + { + var content = JsonConvert.DeserializeObject>(File.ReadAllText("units.json")).Select(u => new ConvertUnit() + { + Modifier = u.Modifier, + UnitType = u.UnitType, + InternalTrigger = string.Join("|", u.Triggers) + }); + + uow.ConverterUnits.AddRange(content.ToArray()); + uow.Complete(); + } + Units = uow.ConverterUnits.GetAll().ToList(); + } + } + catch (Exception e) + { + _log.Warn("Could not load units: " + e.Message); + } + + + + _timer = new Timer(new TimerCallback(UpdateCurrency), null, 0,(int)Span.TotalMilliseconds); + + } + + public void UpdateCurrency(object stateInfo) + { + var currencyRates = UpdateCurrencyRates().Result; + var unitTypeString = "currency"; + using (var uow = DbHandler.UnitOfWork()) + { + var toRemove = Units.Where(u => u.UnitType == unitTypeString); + Units.RemoveAll(u => u.UnitType == unitTypeString); + uow.ConverterUnits.RemoveRange(toRemove.ToArray()); + var baseType = new ConvertUnit() + { + Triggers = new[] { currencyRates.Base }, + Modifier = decimal.One, + UnitType = unitTypeString + }; + uow.ConverterUnits.Add(baseType); + Units.Add(baseType); + var range = currencyRates.ConversionRates.Select(u => new ConvertUnit() + { + InternalTrigger = u.Key, + Modifier = u.Value, + UnitType = unitTypeString + }).ToArray(); + uow.ConverterUnits.AddRange(range); + Units.AddRange(range); + + uow.Complete(); + } + _log.Info("Updated Currency"); + } + + public List Units { get; set; } + [NadekoCommand, Usage, Description, Aliases] + [RequireContext(ContextType.Guild)] + public async Task ConvertList(IUserMessage msg) + { + var sb = new StringBuilder("Units that can be used by the converter: \n"); + var res = Units.GroupBy(x => x.UnitType); + foreach (var group in res) + { + sb.AppendLine($"{group.Key}: ```xl"); + sb.AppendLine(string.Join(",", group.Select(x => x.Triggers.FirstOrDefault()).OrderBy(x => x))); + sb.AppendLine("```"); + } + await msg.ReplyLong(sb.ToString(), breakOn: new[] { "```xl\n", "\n" }); + } + [NadekoCommand, Usage, Description, Aliases] + public async Task Convert(IUserMessage msg, string origin, string target, decimal value) + { + var originUnit = Units.Find(x => x.Triggers.Select(y => y.ToLowerInvariant()).Contains(origin.ToLowerInvariant())); + var targetUnit = Units.Find(x => x.Triggers.Select(y => y.ToLowerInvariant()).Contains(target.ToLowerInvariant())); + if (originUnit == null || targetUnit == null) + { + await msg.Reply(string.Format("Cannot convert {0} to {1}: units not found", origin, target)); + return; + } + if (originUnit.UnitType != targetUnit.UnitType) + { + await msg.Reply(string.Format("Cannot convert {0} to {1}: types of unit are not equal", originUnit.Triggers.First(), targetUnit.Triggers.First())); + return; + } + decimal res; + if (originUnit.Triggers == targetUnit.Triggers) res = value; + else if (originUnit.UnitType == "temperature") + { + //don't really care too much about efficiency, so just convert to Kelvin, then to target + switch (originUnit.Triggers.First().ToUpperInvariant()) + { + case "C": + res = value + 273.15m; //celcius! + break; + case "F": + res = (value + 459.67m) * (5 / 9); + break; + default: + res = value; + break; + } + //from Kelvin to target + switch (targetUnit.Triggers.First()) + { + case "C": + res = value - 273.15m; //celcius! + break; + case "F": + res = res * (9 / 5) - 458.67m; + break; + default: + break; + } + } + else + { + if (originUnit.UnitType == "currency") + { + res = (value * targetUnit.Modifier) / originUnit.Modifier; + } + else + res = (value * originUnit.Modifier) / targetUnit.Modifier; + } + res = Math.Round(res, 4); + + await msg.Reply(string.Format("{0} {1} is equal to {2} {3}", value, (originUnit.Triggers.First() + "s").SnPl(value.IsInteger() ? (int)value : 2), res, (targetUnit.Triggers.First() + "s").SnPl(res.IsInteger() ? (int)res : 2))); + } + } + + public static async Task UpdateCurrencyRates() + { + using (var http = new HttpClient()) + { + var res = await http.GetStringAsync("http://api.fixer.io/latest").ConfigureAwait(false); + return JsonConvert.DeserializeObject(res); + } + } + } +} \ No newline at end of file diff --git a/src/NadekoBot/Modules/Utility/Models/MeasurementUnit.cs b/src/NadekoBot/Modules/Utility/Models/MeasurementUnit.cs new file mode 100644 index 00000000..017ea8b4 --- /dev/null +++ b/src/NadekoBot/Modules/Utility/Models/MeasurementUnit.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; + +namespace NadekoBot.Modules.Utility.Commands.Models +{ + public class MeasurementUnit + { + public List Triggers { get; set; } + public string UnitType { get; set; } + public decimal Modifier { get; set; } + } +} diff --git a/src/NadekoBot/Modules/Utility/Models/Rates.cs b/src/NadekoBot/Modules/Utility/Models/Rates.cs new file mode 100644 index 00000000..b460a3c5 --- /dev/null +++ b/src/NadekoBot/Modules/Utility/Models/Rates.cs @@ -0,0 +1,14 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; + +namespace NadekoBot.Modules.Utility.Commands.Models +{ + 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/Resources/CommandStrings.Designer.cs b/src/NadekoBot/Resources/CommandStrings.Designer.cs index 7e59fb43..45b92683 100644 --- a/src/NadekoBot/Resources/CommandStrings.Designer.cs +++ b/src/NadekoBot/Resources/CommandStrings.Designer.cs @@ -1122,7 +1122,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Toggles automatic deleting of invites posted in the channel. Does not negate the .srvrfilterinv enabled setting.. + /// Looks up a localized string similar to Toggles automatic deleting of invites posted in the channel. Does not negate the .srvrfilterinv enabled setting. Does not affect Bot Owner.. /// public static string chnlfilterinv_desc { get { @@ -1149,7 +1149,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Toggles automatic deleting of messages containing banned words on the channel. Does not negate the .srvrfilterwords enabled setting.. + /// Looks up a localized string similar to Toggles automatic deleting of messages containing banned words on the channel. Does not negate the .srvrfilterwords enabled setting. Does not affect bot owner.. /// public static string chnlfilterwords_desc { get { @@ -2310,7 +2310,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Adds or removes (if it exists) a word from the list of filtered words.. + /// Looks up a localized string similar to Adds or removes (if it exists) a word from the list of filtered words. Use` ;sfw` or `;cfw` to toggle filtering.. /// public static string filterword_desc { get { @@ -6387,7 +6387,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Toggles automatic deleting of invites posted in the server.. + /// Looks up a localized string similar to Toggles automatic deleting of invites posted in the server. Does not affect Bot Owner.. /// public static string srvrfilterinv_desc { get { @@ -6414,7 +6414,7 @@ namespace NadekoBot.Resources { } /// - /// Looks up a localized string similar to Toggles automatic deleting of messages containing forbidden words on the server.. + /// Looks up a localized string similar to Toggles automatic deleting of messages containing forbidden words on the server. Does not affect Bot Owner.. /// public static string srvrfilterwords_desc { get { diff --git a/src/NadekoBot/Resources/CommandStrings.resx b/src/NadekoBot/Resources/CommandStrings.resx index 730b3399..8af562f3 100644 --- a/src/NadekoBot/Resources/CommandStrings.resx +++ b/src/NadekoBot/Resources/CommandStrings.resx @@ -958,7 +958,7 @@ chnlfilterinv cfi - Toggles automatic deleting of invites posted in the channel. Does not negate the .srvrfilterinv enabled setting. + Toggles automatic deleting of invites posted in the channel. Does not negate the .srvrfilterinv enabled setting. Does not affect Bot Owner. `;cfi` @@ -967,7 +967,7 @@ srvrfilterinv sfi - Toggles automatic deleting of invites posted in the server. + Toggles automatic deleting of invites posted in the server. Does not affect Bot Owner. `;sfi` @@ -976,7 +976,7 @@ chnlfilterwords cfw - Toggles automatic deleting of messages containing banned words on the channel. Does not negate the .srvrfilterwords enabled setting. + Toggles automatic deleting of messages containing banned words on the channel. Does not negate the .srvrfilterwords enabled setting. Does not affect bot owner. `;cfw` @@ -985,7 +985,7 @@ fw - Adds or removes (if it exists) a word from the list of filtered words. + Adds or removes (if it exists) a word from the list of filtered words. Use` ;sfw` or `;cfw` to toggle filtering. `;fw poop` @@ -1003,7 +1003,7 @@ srvrfilterwords sfw - Toggles automatic deleting of messages containing forbidden words on the server. + Toggles automatic deleting of messages containing forbidden words on the server. Does not affect Bot Owner. `;sfw` From fae2829a688fe08973b6858ed19217496e0f8b62 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Mon, 10 Oct 2016 03:26:51 +0200 Subject: [PATCH 71/74] Fixed convert for temperature --- src/NadekoBot/Modules/Utility/Commands/UnitConversion.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/NadekoBot/Modules/Utility/Commands/UnitConversion.cs b/src/NadekoBot/Modules/Utility/Commands/UnitConversion.cs index 459466bb..ead333ca 100644 --- a/src/NadekoBot/Modules/Utility/Commands/UnitConversion.cs +++ b/src/NadekoBot/Modules/Utility/Commands/UnitConversion.cs @@ -134,7 +134,7 @@ namespace NadekoBot.Modules.Utility res = value + 273.15m; //celcius! break; case "F": - res = (value + 459.67m) * (5 / 9); + res = (value + 459.67m) * (5m / 9m); break; default: res = value; @@ -147,7 +147,7 @@ namespace NadekoBot.Modules.Utility res = value - 273.15m; //celcius! break; case "F": - res = res * (9 / 5) - 458.67m; + res = res * (9m / 5m) - 459.67m; break; default: break; From bd1efc6f75b78b2bd72a8f2d986f5e997ac66526 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Mon, 10 Oct 2016 05:04:50 +0200 Subject: [PATCH 72/74] Custom reaction trigger fix, translate moved to searches module, removed translator module --- src/NadekoBot/Modules/CustomReactions/CustomReactions.cs | 9 ++++++--- .../Commands}/GoogleTranslator.cs | 2 +- .../{Translator => Searches/Commands}/Translator.cs | 9 ++------- 3 files changed, 9 insertions(+), 11 deletions(-) rename src/NadekoBot/Modules/{Translator => Searches/Commands}/GoogleTranslator.cs (99%) rename src/NadekoBot/Modules/{Translator => Searches/Commands}/Translator.cs (86%) diff --git a/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs b/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs index 1df05284..44a14738 100644 --- a/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs +++ b/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs @@ -42,18 +42,19 @@ namespace NadekoBot.Modules.CustomReactions var t = Task.Run(async () => { + var content = umsg.Content.ToLowerInvariant(); HashSet reactions; GuildReactions.TryGetValue(channel.Guild.Id, out reactions); if (reactions != null && reactions.Any()) { - var reaction = reactions.Where(cr => cr.TriggerWithContext(umsg) == umsg.Content).Shuffle().FirstOrDefault(); + var reaction = reactions.Where(cr => cr.TriggerWithContext(umsg) == content).Shuffle().FirstOrDefault(); if (reaction != null) { try { await channel.SendMessageAsync(reaction.ResponseWithContext(umsg)).ConfigureAwait(false); } catch { } return; } } - var greaction = GlobalReactions.Where(cr => cr.TriggerWithContext(umsg) == umsg.Content).Shuffle().FirstOrDefault(); + var greaction = GlobalReactions.Where(cr => cr.TriggerWithContext(umsg) == content).Shuffle().FirstOrDefault(); if (greaction != null) { try { await channel.SendMessageAsync(greaction.ResponseWithContext(umsg)).ConfigureAwait(false); } catch { } @@ -71,6 +72,8 @@ namespace NadekoBot.Modules.CustomReactions if (string.IsNullOrWhiteSpace(message) || string.IsNullOrWhiteSpace(key)) return; + key = key.ToLowerInvariant(); + if ((channel == null && !NadekoBot.Credentials.IsOwner(imsg.Author)) || (channel != null && !((IGuildUser)imsg.Author).GuildPermissions.Administrator)) { try { await imsg.Channel.SendMessageAsync("Insufficient permissions. Requires Bot ownership for global custom reactions, and Administrator for guild custom reactions."); } catch { } @@ -81,7 +84,7 @@ namespace NadekoBot.Modules.CustomReactions { GuildId = channel?.Guild.Id, IsRegex = false, - Trigger = key.ToLowerInvariant(), + Trigger = key, Response = message, }; diff --git a/src/NadekoBot/Modules/Translator/GoogleTranslator.cs b/src/NadekoBot/Modules/Searches/Commands/GoogleTranslator.cs similarity index 99% rename from src/NadekoBot/Modules/Translator/GoogleTranslator.cs rename to src/NadekoBot/Modules/Searches/Commands/GoogleTranslator.cs index 7421db47..769d2a80 100644 --- a/src/NadekoBot/Modules/Translator/GoogleTranslator.cs +++ b/src/NadekoBot/Modules/Searches/Commands/GoogleTranslator.cs @@ -5,7 +5,7 @@ using System.Net; using System.Net.Http; using System.Threading.Tasks; -namespace NadekoBot.Modules.Translator +namespace NadekoBot.Modules.Searches { public class GoogleTranslator { diff --git a/src/NadekoBot/Modules/Translator/Translator.cs b/src/NadekoBot/Modules/Searches/Commands/Translator.cs similarity index 86% rename from src/NadekoBot/Modules/Translator/Translator.cs rename to src/NadekoBot/Modules/Searches/Commands/Translator.cs index d13cdb54..07d36f91 100644 --- a/src/NadekoBot/Modules/Translator/Translator.cs +++ b/src/NadekoBot/Modules/Searches/Commands/Translator.cs @@ -7,15 +7,10 @@ using System.Threading.Tasks; using NadekoBot.Services; using Discord.WebSocket; -namespace NadekoBot.Modules.Translator +namespace NadekoBot.Modules.Searches { - [NadekoModule("Translator", "~")] - public class Translator : DiscordModule + public partial class Searches { - public Translator(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client) - { - } - [NadekoCommand, Usage, Description, Aliases] [RequireContext(ContextType.Guild)] public async Task Translate(IUserMessage umsg, string langs, [Remainder] string text = null) From aa96ed884ebf5c5ed4621843da77a45f87ea2c48 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Mon, 10 Oct 2016 05:22:41 +0200 Subject: [PATCH 73/74] dcr no longer requires a bot restart --- src/NadekoBot/Modules/CustomReactions/CustomReactions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs b/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs index 44a14738..7d1b2673 100644 --- a/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs +++ b/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs @@ -150,7 +150,7 @@ namespace NadekoBot.Modules.CustomReactions if (toDelete.GuildId == null && channel == null) { uow.CustomReactions.Remove(toDelete); - + GlobalReactions.RemoveWhere(cr => cr.Id == toDelete.Id); success = true; } else if (toDelete.GuildId != null && channel?.Guild.Id == toDelete.GuildId) From e60034728c036a8ae3d0af12f1b30e18aa2bc7ce Mon Sep 17 00:00:00 2001 From: Kwoth Date: Mon, 10 Oct 2016 06:12:22 +0200 Subject: [PATCH 74/74] Replaced all hashsets which are used concurrently to Concurrent hashsets, some slight db tweaks --- .../DataStructures/ConcurrentHashSet.cs | 761 ++++++++++++++++++ .../DataStructures/PlatformHelper.cs | 25 + .../Commands/CrossServerTextChannel.cs | 8 +- .../Administration/Commands/Migration.cs | 7 +- .../Commands/SelfAssignedRolesCommand.cs | 3 +- .../CustomReactions/CustomReactions.cs | 23 +- .../Commands/Trivia/TriviaQuestionPool.cs | 5 +- .../Permissions/Commands/BlacklistCommands.cs | 9 +- .../Permissions/Commands/CmdCdsCommands.cs | 16 +- .../Permissions/Commands/FilterCommands.cs | 34 +- .../Searches/Commands/IMDB/ImdbScraper.cs | 5 +- .../Services/Database/Models/BotConfig.cs | 7 +- .../Services/Database/Models/GuildConfig.cs | 9 +- .../Services/Database/Models/LogSetting.cs | 3 +- .../Services/Database/NadekoContext.cs | 6 +- src/NadekoBot/data/typing_articles.json | 361 +++++++++ 16 files changed, 1219 insertions(+), 63 deletions(-) create mode 100644 src/NadekoBot/DataStructures/ConcurrentHashSet.cs create mode 100644 src/NadekoBot/DataStructures/PlatformHelper.cs create mode 100644 src/NadekoBot/data/typing_articles.json diff --git a/src/NadekoBot/DataStructures/ConcurrentHashSet.cs b/src/NadekoBot/DataStructures/ConcurrentHashSet.cs new file mode 100644 index 00000000..b29a8842 --- /dev/null +++ b/src/NadekoBot/DataStructures/ConcurrentHashSet.cs @@ -0,0 +1,761 @@ +// License MIT +// Source: https://github.com/i3arnon/ConcurrentHashSet + +using ConcurrentCollections; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.Threading; + +namespace System.Collections.Concurrent +{ + /// + /// Represents a thread-safe hash-based unique collection. + /// + /// The type of the items in the collection. + /// + /// All public members of are thread-safe and may be used + /// concurrently from multiple threads. + /// + [DebuggerDisplay("Count = {Count}")] + public sealed class ConcurrentHashSet : IReadOnlyCollection, ICollection + { + private const int DefaultCapacity = 31; + private const int MaxLockNumber = 1024; + + private readonly IEqualityComparer _comparer; + private readonly bool _growLockArray; + + private int _budget; + private volatile Tables _tables; + + private static int DefaultConcurrencyLevel => PlatformHelper.ProcessorCount; + + /// + /// Gets the number of items contained in the . + /// + /// The number of items contained in the . + /// Count has snapshot semantics and represents the number of items in the + /// at the moment when Count was accessed. + public int Count { + get { + var count = 0; + var acquiredLocks = 0; + try + { + AcquireAllLocks(ref acquiredLocks); + + for (var i = 0; i < _tables.CountPerLock.Length; i++) + { + count += _tables.CountPerLock[i]; + } + } + finally + { + ReleaseLocks(0, acquiredLocks); + } + + return count; + } + } + + /// + /// Gets a value that indicates whether the is empty. + /// + /// true if the is empty; otherwise, + /// false. + public bool IsEmpty { + get { + var acquiredLocks = 0; + try + { + AcquireAllLocks(ref acquiredLocks); + + for (var i = 0; i < _tables.CountPerLock.Length; i++) + { + if (_tables.CountPerLock[i] != 0) + { + return false; + } + } + } + finally + { + ReleaseLocks(0, acquiredLocks); + } + + return true; + } + } + + /// + /// Initializes a new instance of the + /// class that is empty, has the default concurrency level, has the default initial capacity, and + /// uses the default comparer for the item type. + /// + public ConcurrentHashSet() + : this(DefaultConcurrencyLevel, DefaultCapacity, true, EqualityComparer.Default) + { + } + + /// + /// Initializes a new instance of the + /// class that is empty, has the specified concurrency level and capacity, and uses the default + /// comparer for the item type. + /// + /// The estimated number of threads that will update the + /// concurrently. + /// The initial number of elements that the + /// can contain. + /// is + /// less than 1. + /// is less than + /// 0. + public ConcurrentHashSet(int concurrencyLevel, int capacity) + : this(concurrencyLevel, capacity, false, EqualityComparer.Default) + { + } + + /// + /// Initializes a new instance of the + /// class that contains elements copied from the specified , has the default concurrency + /// level, has the default initial capacity, and uses the default comparer for the item type. + /// + /// The whose elements are copied to + /// the new + /// . + /// is a null reference. + public ConcurrentHashSet(IEnumerable collection) + : this(collection, EqualityComparer.Default) + { + } + + /// + /// Initializes a new instance of the + /// class that is empty, has the specified concurrency level and capacity, and uses the specified + /// . + /// + /// The + /// implementation to use when comparing items. + /// is a null reference. + public ConcurrentHashSet(IEqualityComparer comparer) + : this(DefaultConcurrencyLevel, DefaultCapacity, true, comparer) + { + } + + /// + /// Initializes a new instance of the + /// class that contains elements copied from the specified , has the default concurrency level, has the default + /// initial capacity, and uses the specified + /// . + /// + /// The whose elements are copied to + /// the new + /// . + /// The + /// implementation to use when comparing items. + /// is a null reference + /// (Nothing in Visual Basic). -or- + /// is a null reference (Nothing in Visual Basic). + /// + public ConcurrentHashSet(IEnumerable collection, IEqualityComparer comparer) + : this(comparer) + { + if (collection == null) throw new ArgumentNullException(nameof(collection)); + + InitializeFromCollection(collection); + } + + + /// + /// Initializes a new instance of the + /// class that contains elements copied from the specified , + /// has the specified concurrency level, has the specified initial capacity, and uses the specified + /// . + /// + /// The estimated number of threads that will update the + /// concurrently. + /// The whose elements are copied to the new + /// . + /// The implementation to use + /// when comparing items. + /// + /// is a null reference. + /// -or- + /// is a null reference. + /// + /// + /// is less than 1. + /// + public ConcurrentHashSet(int concurrencyLevel, IEnumerable collection, IEqualityComparer comparer) + : this(concurrencyLevel, DefaultCapacity, false, comparer) + { + if (collection == null) throw new ArgumentNullException(nameof(collection)); + if (comparer == null) throw new ArgumentNullException(nameof(comparer)); + + InitializeFromCollection(collection); + } + + /// + /// Initializes a new instance of the + /// class that is empty, has the specified concurrency level, has the specified initial capacity, and + /// uses the specified . + /// + /// The estimated number of threads that will update the + /// concurrently. + /// The initial number of elements that the + /// can contain. + /// The + /// implementation to use when comparing items. + /// + /// is less than 1. -or- + /// is less than 0. + /// + /// is a null reference. + public ConcurrentHashSet(int concurrencyLevel, int capacity, IEqualityComparer comparer) + : this(concurrencyLevel, capacity, false, comparer) + { + } + + private ConcurrentHashSet(int concurrencyLevel, int capacity, bool growLockArray, IEqualityComparer comparer) + { + if (concurrencyLevel < 1) throw new ArgumentOutOfRangeException(nameof(concurrencyLevel)); + if (capacity < 0) throw new ArgumentOutOfRangeException(nameof(capacity)); + if (comparer == null) throw new ArgumentNullException(nameof(comparer)); + + // The capacity should be at least as large as the concurrency level. Otherwise, we would have locks that don't guard + // any buckets. + if (capacity < concurrencyLevel) + { + capacity = concurrencyLevel; + } + + var locks = new object[concurrencyLevel]; + for (var i = 0; i < locks.Length; i++) + { + locks[i] = new object(); + } + + var countPerLock = new int[locks.Length]; + var buckets = new Node[capacity]; + _tables = new Tables(buckets, locks, countPerLock); + + _growLockArray = growLockArray; + _budget = buckets.Length / locks.Length; + _comparer = comparer; + } + + /// + /// Adds the specified item to the . + /// + /// The item to add. + /// true if the items was added to the + /// successfully; false if it already exists. + /// The + /// contains too many items. + public bool Add(T item) => + AddInternal(item, _comparer.GetHashCode(item), true); + + /// + /// Removes all items from the . + /// + public void Clear() + { + var locksAcquired = 0; + try + { + AcquireAllLocks(ref locksAcquired); + + var newTables = new Tables(new Node[DefaultCapacity], _tables.Locks, new int[_tables.CountPerLock.Length]); + _tables = newTables; + _budget = Math.Max(1, newTables.Buckets.Length / newTables.Locks.Length); + } + finally + { + ReleaseLocks(0, locksAcquired); + } + } + + /// + /// Determines whether the contains the specified + /// item. + /// + /// The item to locate in the . + /// true if the contains the item; otherwise, false. + public bool Contains(T item) + { + var hashcode = _comparer.GetHashCode(item); + + // We must capture the _buckets field in a local variable. It is set to a new table on each table resize. + var tables = _tables; + + var bucketNo = GetBucket(hashcode, tables.Buckets.Length); + + // We can get away w/out a lock here. + // The Volatile.Read ensures that the load of the fields of 'n' doesn't move before the load from buckets[i]. + var current = Volatile.Read(ref tables.Buckets[bucketNo]); + + while (current != null) + { + if (hashcode == current.Hashcode && _comparer.Equals(current.Item, item)) + { + return true; + } + current = current.Next; + } + + return false; + } + + /// + /// Attempts to remove the item from the . + /// + /// The item to remove. + /// true if an item was removed successfully; otherwise, false. + public bool TryRemove(T item) + { + var hashcode = _comparer.GetHashCode(item); + while (true) + { + var tables = _tables; + + int bucketNo, lockNo; + GetBucketAndLockNo(hashcode, out bucketNo, out lockNo, tables.Buckets.Length, tables.Locks.Length); + + lock (tables.Locks[lockNo]) + { + // If the table just got resized, we may not be holding the right lock, and must retry. + // This should be a rare occurrence. + if (tables != _tables) + { + continue; + } + + Node previous = null; + for (var current = tables.Buckets[bucketNo]; current != null; current = current.Next) + { + Debug.Assert((previous == null && current == tables.Buckets[bucketNo]) || previous.Next == current); + + if (hashcode == current.Hashcode && _comparer.Equals(current.Item, item)) + { + if (previous == null) + { + Volatile.Write(ref tables.Buckets[bucketNo], current.Next); + } + else + { + previous.Next = current.Next; + } + + tables.CountPerLock[lockNo]--; + return true; + } + previous = current; + } + } + + return false; + } + } + + IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); + + /// Returns an enumerator that iterates through the . + /// An enumerator for the . + /// + /// The enumerator returned from the collection is safe to use concurrently with + /// reads and writes to the collection, however it does not represent a moment-in-time snapshot + /// of the collection. The contents exposed through the enumerator may contain modifications + /// made to the collection after was called. + /// + public IEnumerator GetEnumerator() + { + var buckets = _tables.Buckets; + + for (var i = 0; i < buckets.Length; i++) + { + // The Volatile.Read ensures that the load of the fields of 'current' doesn't move before the load from buckets[i]. + var current = Volatile.Read(ref buckets[i]); + + while (current != null) + { + yield return current.Item; + current = current.Next; + } + } + } + + void ICollection.Add(T item) => Add(item); + + bool ICollection.IsReadOnly => false; + + void ICollection.CopyTo(T[] array, int arrayIndex) + { + if (array == null) throw new ArgumentNullException(nameof(array)); + if (arrayIndex < 0) throw new ArgumentOutOfRangeException(nameof(arrayIndex)); + + var locksAcquired = 0; + try + { + AcquireAllLocks(ref locksAcquired); + + var count = 0; + + for (var i = 0; i < _tables.Locks.Length && count >= 0; i++) + { + count += _tables.CountPerLock[i]; + } + + if (array.Length - count < arrayIndex || count < 0) //"count" itself or "count + arrayIndex" can overflow + { + throw new ArgumentException("The index is equal to or greater than the length of the array, or the number of elements in the set is greater than the available space from index to the end of the destination array."); + } + + CopyToItems(array, arrayIndex); + } + finally + { + ReleaseLocks(0, locksAcquired); + } + } + + bool ICollection.Remove(T item) => TryRemove(item); + + private void InitializeFromCollection(IEnumerable collection) + { + foreach (var item in collection) + { + AddInternal(item, _comparer.GetHashCode(item), false); + } + + if (_budget == 0) + { + _budget = _tables.Buckets.Length / _tables.Locks.Length; + } + } + + private bool AddInternal(T item, int hashcode, bool acquireLock) + { + while (true) + { + int bucketNo, lockNo; + + var tables = _tables; + GetBucketAndLockNo(hashcode, out bucketNo, out lockNo, tables.Buckets.Length, tables.Locks.Length); + + var resizeDesired = false; + var lockTaken = false; + try + { + if (acquireLock) + Monitor.Enter(tables.Locks[lockNo], ref lockTaken); + + // If the table just got resized, we may not be holding the right lock, and must retry. + // This should be a rare occurrence. + if (tables != _tables) + { + continue; + } + + // Try to find this item in the bucket + Node previous = null; + for (var current = tables.Buckets[bucketNo]; current != null; current = current.Next) + { + Debug.Assert((previous == null && current == tables.Buckets[bucketNo]) || previous.Next == current); + if (hashcode == current.Hashcode && _comparer.Equals(current.Item, item)) + { + return false; + } + previous = current; + } + + // The item was not found in the bucket. Insert the new item. + Volatile.Write(ref tables.Buckets[bucketNo], new Node(item, hashcode, tables.Buckets[bucketNo])); + checked + { + tables.CountPerLock[lockNo]++; + } + + // + // If the number of elements guarded by this lock has exceeded the budget, resize the bucket table. + // It is also possible that GrowTable will increase the budget but won't resize the bucket table. + // That happens if the bucket table is found to be poorly utilized due to a bad hash function. + // + if (tables.CountPerLock[lockNo] > _budget) + { + resizeDesired = true; + } + } + finally + { + if (lockTaken) + Monitor.Exit(tables.Locks[lockNo]); + } + + // + // The fact that we got here means that we just performed an insertion. If necessary, we will grow the table. + // + // Concurrency notes: + // - Notice that we are not holding any locks at when calling GrowTable. This is necessary to prevent deadlocks. + // - As a result, it is possible that GrowTable will be called unnecessarily. But, GrowTable will obtain lock 0 + // and then verify that the table we passed to it as the argument is still the current table. + // + if (resizeDesired) + { + GrowTable(tables); + } + + return true; + } + } + + private static int GetBucket(int hashcode, int bucketCount) + { + var bucketNo = (hashcode & 0x7fffffff) % bucketCount; + Debug.Assert(bucketNo >= 0 && bucketNo < bucketCount); + return bucketNo; + } + + private static void GetBucketAndLockNo(int hashcode, out int bucketNo, out int lockNo, int bucketCount, int lockCount) + { + bucketNo = (hashcode & 0x7fffffff) % bucketCount; + lockNo = bucketNo % lockCount; + + Debug.Assert(bucketNo >= 0 && bucketNo < bucketCount); + Debug.Assert(lockNo >= 0 && lockNo < lockCount); + } + + private void GrowTable(Tables tables) + { + const int maxArrayLength = 0X7FEFFFFF; + var locksAcquired = 0; + try + { + // The thread that first obtains _locks[0] will be the one doing the resize operation + AcquireLocks(0, 1, ref locksAcquired); + + // Make sure nobody resized the table while we were waiting for lock 0: + if (tables != _tables) + { + // We assume that since the table reference is different, it was already resized (or the budget + // was adjusted). If we ever decide to do table shrinking, or replace the table for other reasons, + // we will have to revisit this logic. + return; + } + + // Compute the (approx.) total size. Use an Int64 accumulation variable to avoid an overflow. + long approxCount = 0; + for (var i = 0; i < tables.CountPerLock.Length; i++) + { + approxCount += tables.CountPerLock[i]; + } + + // + // If the bucket array is too empty, double the budget instead of resizing the table + // + if (approxCount < tables.Buckets.Length / 4) + { + _budget = 2 * _budget; + if (_budget < 0) + { + _budget = int.MaxValue; + } + return; + } + + // Compute the new table size. We find the smallest integer larger than twice the previous table size, and not divisible by + // 2,3,5 or 7. We can consider a different table-sizing policy in the future. + var newLength = 0; + var maximizeTableSize = false; + try + { + checked + { + // Double the size of the buckets table and add one, so that we have an odd integer. + newLength = tables.Buckets.Length * 2 + 1; + + // Now, we only need to check odd integers, and find the first that is not divisible + // by 3, 5 or 7. + while (newLength % 3 == 0 || newLength % 5 == 0 || newLength % 7 == 0) + { + newLength += 2; + } + + Debug.Assert(newLength % 2 != 0); + + if (newLength > maxArrayLength) + { + maximizeTableSize = true; + } + } + } + catch (OverflowException) + { + maximizeTableSize = true; + } + + if (maximizeTableSize) + { + newLength = maxArrayLength; + + // We want to make sure that GrowTable will not be called again, since table is at the maximum size. + // To achieve that, we set the budget to int.MaxValue. + // + // (There is one special case that would allow GrowTable() to be called in the future: + // calling Clear() on the ConcurrentHashSet will shrink the table and lower the budget.) + _budget = int.MaxValue; + } + + // Now acquire all other locks for the table + AcquireLocks(1, tables.Locks.Length, ref locksAcquired); + + var newLocks = tables.Locks; + + // Add more locks + if (_growLockArray && tables.Locks.Length < MaxLockNumber) + { + newLocks = new object[tables.Locks.Length * 2]; + Array.Copy(tables.Locks, 0, newLocks, 0, tables.Locks.Length); + for (var i = tables.Locks.Length; i < newLocks.Length; i++) + { + newLocks[i] = new object(); + } + } + + var newBuckets = new Node[newLength]; + var newCountPerLock = new int[newLocks.Length]; + + // Copy all data into a new table, creating new nodes for all elements + for (var i = 0; i < tables.Buckets.Length; i++) + { + var current = tables.Buckets[i]; + while (current != null) + { + var next = current.Next; + int newBucketNo, newLockNo; + GetBucketAndLockNo(current.Hashcode, out newBucketNo, out newLockNo, newBuckets.Length, newLocks.Length); + + newBuckets[newBucketNo] = new Node(current.Item, current.Hashcode, newBuckets[newBucketNo]); + + checked + { + newCountPerLock[newLockNo]++; + } + + current = next; + } + } + + // Adjust the budget + _budget = Math.Max(1, newBuckets.Length / newLocks.Length); + + // Replace tables with the new versions + _tables = new Tables(newBuckets, newLocks, newCountPerLock); + } + finally + { + // Release all locks that we took earlier + ReleaseLocks(0, locksAcquired); + } + } + + private void AcquireAllLocks(ref int locksAcquired) + { + // First, acquire lock 0 + AcquireLocks(0, 1, ref locksAcquired); + + // Now that we have lock 0, the _locks array will not change (i.e., grow), + // and so we can safely read _locks.Length. + AcquireLocks(1, _tables.Locks.Length, ref locksAcquired); + Debug.Assert(locksAcquired == _tables.Locks.Length); + } + + private void AcquireLocks(int fromInclusive, int toExclusive, ref int locksAcquired) + { + Debug.Assert(fromInclusive <= toExclusive); + var locks = _tables.Locks; + + for (var i = fromInclusive; i < toExclusive; i++) + { + var lockTaken = false; + try + { + Monitor.Enter(locks[i], ref lockTaken); + } + finally + { + if (lockTaken) + { + locksAcquired++; + } + } + } + } + + private void ReleaseLocks(int fromInclusive, int toExclusive) + { + Debug.Assert(fromInclusive <= toExclusive); + + for (var i = fromInclusive; i < toExclusive; i++) + { + Monitor.Exit(_tables.Locks[i]); + } + } + + private void CopyToItems(T[] array, int index) + { + var buckets = _tables.Buckets; + for (var i = 0; i < buckets.Length; i++) + { + for (var current = buckets[i]; current != null; current = current.Next) + { + array[index] = current.Item; + index++; //this should never flow, CopyToItems is only called when there's no overflow risk + } + } + } + + private sealed class Tables + { + public readonly Node[] Buckets; + public readonly object[] Locks; + + public volatile int[] CountPerLock; + + public Tables(Node[] buckets, object[] locks, int[] countPerLock) + { + Buckets = buckets; + Locks = locks; + CountPerLock = countPerLock; + } + } + + private sealed class Node + { + public readonly T Item; + public readonly int Hashcode; + + public volatile Node Next; + + public Node(T item, int hashcode, Node next) + { + Item = item; + Hashcode = hashcode; + Next = next; + } + } + } +} \ No newline at end of file diff --git a/src/NadekoBot/DataStructures/PlatformHelper.cs b/src/NadekoBot/DataStructures/PlatformHelper.cs new file mode 100644 index 00000000..d0b5a4ba --- /dev/null +++ b/src/NadekoBot/DataStructures/PlatformHelper.cs @@ -0,0 +1,25 @@ +using System; + +namespace ConcurrentCollections +{ + internal static class PlatformHelper + { + private const int ProcessorCountRefreshIntervalMs = 30000; + + private static volatile int _processorCount; + private static volatile int _lastProcessorCountRefreshTicks; + + internal static int ProcessorCount { + get { + var now = Environment.TickCount; + if (_processorCount == 0 || (now - _lastProcessorCountRefreshTicks) >= ProcessorCountRefreshIntervalMs) + { + _processorCount = Environment.ProcessorCount; + _lastProcessorCountRefreshTicks = now; + } + + return _processorCount; + } + } + } +} \ No newline at end of file diff --git a/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs b/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs index c1a746d7..b6f3a612 100644 --- a/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs +++ b/src/NadekoBot/Modules/Administration/Commands/CrossServerTextChannel.cs @@ -55,7 +55,7 @@ namespace NadekoBot.Modules.Administration private string GetText(IGuild server, ITextChannel channel, IGuildUser user, IUserMessage message) => $"**{server.Name} | {channel.Name}** `{user.Username}`: " + message.Content; - public static readonly ConcurrentDictionary> Subscribers = new ConcurrentDictionary>(); + public static readonly ConcurrentDictionary> Subscribers = new ConcurrentDictionary>(); private Logger _log { get; } [NadekoCommand, Usage, Description, Aliases] @@ -65,7 +65,7 @@ namespace NadekoBot.Modules.Administration { var channel = (ITextChannel)msg.Channel; var token = new NadekoRandom().Next(); - var set = new HashSet(); + var set = new ConcurrentHashSet(); if (Subscribers.TryAdd(token, set)) { set.Add(channel); @@ -80,7 +80,7 @@ namespace NadekoBot.Modules.Administration { var channel = (ITextChannel)imsg.Channel; - HashSet set; + ConcurrentHashSet set; if (!Subscribers.TryGetValue(token, out set)) return; set.Add(channel); @@ -96,7 +96,7 @@ namespace NadekoBot.Modules.Administration foreach (var subscriber in Subscribers) { - subscriber.Value.Remove(channel); + subscriber.Value.TryRemove(channel); } await channel.SendMessageAsync(":ok:").ConfigureAwait(false); } diff --git a/src/NadekoBot/Modules/Administration/Commands/Migration.cs b/src/NadekoBot/Modules/Administration/Commands/Migration.cs index 4a297e6e..e5f6a7c1 100644 --- a/src/NadekoBot/Modules/Administration/Commands/Migration.cs +++ b/src/NadekoBot/Modules/Administration/Commands/Migration.cs @@ -12,6 +12,7 @@ using NadekoBot.Services.Database.Models; using Newtonsoft.Json; using NLog; using NadekoBot.Modules.Administration.Commands.Migration; +using System.Collections.Concurrent; namespace NadekoBot.Modules.Administration { @@ -99,12 +100,12 @@ namespace NadekoBot.Modules.Administration botConfig.RotatingStatusMessages = messages; //races - var races = new List(); + var races = new HashSet(); oldData.RaceAnimals.ForEach(i => races.Add(new RaceAnimal() { Icon = i, Name = i })); botConfig.RaceAnimals = races; //Prefix - var prefix = new List + var prefix = new HashSet { new ModulePrefix() { @@ -158,7 +159,7 @@ namespace NadekoBot.Modules.Administration botConfig.Blacklist = new HashSet(blacklist); //Eightball - botConfig.EightBallResponses = oldData._8BallResponses.Select(response => new EightBallResponse() {Text = response}).ToList(); + botConfig.EightBallResponses = new HashSet(oldData._8BallResponses.Select(response => new EightBallResponse() {Text = response})); //NOW save it botConfig.MigrationVersion = 1; diff --git a/src/NadekoBot/Modules/Administration/Commands/SelfAssignedRolesCommand.cs b/src/NadekoBot/Modules/Administration/Commands/SelfAssignedRolesCommand.cs index d1a7dca3..4a9c171e 100644 --- a/src/NadekoBot/Modules/Administration/Commands/SelfAssignedRolesCommand.cs +++ b/src/NadekoBot/Modules/Administration/Commands/SelfAssignedRolesCommand.cs @@ -6,6 +6,7 @@ using NadekoBot.Services; using NadekoBot.Services.Database; using NadekoBot.Services.Database.Models; using System; +using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Text; @@ -76,7 +77,7 @@ namespace NadekoBot.Modules.Administration { var channel = (ITextChannel)umsg.Channel; - var toRemove = new HashSet(); + var toRemove = new ConcurrentHashSet(); var removeMsg = new StringBuilder(); var msg = new StringBuilder(); using (var uow = DbHandler.UnitOfWork()) diff --git a/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs b/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs index 7d1b2673..833b7881 100644 --- a/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs +++ b/src/NadekoBot/Modules/CustomReactions/CustomReactions.cs @@ -17,15 +17,15 @@ namespace NadekoBot.Modules.CustomReactions [NadekoModule("CustomReactions",".")] public class CustomReactions : DiscordModule { - public static HashSet GlobalReactions { get; } = new HashSet(); - public static ConcurrentDictionary> GuildReactions { get; } = new ConcurrentDictionary>(); + public static ConcurrentHashSet GlobalReactions { get; } = new ConcurrentHashSet(); + public static ConcurrentDictionary> GuildReactions { get; } = new ConcurrentDictionary>(); static CustomReactions() { using (var uow = DbHandler.UnitOfWork()) { var items = uow.CustomReactions.GetAll(); - GuildReactions = new ConcurrentDictionary>(items.Where(g => g.GuildId != null).GroupBy(k => k.GuildId.Value).ToDictionary(g => g.Key, g => new HashSet(g))); - GlobalReactions = new HashSet(items.Where(g => g.GuildId == null)); + GuildReactions = new ConcurrentDictionary>(items.Where(g => g.GuildId != null).GroupBy(k => k.GuildId.Value).ToDictionary(g => g.Key, g => new ConcurrentHashSet(g))); + GlobalReactions = new ConcurrentHashSet(items.Where(g => g.GuildId == null)); } } public CustomReactions(ILocalization loc, CommandService cmds, ShardedDiscordClient client) : base(loc, cmds, client) @@ -43,7 +43,7 @@ namespace NadekoBot.Modules.CustomReactions var t = Task.Run(async () => { var content = umsg.Content.ToLowerInvariant(); - HashSet reactions; + ConcurrentHashSet reactions; GuildReactions.TryGetValue(channel.Guild.Id, out reactions); if (reactions != null && reactions.Any()) { @@ -101,7 +101,7 @@ namespace NadekoBot.Modules.CustomReactions } else { - var reactions = GuildReactions.GetOrAdd(channel.Guild.Id, new HashSet()); + var reactions = GuildReactions.GetOrAdd(channel.Guild.Id, new ConcurrentHashSet()); reactions.Add(cr); } @@ -115,11 +115,11 @@ namespace NadekoBot.Modules.CustomReactions if (page < 1 || page > 1000) return; - HashSet customReactions; + ConcurrentHashSet customReactions; if (channel == null) customReactions = GlobalReactions; else - customReactions = GuildReactions.GetOrAdd(channel.Guild.Id, new HashSet()); + customReactions = GuildReactions.GetOrAdd(channel.Guild.Id, new ConcurrentHashSet()); if (customReactions == null || !customReactions.Any()) await imsg.Channel.SendMessageAsync("`No custom reactions found`").ConfigureAwait(false); @@ -150,13 +150,16 @@ namespace NadekoBot.Modules.CustomReactions if (toDelete.GuildId == null && channel == null) { uow.CustomReactions.Remove(toDelete); - GlobalReactions.RemoveWhere(cr => cr.Id == toDelete.Id); + var toRemove = GlobalReactions.FirstOrDefault(cr => cr.Id == toDelete.Id); + GlobalReactions.TryRemove(toRemove); success = true; } else if (toDelete.GuildId != null && channel?.Guild.Id == toDelete.GuildId) { uow.CustomReactions.Remove(toDelete); - GuildReactions.GetOrAdd(channel.Guild.Id, new HashSet()).RemoveWhere(cr => cr.Id == toDelete.Id); + var crs = GuildReactions.GetOrAdd(channel.Guild.Id, new ConcurrentHashSet()); + var toRemove = crs.FirstOrDefault(cr => cr.Id == toDelete.Id); + success = true; } if(success) diff --git a/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaQuestionPool.cs b/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaQuestionPool.cs index deb4e7b1..3afa8a9c 100644 --- a/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaQuestionPool.cs +++ b/src/NadekoBot/Modules/Games/Commands/Trivia/TriviaQuestionPool.cs @@ -2,6 +2,7 @@ using NadekoBot.Services; using Newtonsoft.Json.Linq; using System; +using System.Collections.Concurrent; using System.Collections.Generic; using System.IO; using System.Linq; @@ -11,7 +12,7 @@ namespace NadekoBot.Modules.Games.Trivia public class TriviaQuestionPool { public static TriviaQuestionPool Instance { get; } = new TriviaQuestionPool(); - public HashSet pool = new HashSet(); + public ConcurrentHashSet pool = new ConcurrentHashSet(); private Random rng { get; } = new NadekoRandom(); @@ -39,7 +40,7 @@ namespace NadekoBot.Modules.Games.Trivia pool.Add(tq); } var r = new NadekoRandom(); - pool = new HashSet(pool.OrderBy(x => r.Next())); + pool = new ConcurrentHashSet(pool.OrderBy(x => r.Next())); } } } diff --git a/src/NadekoBot/Modules/Permissions/Commands/BlacklistCommands.cs b/src/NadekoBot/Modules/Permissions/Commands/BlacklistCommands.cs index a53964ed..6f5b3862 100644 --- a/src/NadekoBot/Modules/Permissions/Commands/BlacklistCommands.cs +++ b/src/NadekoBot/Modules/Permissions/Commands/BlacklistCommands.cs @@ -6,6 +6,7 @@ using NadekoBot.Services; using NadekoBot.Services.Database; using NadekoBot.Services.Database.Models; using System; +using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Text; @@ -25,13 +26,13 @@ namespace NadekoBot.Modules.Permissions [Group] public class BlacklistCommands { - public static HashSet BlacklistedItems { get; set; } = new HashSet(); + public static ConcurrentHashSet BlacklistedItems { get; set; } = new ConcurrentHashSet(); static BlacklistCommands() { using (var uow = DbHandler.UnitOfWork()) { - BlacklistedItems = uow.BotConfig.GetOrCreate().Blacklist; + BlacklistedItems = new ConcurrentHashSet(uow.BotConfig.GetOrCreate().Blacklist); } } @@ -75,7 +76,9 @@ namespace NadekoBot.Modules.Permissions else { uow.BotConfig.GetOrCreate().Blacklist.RemoveWhere(bi => bi.ItemId == id && bi.Type == type); - BlacklistedItems.RemoveWhere(bi => bi.ItemId == id && bi.Type == type); + var toRemove = BlacklistedItems.FirstOrDefault(bi => bi.ItemId == id && bi.Type == type); + if (toRemove != null) + BlacklistedItems.TryRemove(toRemove); } await uow.CompleteAsync().ConfigureAwait(false); } diff --git a/src/NadekoBot/Modules/Permissions/Commands/CmdCdsCommands.cs b/src/NadekoBot/Modules/Permissions/Commands/CmdCdsCommands.cs index d1f8ea51..7deaaa1e 100644 --- a/src/NadekoBot/Modules/Permissions/Commands/CmdCdsCommands.cs +++ b/src/NadekoBot/Modules/Permissions/Commands/CmdCdsCommands.cs @@ -26,15 +26,15 @@ namespace NadekoBot.Modules.Permissions [Group] public class CmdCdsCommands { - public static ConcurrentDictionary> commandCooldowns { get; } - private static ConcurrentDictionary> activeCooldowns = new ConcurrentDictionary>(); + public static ConcurrentDictionary> commandCooldowns { get; } + private static ConcurrentDictionary> activeCooldowns = new ConcurrentDictionary>(); static CmdCdsCommands() { using (var uow = DbHandler.UnitOfWork()) { var configs = uow.GuildConfigs.GetAll(); - commandCooldowns = new ConcurrentDictionary>(configs.ToDictionary(k => k.GuildId, v => v.CommandCooldowns)); + commandCooldowns = new ConcurrentDictionary>(configs.ToDictionary(k => k.GuildId, v => v.CommandCooldowns)); } } [NadekoCommand, Usage, Description, Aliases] @@ -51,7 +51,7 @@ namespace NadekoBot.Modules.Permissions using (var uow = DbHandler.UnitOfWork()) { var config = uow.GuildConfigs.For(channel.Guild.Id); - var localSet = commandCooldowns.GetOrAdd(channel.Guild.Id, new HashSet()); + var localSet = commandCooldowns.GetOrAdd(channel.Guild.Id, new ConcurrentHashSet()); config.CommandCooldowns.RemoveWhere(cc => cc.CommandName == command.Text.ToLowerInvariant()); localSet.RemoveWhere(cc => cc.CommandName == command.Text.ToLowerInvariant()); @@ -69,7 +69,7 @@ namespace NadekoBot.Modules.Permissions } if (secs == 0) { - var activeCds = activeCooldowns.GetOrAdd(channel.Guild.Id, new HashSet()); + var activeCds = activeCooldowns.GetOrAdd(channel.Guild.Id, new ConcurrentHashSet()); activeCds.RemoveWhere(ac => ac.Command == command.Text.ToLowerInvariant()); await channel.SendMessageAsync($"Command **{command}** has no coooldown now and all existing cooldowns have been cleared.").ConfigureAwait(false); } @@ -82,7 +82,7 @@ namespace NadekoBot.Modules.Permissions public async Task AllCmdCooldowns(IUserMessage imsg) { var channel = (ITextChannel)imsg.Channel; - var localSet = commandCooldowns.GetOrAdd(channel.Guild.Id, new HashSet()); + var localSet = commandCooldowns.GetOrAdd(channel.Guild.Id, new ConcurrentHashSet()); if (!localSet.Any()) await channel.SendMessageAsync("`No command cooldowns set.`").ConfigureAwait(false); @@ -94,11 +94,11 @@ namespace NadekoBot.Modules.Permissions { if (guild == null) return false; - var cmdcds = CmdCdsCommands.commandCooldowns.GetOrAdd(guild.Id, new HashSet()); + var cmdcds = CmdCdsCommands.commandCooldowns.GetOrAdd(guild.Id, new ConcurrentHashSet()); CommandCooldown cdRule; if ((cdRule = cmdcds.FirstOrDefault(cc => cc.CommandName == cmd.Text.ToLowerInvariant())) != null) { - var activeCdsForGuild = activeCooldowns.GetOrAdd(guild.Id, new HashSet()); + var activeCdsForGuild = activeCooldowns.GetOrAdd(guild.Id, new ConcurrentHashSet()); if (activeCdsForGuild.FirstOrDefault(ac => ac.UserId == user.Id && ac.Command == cmd.Text.ToLowerInvariant()) != null) { return true; diff --git a/src/NadekoBot/Modules/Permissions/Commands/FilterCommands.cs b/src/NadekoBot/Modules/Permissions/Commands/FilterCommands.cs index 96a4ff3f..b5eaa5df 100644 --- a/src/NadekoBot/Modules/Permissions/Commands/FilterCommands.cs +++ b/src/NadekoBot/Modules/Permissions/Commands/FilterCommands.cs @@ -17,26 +17,26 @@ namespace NadekoBot.Modules.Permissions [Group] public class FilterCommands { - public static HashSet InviteFilteringChannels { get; set; } - public static HashSet InviteFilteringServers { get; set; } + public static ConcurrentHashSet InviteFilteringChannels { get; set; } + public static ConcurrentHashSet InviteFilteringServers { get; set; } //serverid, filteredwords - private static ConcurrentDictionary> ServerFilteredWords { get; set; } + private static ConcurrentDictionary> ServerFilteredWords { get; set; } - public static HashSet WordFilteringChannels { get; set; } - public static HashSet WordFilteringServers { get; set; } + public static ConcurrentHashSet WordFilteringChannels { get; set; } + public static ConcurrentHashSet WordFilteringServers { get; set; } - public static HashSet FilteredWordsForChannel(ulong channelId, ulong guildId) + public static ConcurrentHashSet FilteredWordsForChannel(ulong channelId, ulong guildId) { - HashSet words = new HashSet(); + ConcurrentHashSet words = new ConcurrentHashSet(); if(WordFilteringChannels.Contains(channelId)) ServerFilteredWords.TryGetValue(guildId, out words); return words; } - public static HashSet FilteredWordsForServer(ulong guildId) + public static ConcurrentHashSet FilteredWordsForServer(ulong guildId) { - var words = new HashSet(); + var words = new ConcurrentHashSet(); if(WordFilteringServers.Contains(guildId)) ServerFilteredWords.TryGetValue(guildId, out words); return words; @@ -48,17 +48,17 @@ namespace NadekoBot.Modules.Permissions { var guildConfigs = uow.GuildConfigs.GetAll(); - InviteFilteringServers = new HashSet(guildConfigs.Where(gc => gc.FilterInvites).Select(gc => gc.GuildId)); - InviteFilteringChannels = new HashSet(guildConfigs.SelectMany(gc => gc.FilterInvitesChannelIds.Select(fci => fci.ChannelId))); + InviteFilteringServers = new ConcurrentHashSet(guildConfigs.Where(gc => gc.FilterInvites).Select(gc => gc.GuildId)); + InviteFilteringChannels = new ConcurrentHashSet(guildConfigs.SelectMany(gc => gc.FilterInvitesChannelIds.Select(fci => fci.ChannelId))); - var dict = guildConfigs.ToDictionary(gc => gc.GuildId, gc => new HashSet(gc.FilteredWords.Select(fw => fw.Word))); + var dict = guildConfigs.ToDictionary(gc => gc.GuildId, gc => new ConcurrentHashSet(gc.FilteredWords.Select(fw => fw.Word))); - ServerFilteredWords = new ConcurrentDictionary>(dict); + ServerFilteredWords = new ConcurrentDictionary>(dict); var serverFiltering = guildConfigs.Where(gc => gc.FilterWords); - WordFilteringServers = new HashSet(serverFiltering.Select(gc => gc.GuildId)); + WordFilteringServers = new ConcurrentHashSet(serverFiltering.Select(gc => gc.GuildId)); - WordFilteringChannels = new HashSet(guildConfigs.SelectMany(gc => gc.FilterWordsChannelIds.Select(fwci => fwci.ChannelId))); + WordFilteringChannels = new ConcurrentHashSet(guildConfigs.SelectMany(gc => gc.FilterWordsChannelIds.Select(fwci => fwci.ChannelId))); } } @@ -205,7 +205,7 @@ namespace NadekoBot.Modules.Permissions await uow.CompleteAsync().ConfigureAwait(false); } - var filteredWords = ServerFilteredWords.GetOrAdd(channel.Guild.Id, new HashSet()); + var filteredWords = ServerFilteredWords.GetOrAdd(channel.Guild.Id, new ConcurrentHashSet()); if (removed == 0) { @@ -227,7 +227,7 @@ namespace NadekoBot.Modules.Permissions { var channel = (ITextChannel)imsg.Channel; - HashSet filteredWords; + ConcurrentHashSet filteredWords; ServerFilteredWords.TryGetValue(channel.Guild.Id, out filteredWords); await channel.SendMessageAsync($"`List of banned words:`\n" + string.Join(",\n", filteredWords)) diff --git a/src/NadekoBot/Modules/Searches/Commands/IMDB/ImdbScraper.cs b/src/NadekoBot/Modules/Searches/Commands/IMDB/ImdbScraper.cs index fc8c7ec8..32f2c34f 100644 --- a/src/NadekoBot/Modules/Searches/Commands/IMDB/ImdbScraper.cs +++ b/src/NadekoBot/Modules/Searches/Commands/IMDB/ImdbScraper.cs @@ -140,10 +140,7 @@ namespace NadekoBot.Modules.Searches.IMDB List list = new List(); string recUrl = "http://www.imdb.com/widget/recommendations/_ajax/get_more_recs?specs=p13nsims%3A" + mov.Id; string json = await GetUrlDataAsync(recUrl); - list = MatchAll(@"title=\\""(.*?)\\""", json); - HashSet set = new HashSet(); - foreach (String rec in list) set.Add(rec); - return new List(set.ToList()); + return MatchAll(@"title=\\""(.*?)\\""", json); } /*******************************[ Helper Methods ]********************************/ //Match single instance diff --git a/src/NadekoBot/Services/Database/Models/BotConfig.cs b/src/NadekoBot/Services/Database/Models/BotConfig.cs index 2ff3ba52..39bb8e38 100644 --- a/src/NadekoBot/Services/Database/Models/BotConfig.cs +++ b/src/NadekoBot/Services/Database/Models/BotConfig.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Concurrent; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations.Schema; @@ -19,7 +20,7 @@ namespace NadekoBot.Services.Database.Models public float CurrencyGenerationChance { get; set; } = 0.02f; public int CurrencyGenerationCooldown { get; set; } = 10; - public List ModulePrefixes { get; set; } = new List(); + public HashSet ModulePrefixes { get; set; } = new HashSet(); public List RotatingStatusMessages { get; set; } = new List(); @@ -31,8 +32,8 @@ namespace NadekoBot.Services.Database.Models public string CurrencyName { get; set; } = "Nadeko Flower"; public string CurrencyPluralName { get; set; } = "Nadeko Flowers"; - public List EightBallResponses { get; set; } = new List(); - public List RaceAnimals { get; set; } = new List(); + public HashSet EightBallResponses { get; set; } = new HashSet(); + public HashSet RaceAnimals { get; set; } = new HashSet(); public string DMHelpString { get; set; } = "Type `-h` for help."; public string HelpString { get; set; } = @"To add me to your server, use this link -> diff --git a/src/NadekoBot/Services/Database/Models/GuildConfig.cs b/src/NadekoBot/Services/Database/Models/GuildConfig.cs index 7084671d..cc0c87ee 100644 --- a/src/NadekoBot/Services/Database/Models/GuildConfig.cs +++ b/src/NadekoBot/Services/Database/Models/GuildConfig.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Text; @@ -37,7 +38,7 @@ namespace NadekoBot.Services.Database.Models public bool VoicePlusTextEnabled { get; set; } //stream notifications - public List FollowedStreams { get; set; } = new List(); + public HashSet FollowedStreams { get; set; } = new HashSet(); //currencyGeneration public ulong? GenerateCurrencyChannelId { get; set; } @@ -51,11 +52,11 @@ namespace NadekoBot.Services.Database.Models //filtering public bool FilterInvites { get; set; } - public HashSet FilterInvitesChannelIds { get; set; } + public HashSet FilterInvitesChannelIds { get; set; } = new HashSet(); public bool FilterWords { get; set; } - public HashSet FilteredWords { get; set; } - public HashSet FilterWordsChannelIds { get; set; } + public HashSet FilteredWords { get; set; } = new HashSet(); + public HashSet FilterWordsChannelIds { get; set; } = new HashSet(); } public class FilterChannelId :DbEntity diff --git a/src/NadekoBot/Services/Database/Models/LogSetting.cs b/src/NadekoBot/Services/Database/Models/LogSetting.cs index 1aeb1dfa..02a97858 100644 --- a/src/NadekoBot/Services/Database/Models/LogSetting.cs +++ b/src/NadekoBot/Services/Database/Models/LogSetting.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Text; @@ -10,7 +11,7 @@ namespace NadekoBot.Services.Database.Models { public bool IsLogging { get; set; } public ulong ChannelId { get; set; } - public HashSet IgnoredChannels { get; set; } + public ConcurrentHashSet IgnoredChannels { get; set; } public bool MessageUpdated { get; set; } = true; public bool MessageDeleted { get; set; } = true; diff --git a/src/NadekoBot/Services/Database/NadekoContext.cs b/src/NadekoBot/Services/Database/NadekoContext.cs index 243582d7..83fc449e 100644 --- a/src/NadekoBot/Services/Database/NadekoContext.cs +++ b/src/NadekoBot/Services/Database/NadekoContext.cs @@ -47,7 +47,7 @@ namespace NadekoBot.Services.Database { var bc = new BotConfig(); - bc.ModulePrefixes.AddRange(new HashSet() + bc.ModulePrefixes.AddRange(new ConcurrentHashSet() { new ModulePrefix() { ModuleName = "Administration", Prefix = "." }, new ModulePrefix() { ModuleName = "Searches", Prefix = "~" }, @@ -64,7 +64,7 @@ namespace NadekoBot.Services.Database new ModulePrefix() { ModuleName = "Utility", Prefix = "." }, new ModulePrefix() { ModuleName = "CustomReactions", Prefix = "." } }); - bc.RaceAnimals.AddRange(new HashSet + bc.RaceAnimals.AddRange(new ConcurrentHashSet { new RaceAnimal { Icon = "🐼", Name = "Panda" }, new RaceAnimal { Icon = "🐻", Name = "Bear" }, @@ -75,7 +75,7 @@ namespace NadekoBot.Services.Database new RaceAnimal { Icon = "🦀", Name = "Crab" }, new RaceAnimal { Icon = "🦄", Name = "Unicorn" } }); - bc.EightBallResponses.AddRange(new HashSet + bc.EightBallResponses.AddRange(new ConcurrentHashSet { new EightBallResponse() { Text = "Most definitely yes" }, new EightBallResponse() { Text = "For sure" }, diff --git a/src/NadekoBot/data/typing_articles.json b/src/NadekoBot/data/typing_articles.json new file mode 100644 index 00000000..9cdf745b --- /dev/null +++ b/src/NadekoBot/data/typing_articles.json @@ -0,0 +1,361 @@ +[ + { + "Title":"The Gender of Psychology", + "Description":"This book addresses the diversity of psychological knowledge and practice through the lens of gender." + }, + { + "Title":"Unto Others: The Evolution and Psychology of Unselfish", + "Description":"In Unto Others philosopher Elliott Sober and biologist David Sloan Wilson demonstrate once and for all that unselfish behavior is in fact an important feature of both biological and human nature." + }, + { + "Title":"Forensic and Legal Psychology", + "Description":"Using research in clinical, cognitive, developmental, and social psychology, Forensic and Legal Psychology shows how psychological science can enhance the gathering and presentation of evidence, improve legal decision-making, prevent crime," + }, + { + "Title":"International Handbook of Psychology in Education", + "Description":"Suitable for researchers, practitioners and advisers working in the fields of psychology and education, this title presents an overview of the research within the domain of psychology of education." + }, + { + "Title":"Handbook of Personality Psychology", + "Description":"This comprehensive reference work on personality psychology discusses the development and measurement of personality, biological and social determinants, dynamic personality processes, the personality's relation to the self, and personality" + }, + { + "Title":"Dictionary of Theories, Laws, and Concepts in Psychology", + "Description":"A fully cross-referenced and source-referenced dictionary which gives definitions of psychological terms as well as the history, critique, and relevant references for the terms." + }, + { + "Title":"Essays on Plato's Psychology", + "Description":"With a comprehensive introduction to the major issues of Plato's psychology and an up-to-date bibliography of work on the relevant issues, this much-needed text makes the study of Plato's psychology accessible to scholars in ancient Greek" + }, + { + "Title":"Psychology Statistics For Dummies", + "Description":"As an alternative to typical, lead-heavy statistics texts or supplements to assigned course reading, this is one book psychology students won't want to be without." + }, + { + "Title":"Doing Psychology Experiments", + "Description":"David W. Martin’s unique blend of informality, humor, clear instruction, and solid scholarship make this concise text a popular choice for research methods courses in psychology." + }, + { + "Title":"A Handbook of Research Methods for Clinical and Health", + "Description":"For both undergraduate and postgraduate students, the book will be essential in making them aware of the full range of techniques available to them, helping them to design scientifically rigorous experiments." + }, + { + "Title":"A History of Psychology", + "Description":"First published in 2002. Routledge is an imprint of Taylor & Francis, an informa company." + }, + { + "Title":"An Introduction to the Psychology of Religion", + "Description":"The third edition of this successful book, which applies the science of psychology to problems of religion. Dr Thouless explores such questions as: why do people believe? Why are their beliefs often held with irrational strength?" + }, + { + "Title":"Psychology of Champions: How to Win at Sports and Life", + "Description":"In this unprecedented book, two psychologist researchers interview sports legends and super-athletes across sports to explain the thinking that powers stellar performers, pushing them to amazing and historic successes." + }, + { + "Title":"The Psychology of Humor: An Integrative Approach", + "Description":"This is a singly authored monograph that provides in one source, a summary of information researchers might wish to know about research into the psychology of humor." + }, + { + "Title":"Psychology and Deterrence", + "Description":"Now available in paperback, Psychology and Deterrence reveals deterrence strategy's hidden and generally simplistic assumptions about the nature of power and aggression, threat and response, and calculation and behavior in the international" + }, + { + "Title":"Psychology: An International Perspective", + "Description":"Unlike typical American texts, this book provides an international approach to introductory psychology, providing comprehensive and lively coverage of current research from a global perspective, including the UK, Germany, Scandinavia," + }, + { + "Title":"Psychology, Briefer Course", + "Description":"Despite its title, 'Psychology: Briefer Course' is more than a simple condensation of the great 'Principles of Psychology." + }, + { + "Title":"Psychology, Seventh Edition (High School)", + "Description":"This new edition continues the story of psychology with added research and enhanced content from the most dynamic areas of the field—cognition, gender and diversity studies, neuroscience and more, while at the same time using the most" + }, + { + "Title":"Psychology of Russia: Past, Present, Future", + "Description":"This book is for all psychologists and for readers whose interest in Russia exceeds their interest in psychology. Readers of this book will quickly discover a new world of thought." + }, + { + "Title":"Barron's AP Psychology", + "Description":"Provides information on scoring and structure of the test, offers tips on test-taking strategies, and includes practice examinations and subject review." + }, + { + "Title":"Psychology for Inclusive Education: New Directions in", + "Description":"International in focus and at the very cutting edge of the field, this is essential reading for all those interested in the development of inclusive education." + }, + { + "Title":"Applied Psychology: Putting Theory Into Practice", + "Description":"Applied Psychology: Putting theory into practice demonstrates how psychology theory is applied in the real world." + }, + { + "Title":"The Psychology of Science: A Reconnaissance", + "Description":"' This eBook edition contains the complete 168 page text of the original 1966 hardcover edition. Contents: Preface by Abraham H. Maslow Acknowledgments 1. Mechanistic and Humanistic Science 2." + }, + { + "Title":"Filipino American Psychology: A Handbook of Theory,", + "Description":"This book is the first of its kind and aims to promote visibility of this invisible group, so that 2.4 million Filipino Americans will have their voices heard." + }, + { + "Title":"The Psychology of Visual Illusion", + "Description":"Well-rounded perspective on the ambiguities of visual display emphasizes geometrical optical illusions: framing and contrast effects, distortion of angles and direction, and apparent 'movement' of images. 240 drawings. 1972 edition." + }, + { + "Title":"The Psychology of Women", + "Description":"This highly respected text offers students an enjoyable, extraordinarily well-written introduction to the psychology of women with an up-to-date examination of the field and comprehensive coverage of topics." + }, + { + "Title":"Psychology and Race", + "Description":"' Psychology and Race is divided into two major parts. The first half of the book looks at the interracial situation itself." + }, + { + "Title":"Psychology for A-Level", + "Description":"'Precisely targeted at AQA A Level Psychology, specification A. It will also be of interest to those who are new to psychology, and who want to get a flavour of the kinds of topics in which psychologists are interested'--Preface, p. vii." + }, + { + "Title":"Biological Psychology", + "Description":"Updated with new topics, examples, and recent research findings--and supported by new online bio-labs, part of the strongest media package yet--this text speaks to today’s students and instructors." + }, + { + "Title":"Psychology: Concepts & Connections", + "Description":"The theme of this book is applying theories and research to learning and to contemporary life." + }, + { + "Title":"The Psychology of Adoption", + "Description":"In this volume David Brodzinsky, who has conducted one of the nation's largest studies of adopted children, and Marshall Schechter, a noted child psychiatrist who has been involved with adoption related issues for over forty years, have" + }, + { + "Title":"Psychology and Adult Learning", + "Description":"This new edition is thoroughly revised and updated in light of the impact of globalising processes and the application of new information technologies, and the influence of postmodernism on psychology." + }, + { + "Title":"Gestalt Psychology: An Introduction to New Concepts in", + "Description":"The general reader, if he looks to psychology for something more than entertainment or practical advice, will discover in this book a storehouse of searching criticism and brilliant suggestions from the pen of a rare thinker, and one who" + }, + { + "Title":"The Psychology of Goals", + "Description":"Bringing together leading authorities, this tightly edited volume reviews the breadth of current knowledge about goals and their key role in human behavior." + }, + { + "Title":"Metaphors in the History of Psychology", + "Description":"Through the identification of these metaphors, the contributors to this volume have provided a remarkably useful guide to the history, current orientations, and future prospects of modern psychology." + }, + { + "Title":"Abnormal Psychology: An Integrative Approach", + "Description":"ABNORMAL PSYCHOLOGY: AN INTEGRATIVE APPROACH, Seventh Edition, is the perfect book to help you succeed in your abnormal psychology course!" + }, + { + "Title":"Art and Visual Perception: A Psychology of the Creative Eye", + "Description":"Gestalt theory and the psychology of visual perception form the basis for an analysis of art and its basic elements" + }, + { + "Title":"Psychology & Christianity: Five Views", + "Description":"This revised edition of a widely appreciated text now presents five models for understanding the relationship between psychology and Christianity." + }, + { + "Title":"The Psychology of Hope: You Can Get There from Here", + "Description":"Why do some people lead positive, hope-filled lives, while others wallow in pessimism? In The Psychology of Hope, a professor of psychology reveals the specific character traits that produce highly hopeful individuals." + }, + { + "Title":"Perspectives on Psychology", + "Description":"This is a title in the modular 'Principles in Psychology Series', designed for A-level and other introductory courses, aiming to provide students embarking on psychology courses with the necessary background and context." + }, + { + "Title":"Psychology the Easy Way", + "Description":"Material is presented in a way that makes these books ideal as self-teaching guides, but Easy Way titles are also preferred by many teachers as supplements to classroom textbooks." + }, + { + "Title":"Ethics in Psychology: Professional Standards and Cases", + "Description":"In this book, their main intent is to present the full range of contemporary ethical issues in psychology as not only relevant and intriguing, but also as integral and unavoidable aspects of the profession." + }, + { + "Title":"Psychology Gets in the Game: Sport, Mind, and Behavior,", + "Description":"The essays collected in this volume tell the stories not only of these psychologists and their subjects but of the social and academic context that surrounded them, shaping and being shaped by their ideas'--Provided by publisher." + }, + { + "Title":"Psychology for Physical Educators: Student in Focus", + "Description":"This updated edition focuses on attitude and motivation as important aspects of the physical education curriculum, illustrating practical ideas and pedagogical solutions for any PE setting." + }, + { + "Title":"The Psychology of Leadership: New Perspectives and Research", + "Description":"In this book, some of the world's leading scholars come together to describe their thinking and research on the topic of the psychology of leadership." + }, + { + "Title":"The Psychology of Interpersonal Relations", + "Description":"As the title suggests, this book examines the psychology of interpersonal relations. In the context of this book, the term 'interpersonal relations' denotes relations between a few, usually between two, people." + }, + { + "Title":"Applied Psychology", + "Description":"The chapters on Counselling Psychology and Teaching Psychology are available online via the Student Companion Site at: http://tinyurl.com/c3ztvtj The text is written to be accessible to Level 1 Introductory Psychology students, and also to" + }, + { + "Title":"Psychology", + "Description":"An exciting read for anyone interested in psychology and research; because of its comprehensive appendix, glossary, and reference section, this book is a must-have desk reference for psychologists and others in the field." + }, + { + "Title":"The Psychology of Music", + "Description":"On interpreting musical phenomena in terms of mental function" + }, + { + "Title":"Abnormal Psychology", + "Description":"Ron Comer's Abnormal Psychology continues to captivate students with its integrated coverage of theory, diagnosis, and treatment, its inclusive wide-ranging cross-cultural perspective, and its compassionate emphasis on the real impact of" + }, + { + "Title":"The Psychology of Food Choice", + "Description":"This book brings together theory, research and applications from psychology and behavioural sciences applied to dietary behaviour." + }, + { + "Title":"Psychology: brain, behavior, & culture", + "Description":"Rather than present psychological science as a series of facts for memorization, this book takes readers on a psychological journey that uncovers things they didn't know or new ways of thinking about things they did know." + }, + { + "Title":"A Brief History of Psychology", + "Description":"Due to its brevity and engaging style, the book is often used in introductory courses to introduce students to the field. The enormous index and substantial glossary make this volume a useful desk reference for the entire field." + }, + { + "Title":"Psychology AS: The Complete Companion", + "Description":"Presented in double-page spreads this book written to the average AS ability level, provides information on psychology in bite-sized chunks with learning and revision features." + }, + { + "Title":"The Psychology Book: From Shamanism to Cutting-Edge", + "Description":"Lavishly illustrated, this new addition in the Sterling's Milestones series chronicles the history of psychology through 250 groundbreaking events, theories, publications, experiments and discoveries." + }, + { + "Title":"The Psychology Book", + "Description":"All the big ideas, simply explained - an innovative and accessible guide to the study of human nature The Psychology Book clearly explains more than 100 groundbreaking ideas in this fascinating field of science." + }, + { + "Title":"Handbook of Positive Psychology", + "Description":"' The Handbook of Positive Psychology provides a forum for a more positive view of the human condition. In its pages, readers are treated to an analysis of what the foremost experts believe to be the fundamental strengths of humankind." + }, + { + "Title":"Psychology of Sustainable Development", + "Description":"With contributions from an international team of policy shapers and makers, the book will be an important reference for environmental, developmental, social, and organizational psychologists, in addition to other social scientists concerned" + }, + { + "Title":"An Introduction to the History of Psychology", + "Description":"In this Fifth Edition, B.R. Hergenhahn demonstrates that most of the concerns of contemporary psychologists are manifestations of themes that have been part of psychology for hundreds-or even thousands-of years." + }, + { + "Title":"Careers in Psychology: Opportunities in a Changing World", + "Description":"This text addresses the growing need among students and faculty for information about the careers available in psychology at the bachelor’s and graduate level." + }, + { + "Title":"Philosophy of Psychology", + "Description":"This is the story of the clattering of elevated subways and the cacophony of crowded neighborhoods, the heady optimism of industrial progress and the despair of economic recession, and the vibrancy of ethnic cultures and the resilience of" + }, + { + "Title":"The Psychology of Risk Taking Behavior", + "Description":"This book aims to help the reader to understand what motivates people to engage in risk taking behavior, such as participating in traffic, sports, financial investments, or courtship." + }, + { + "Title":"The Nazi Doctors: Medical Killing and the Psychology of", + "Description":"This book explores the psychological conditions that promote the human potential for evil, relating medical killing to broader principles of doubling and genocide" + }, + { + "Title":"The Body and Psychology", + "Description":"The material in this volume was previously published as a Special Issue of th" + }, + { + "Title":"Introduction to Psychology: Gateways to Mind and Behavior", + "Description":"Important Notice: Media content referenced within the product description or the product text may not be available in the ebook version." + }, + { + "Title":"Psychology of Time", + "Description":"Basic Structure The book would contain 14 or 15 chapters of roughly 12 000 words. The exact final number of chapters would depend on further discussions with you about the book's basic structure." + }, + { + "Title":"Handbook of Psychology, Experimental Psychology", + "Description":"Includes established theories and cutting-edge developments. Presents the work of an international group of experts. Presents the nature, origin, implications, and future course of major unresolved issues in the area." + }, + { + "Title":"Study Guide for Psychology, Seventh Edition", + "Description":"This new edition continues the story of psychology with added research and enhanced content from the most dynamic areas of the field--cognition, gender and diversity studies, neuroscience and more, while at the same time using the most" + }, + { + "Title":"Culture and Psychology", + "Description":"In addition, the text encourages students to question traditionally held beliefs and theories as and their relevance to different cultural groups today." + }, + { + "Title":"Exploring the Psychology of Interest", + "Description":"The most comprehensive work of its kind, Exploring the Psychology of Interest will be a valuable resource for student and professional researchers in cognitive, social, and developmental psychology." + }, + { + "Title":"Handbook of Adolescent Psychology", + "Description":"The study of adolescence in the field of psychology has grown tremendously over the last two decades, necessitating a comprehensive and up-to-date revision of this seminal work." + }, + { + "Title":"The Psychology of Diplomacy", + "Description":"World class clinicians, researchers, and activists present the psychological dimensions to diplomacy drawn from examples set in the United Nations, Camp David, the Middle East, Japan, South Africa, and elsewhere." + }, + { + "Title":"The Psychology of Social Class", + "Description":"By addressing differences in social class, the book broadens the perspective of social psychological research to examine such topics as the effect of achievement motivation and other personality variables on social mobility and the effect" + }, + { + "Title":"Applied Psychology: Current Issues and New Directions", + "Description":"Key features of this book: - Consistently pedagogical throughout - chapter summaries, questions for reflection and discussion and annotated further reading in every chapter - Comprehensive coverage - all areas of applied psychology included" + }, + { + "Title":"Popular Psychology: An Encyclopedia", + "Description":"Entries cover a variety of topics in the field of popular psychology, including acupuncture, emotional intelligence, brainwashing, chemical inbalance, and seasonal affective disorder." + }, + { + "Title":"Advanced Psychology: Applications, Issues and Perspectives", + "Description":"The second of two books, Advanced Psychology covers units 4 to 6 for the second year at Advanced Level." + }, + { + "Title":"Mindset: The New Psychology of Success", + "Description":"This is a book that can change your life, as its ideas have changed mine.”—Robert J. Sternberg, IBM Professor of Education and Psychology at Yale University, director of the PACE Center of Yale University, and author of Successful" + }, + { + "Title":"E-Z Psychology", + "Description":"This book covers material as it is taught on a college-101 level." + }, + { + "Title":"Myers' Psychology for AP*", + "Description":"Already The Bestselling AP* Psychology Author, Myers Writes His First Exclusive AP* Psych Text Watch Dave G. Myers introduce this new text here." + }, + { + "Title":"Psychology and Health", + "Description":"Part of a series of textbooks which have been written to support A levels in psychology. The books use real life applications to make theories come alive for students and teach them what they need to know." + }, + { + "Title":"Applying Psychology in Business: The Handbook for Managers", + "Description":"To learn more about Rowman & Littlefield titles please visit us at www.rowmanlittlefield.com." + }, + { + "Title":"Influence", + "Description":"Influence, the classic book on persuasion, explains the psychology of why people say 'yes'—and how to apply these understandings. Dr. Robert Cialdini is the seminal expert in the rapidly expanding field of influence and persuasion." + }, + { + "Title":"Psychology and Policing", + "Description":"The book should draw attention to the often unrecognized and valuable contribution that mainstream psychology can make to the knowledge base underpinning a wide variety of policing practices." + }, + { + "Title":"Applied Psychology: New Frontiers and Rewarding Careers", + "Description":"This book examines how psychological science is, and can be, used to prevent and ameliorate pressing human problems to promote positive social change." + }, + { + "Title":"Psychology: Concepts and Applications", + "Description":"Nevid developed the effective teaching devices in this text based on a comprehensive system derived from research on learning and memory as well as his own research on textbook pedagogy." + }, + { + "Title":"Foundations of Sport and Exercise Psychology, 6E: ", + "Description":"This text offers both students and new practitioners a comprehensive view of sport and exercise psychology, drawing connections between research and practice and capturing the excitement of the world of sport and exercise." + }, + { + "Title":"Biographical Dictionary of Psychology", + "Description":"This Dictionary provides biographical and bibliographical information on over 500 psychologists from all over the world from 1850 to the present day. All branches of psychology and its related disciplines are featured." + }, + { + "Title":"Psychology: A Self-Teaching Guide", + "Description":"Frank Bruno explains all the major psychological theories and terms in this book, covering perception, motivation, thinking, personality, sensation, intelligence, research methods, and much more." + }, + { + "Title":"A Dictionary of Psychology", + "Description":"Entries are extensively cross-referenced for ease of use, and cover word origins and derivations as well as definitions. Over 80 illustrations complement the text." + }, + { + "Title":"An Intellectual History of Psychology", + "Description":"Invaluable as a text for students and as a stimulating and insightful overview for scholars and practicing psychologists, this volume can be read either as a history of psychology in both its philosophical and aspiring scientific periods or" + }] \ No newline at end of file