Permissions should work completley excep moving
This commit is contained in:
parent
edc565797d
commit
94b5c411b9
@ -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<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<int?>("BotConfigId");
|
|
||||||
|
|
||||||
b.Property<ulong>("ItemId");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("BotConfigId");
|
|
||||||
|
|
||||||
b.ToTable("BlacklistItem");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<ulong>("BufferSize");
|
|
||||||
|
|
||||||
b.Property<float>("CurrencyGenerationChance");
|
|
||||||
|
|
||||||
b.Property<int>("CurrencyGenerationCooldown");
|
|
||||||
|
|
||||||
b.Property<string>("CurrencyName");
|
|
||||||
|
|
||||||
b.Property<string>("CurrencyPluralName");
|
|
||||||
|
|
||||||
b.Property<string>("CurrencySign");
|
|
||||||
|
|
||||||
b.Property<bool>("DontJoinServers");
|
|
||||||
|
|
||||||
b.Property<bool>("ForwardMessages");
|
|
||||||
|
|
||||||
b.Property<bool>("ForwardToAllOwners");
|
|
||||||
|
|
||||||
b.Property<string>("RemindMessageFormat");
|
|
||||||
|
|
||||||
b.Property<bool>("RotatingStatuses");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.ToTable("BotConfig");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<bool>("BaseDestroyed");
|
|
||||||
|
|
||||||
b.Property<string>("CallUser");
|
|
||||||
|
|
||||||
b.Property<int>("ClashWarId");
|
|
||||||
|
|
||||||
b.Property<int>("Stars");
|
|
||||||
|
|
||||||
b.Property<DateTime>("TimeAdded");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("ClashWarId");
|
|
||||||
|
|
||||||
b.ToTable("ClashCallers");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<ulong>("ChannelId");
|
|
||||||
|
|
||||||
b.Property<string>("EnemyClan");
|
|
||||||
|
|
||||||
b.Property<ulong>("GuildId");
|
|
||||||
|
|
||||||
b.Property<int>("Size");
|
|
||||||
|
|
||||||
b.Property<DateTime>("StartedAt");
|
|
||||||
|
|
||||||
b.Property<int>("WarState");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.ToTable("ClashOfClans");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<string>("InternalTrigger");
|
|
||||||
|
|
||||||
b.Property<decimal>("Modifier");
|
|
||||||
|
|
||||||
b.Property<string>("UnitType");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.ToTable("ConversionUnits");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<long>("Amount");
|
|
||||||
|
|
||||||
b.Property<ulong>("UserId");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("UserId")
|
|
||||||
.IsUnique();
|
|
||||||
|
|
||||||
b.ToTable("Currency");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<int>("Amount");
|
|
||||||
|
|
||||||
b.Property<string>("Name");
|
|
||||||
|
|
||||||
b.Property<ulong>("UserId");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("UserId")
|
|
||||||
.IsUnique();
|
|
||||||
|
|
||||||
b.ToTable("Donators");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<int?>("BotConfigId");
|
|
||||||
|
|
||||||
b.Property<string>("Text");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("BotConfigId");
|
|
||||||
|
|
||||||
b.ToTable("EightBallResponses");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<ulong>("ChannelId");
|
|
||||||
|
|
||||||
b.Property<int?>("GuildConfigId");
|
|
||||||
|
|
||||||
b.Property<ulong>("GuildId");
|
|
||||||
|
|
||||||
b.Property<bool>("LastStatus");
|
|
||||||
|
|
||||||
b.Property<int>("Type");
|
|
||||||
|
|
||||||
b.Property<string>("Username");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("GuildConfigId");
|
|
||||||
|
|
||||||
b.ToTable("FollowedStream");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<ulong>("AutoAssignRoleId");
|
|
||||||
|
|
||||||
b.Property<bool>("AutoDeleteByeMessages");
|
|
||||||
|
|
||||||
b.Property<bool>("AutoDeleteGreetMessages");
|
|
||||||
|
|
||||||
b.Property<int>("AutoDeleteGreetMessagesTimer");
|
|
||||||
|
|
||||||
b.Property<bool>("AutoDeleteSelfAssignedRoleMessages");
|
|
||||||
|
|
||||||
b.Property<ulong>("ByeMessageChannelId");
|
|
||||||
|
|
||||||
b.Property<string>("ChannelByeMessageText");
|
|
||||||
|
|
||||||
b.Property<string>("ChannelGreetMessageText");
|
|
||||||
|
|
||||||
b.Property<float>("DefaultMusicVolume");
|
|
||||||
|
|
||||||
b.Property<bool>("DeleteMessageOnCommand");
|
|
||||||
|
|
||||||
b.Property<string>("DmGreetMessageText");
|
|
||||||
|
|
||||||
b.Property<bool>("ExclusiveSelfAssignedRoles");
|
|
||||||
|
|
||||||
b.Property<ulong?>("GenerateCurrencyChannelId");
|
|
||||||
|
|
||||||
b.Property<ulong>("GreetMessageChannelId");
|
|
||||||
|
|
||||||
b.Property<ulong>("GuildId");
|
|
||||||
|
|
||||||
b.Property<int?>("LogSettingId");
|
|
||||||
|
|
||||||
b.Property<bool>("SendChannelByeMessage");
|
|
||||||
|
|
||||||
b.Property<bool>("SendChannelGreetMessage");
|
|
||||||
|
|
||||||
b.Property<bool>("SendDmGreetMessage");
|
|
||||||
|
|
||||||
b.Property<bool>("VoicePlusTextEnabled");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("GuildId")
|
|
||||||
.IsUnique();
|
|
||||||
|
|
||||||
b.HasIndex("LogSettingId");
|
|
||||||
|
|
||||||
b.ToTable("GuildConfigs");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<ulong>("ChannelId");
|
|
||||||
|
|
||||||
b.Property<int?>("LogSettingId");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("LogSettingId");
|
|
||||||
|
|
||||||
b.ToTable("IgnoredLogChannels");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<ulong>("ChannelId");
|
|
||||||
|
|
||||||
b.Property<int?>("LogSettingId");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("LogSettingId");
|
|
||||||
|
|
||||||
b.ToTable("IgnoredVoicePresenceCHannels");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<bool>("ChannelCreated");
|
|
||||||
|
|
||||||
b.Property<bool>("ChannelDestroyed");
|
|
||||||
|
|
||||||
b.Property<ulong>("ChannelId");
|
|
||||||
|
|
||||||
b.Property<bool>("ChannelUpdated");
|
|
||||||
|
|
||||||
b.Property<bool>("IsLogging");
|
|
||||||
|
|
||||||
b.Property<bool>("LogUserPresence");
|
|
||||||
|
|
||||||
b.Property<bool>("LogVoicePresence");
|
|
||||||
|
|
||||||
b.Property<bool>("MessageDeleted");
|
|
||||||
|
|
||||||
b.Property<bool>("MessageReceived");
|
|
||||||
|
|
||||||
b.Property<bool>("MessageUpdated");
|
|
||||||
|
|
||||||
b.Property<bool>("UserBanned");
|
|
||||||
|
|
||||||
b.Property<bool>("UserJoined");
|
|
||||||
|
|
||||||
b.Property<bool>("UserLeft");
|
|
||||||
|
|
||||||
b.Property<ulong>("UserPresenceChannelId");
|
|
||||||
|
|
||||||
b.Property<bool>("UserUnbanned");
|
|
||||||
|
|
||||||
b.Property<bool>("UserUpdated");
|
|
||||||
|
|
||||||
b.Property<ulong>("VoicePresenceChannelId");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.ToTable("LogSettings");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<int>("BotConfigId");
|
|
||||||
|
|
||||||
b.Property<string>("ModuleName");
|
|
||||||
|
|
||||||
b.Property<string>("Prefix");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("BotConfigId");
|
|
||||||
|
|
||||||
b.ToTable("ModulePrefixes");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<int?>("GuildConfigId");
|
|
||||||
|
|
||||||
b.Property<int>("PrimaryTarget");
|
|
||||||
|
|
||||||
b.Property<ulong>("PrimaryTargetId");
|
|
||||||
|
|
||||||
b.Property<int>("SecondaryTarget");
|
|
||||||
|
|
||||||
b.Property<string>("SecondaryTargetName");
|
|
||||||
|
|
||||||
b.Property<bool>("State");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("GuildConfigId");
|
|
||||||
|
|
||||||
b.ToTable("Permission");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<int?>("BotConfigId");
|
|
||||||
|
|
||||||
b.Property<string>("Status");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("BotConfigId");
|
|
||||||
|
|
||||||
b.ToTable("PlayingStatus");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<ulong>("AuthorId");
|
|
||||||
|
|
||||||
b.Property<string>("AuthorName")
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.Property<ulong>("GuildId");
|
|
||||||
|
|
||||||
b.Property<string>("Keyword")
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.Property<string>("Text")
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.ToTable("Quotes");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<int?>("BotConfigId");
|
|
||||||
|
|
||||||
b.Property<string>("Icon");
|
|
||||||
|
|
||||||
b.Property<string>("Name");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("BotConfigId");
|
|
||||||
|
|
||||||
b.ToTable("RaceAnimals");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<ulong>("ChannelId");
|
|
||||||
|
|
||||||
b.Property<bool>("IsPrivate");
|
|
||||||
|
|
||||||
b.Property<string>("Message");
|
|
||||||
|
|
||||||
b.Property<ulong>("ServerId");
|
|
||||||
|
|
||||||
b.Property<ulong>("UserId");
|
|
||||||
|
|
||||||
b.Property<DateTime>("When");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.ToTable("Reminders");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<ulong>("ChannelId");
|
|
||||||
|
|
||||||
b.Property<ulong>("GuildId");
|
|
||||||
|
|
||||||
b.Property<TimeSpan>("Interval");
|
|
||||||
|
|
||||||
b.Property<string>("Message");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("ChannelId")
|
|
||||||
.IsUnique();
|
|
||||||
|
|
||||||
b.ToTable("Repeaters");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<ulong>("GuildId");
|
|
||||||
|
|
||||||
b.Property<ulong>("RoleId");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("GuildId", "RoleId")
|
|
||||||
.IsUnique();
|
|
||||||
|
|
||||||
b.ToTable("SelfAssignableRoles");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<string>("Author");
|
|
||||||
|
|
||||||
b.Property<string>("Text");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.ToTable("TypingArticles");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("NadekoBot.Services.Database.Models.BotConfig")
|
|
||||||
.WithMany("Blacklist")
|
|
||||||
.HasForeignKey("BotConfigId");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar")
|
|
||||||
.WithMany("Bases")
|
|
||||||
.HasForeignKey("ClashWarId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("NadekoBot.Services.Database.Models.BotConfig")
|
|
||||||
.WithMany("EightBallResponses")
|
|
||||||
.HasForeignKey("BotConfigId");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.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");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<int?>("BotConfigId");
|
|
||||||
|
|
||||||
b.Property<ulong>("ItemId");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("BotConfigId");
|
|
||||||
|
|
||||||
b.ToTable("BlacklistItem");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.BotConfig", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<ulong>("BufferSize");
|
|
||||||
|
|
||||||
b.Property<float>("CurrencyGenerationChance");
|
|
||||||
|
|
||||||
b.Property<int>("CurrencyGenerationCooldown");
|
|
||||||
|
|
||||||
b.Property<string>("CurrencyName");
|
|
||||||
|
|
||||||
b.Property<string>("CurrencyPluralName");
|
|
||||||
|
|
||||||
b.Property<string>("CurrencySign");
|
|
||||||
|
|
||||||
b.Property<bool>("DontJoinServers");
|
|
||||||
|
|
||||||
b.Property<bool>("ForwardMessages");
|
|
||||||
|
|
||||||
b.Property<bool>("ForwardToAllOwners");
|
|
||||||
|
|
||||||
b.Property<string>("RemindMessageFormat");
|
|
||||||
|
|
||||||
b.Property<bool>("RotatingStatuses");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.ToTable("BotConfig");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<bool>("BaseDestroyed");
|
|
||||||
|
|
||||||
b.Property<string>("CallUser");
|
|
||||||
|
|
||||||
b.Property<int>("ClashWarId");
|
|
||||||
|
|
||||||
b.Property<int>("Stars");
|
|
||||||
|
|
||||||
b.Property<DateTime>("TimeAdded");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("ClashWarId");
|
|
||||||
|
|
||||||
b.ToTable("ClashCallers");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashWar", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<ulong>("ChannelId");
|
|
||||||
|
|
||||||
b.Property<string>("EnemyClan");
|
|
||||||
|
|
||||||
b.Property<ulong>("GuildId");
|
|
||||||
|
|
||||||
b.Property<int>("Size");
|
|
||||||
|
|
||||||
b.Property<DateTime>("StartedAt");
|
|
||||||
|
|
||||||
b.Property<int>("WarState");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.ToTable("ClashOfClans");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.ConvertUnit", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<string>("InternalTrigger");
|
|
||||||
|
|
||||||
b.Property<decimal>("Modifier");
|
|
||||||
|
|
||||||
b.Property<string>("UnitType");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.ToTable("ConversionUnits");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.Currency", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<long>("Amount");
|
|
||||||
|
|
||||||
b.Property<ulong>("UserId");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("UserId")
|
|
||||||
.IsUnique();
|
|
||||||
|
|
||||||
b.ToTable("Currency");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.Donator", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<int>("Amount");
|
|
||||||
|
|
||||||
b.Property<string>("Name");
|
|
||||||
|
|
||||||
b.Property<ulong>("UserId");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("UserId")
|
|
||||||
.IsUnique();
|
|
||||||
|
|
||||||
b.ToTable("Donators");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<int?>("BotConfigId");
|
|
||||||
|
|
||||||
b.Property<string>("Text");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("BotConfigId");
|
|
||||||
|
|
||||||
b.ToTable("EightBallResponses");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.FollowedStream", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<ulong>("ChannelId");
|
|
||||||
|
|
||||||
b.Property<int?>("GuildConfigId");
|
|
||||||
|
|
||||||
b.Property<ulong>("GuildId");
|
|
||||||
|
|
||||||
b.Property<bool>("LastStatus");
|
|
||||||
|
|
||||||
b.Property<int>("Type");
|
|
||||||
|
|
||||||
b.Property<string>("Username");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("GuildConfigId");
|
|
||||||
|
|
||||||
b.ToTable("FollowedStream");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.GuildConfig", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<ulong>("AutoAssignRoleId");
|
|
||||||
|
|
||||||
b.Property<bool>("AutoDeleteByeMessages");
|
|
||||||
|
|
||||||
b.Property<bool>("AutoDeleteGreetMessages");
|
|
||||||
|
|
||||||
b.Property<int>("AutoDeleteGreetMessagesTimer");
|
|
||||||
|
|
||||||
b.Property<bool>("AutoDeleteSelfAssignedRoleMessages");
|
|
||||||
|
|
||||||
b.Property<ulong>("ByeMessageChannelId");
|
|
||||||
|
|
||||||
b.Property<string>("ChannelByeMessageText");
|
|
||||||
|
|
||||||
b.Property<string>("ChannelGreetMessageText");
|
|
||||||
|
|
||||||
b.Property<float>("DefaultMusicVolume");
|
|
||||||
|
|
||||||
b.Property<bool>("DeleteMessageOnCommand");
|
|
||||||
|
|
||||||
b.Property<string>("DmGreetMessageText");
|
|
||||||
|
|
||||||
b.Property<bool>("ExclusiveSelfAssignedRoles");
|
|
||||||
|
|
||||||
b.Property<ulong?>("GenerateCurrencyChannelId");
|
|
||||||
|
|
||||||
b.Property<ulong>("GreetMessageChannelId");
|
|
||||||
|
|
||||||
b.Property<ulong>("GuildId");
|
|
||||||
|
|
||||||
b.Property<int?>("LogSettingId");
|
|
||||||
|
|
||||||
b.Property<bool>("SendChannelByeMessage");
|
|
||||||
|
|
||||||
b.Property<bool>("SendChannelGreetMessage");
|
|
||||||
|
|
||||||
b.Property<bool>("SendDmGreetMessage");
|
|
||||||
|
|
||||||
b.Property<bool>("VoicePlusTextEnabled");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("GuildId")
|
|
||||||
.IsUnique();
|
|
||||||
|
|
||||||
b.HasIndex("LogSettingId");
|
|
||||||
|
|
||||||
b.ToTable("GuildConfigs");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredLogChannel", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<ulong>("ChannelId");
|
|
||||||
|
|
||||||
b.Property<int?>("LogSettingId");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("LogSettingId");
|
|
||||||
|
|
||||||
b.ToTable("IgnoredLogChannels");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.IgnoredVoicePresenceChannel", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<ulong>("ChannelId");
|
|
||||||
|
|
||||||
b.Property<int?>("LogSettingId");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("LogSettingId");
|
|
||||||
|
|
||||||
b.ToTable("IgnoredVoicePresenceCHannels");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.LogSetting", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<bool>("ChannelCreated");
|
|
||||||
|
|
||||||
b.Property<bool>("ChannelDestroyed");
|
|
||||||
|
|
||||||
b.Property<ulong>("ChannelId");
|
|
||||||
|
|
||||||
b.Property<bool>("ChannelUpdated");
|
|
||||||
|
|
||||||
b.Property<bool>("IsLogging");
|
|
||||||
|
|
||||||
b.Property<bool>("LogUserPresence");
|
|
||||||
|
|
||||||
b.Property<bool>("LogVoicePresence");
|
|
||||||
|
|
||||||
b.Property<bool>("MessageDeleted");
|
|
||||||
|
|
||||||
b.Property<bool>("MessageReceived");
|
|
||||||
|
|
||||||
b.Property<bool>("MessageUpdated");
|
|
||||||
|
|
||||||
b.Property<bool>("UserBanned");
|
|
||||||
|
|
||||||
b.Property<bool>("UserJoined");
|
|
||||||
|
|
||||||
b.Property<bool>("UserLeft");
|
|
||||||
|
|
||||||
b.Property<ulong>("UserPresenceChannelId");
|
|
||||||
|
|
||||||
b.Property<bool>("UserUnbanned");
|
|
||||||
|
|
||||||
b.Property<bool>("UserUpdated");
|
|
||||||
|
|
||||||
b.Property<ulong>("VoicePresenceChannelId");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.ToTable("LogSettings");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.ModulePrefix", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<int>("BotConfigId");
|
|
||||||
|
|
||||||
b.Property<string>("ModuleName");
|
|
||||||
|
|
||||||
b.Property<string>("Prefix");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("BotConfigId");
|
|
||||||
|
|
||||||
b.ToTable("ModulePrefixes");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.Permission", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<int?>("GuildConfigId");
|
|
||||||
|
|
||||||
b.Property<int>("PrimaryTarget");
|
|
||||||
|
|
||||||
b.Property<ulong>("PrimaryTargetId");
|
|
||||||
|
|
||||||
b.Property<int>("SecondaryTarget");
|
|
||||||
|
|
||||||
b.Property<string>("SecondaryTargetName");
|
|
||||||
|
|
||||||
b.Property<bool>("State");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("GuildConfigId");
|
|
||||||
|
|
||||||
b.ToTable("Permission");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.PlayingStatus", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<int?>("BotConfigId");
|
|
||||||
|
|
||||||
b.Property<string>("Status");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("BotConfigId");
|
|
||||||
|
|
||||||
b.ToTable("PlayingStatus");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.Quote", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<ulong>("AuthorId");
|
|
||||||
|
|
||||||
b.Property<string>("AuthorName")
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.Property<ulong>("GuildId");
|
|
||||||
|
|
||||||
b.Property<string>("Keyword")
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.Property<string>("Text")
|
|
||||||
.IsRequired();
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.ToTable("Quotes");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.RaceAnimal", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<int?>("BotConfigId");
|
|
||||||
|
|
||||||
b.Property<string>("Icon");
|
|
||||||
|
|
||||||
b.Property<string>("Name");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("BotConfigId");
|
|
||||||
|
|
||||||
b.ToTable("RaceAnimals");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.Reminder", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<ulong>("ChannelId");
|
|
||||||
|
|
||||||
b.Property<bool>("IsPrivate");
|
|
||||||
|
|
||||||
b.Property<string>("Message");
|
|
||||||
|
|
||||||
b.Property<ulong>("ServerId");
|
|
||||||
|
|
||||||
b.Property<ulong>("UserId");
|
|
||||||
|
|
||||||
b.Property<DateTime>("When");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.ToTable("Reminders");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.Repeater", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<ulong>("ChannelId");
|
|
||||||
|
|
||||||
b.Property<ulong>("GuildId");
|
|
||||||
|
|
||||||
b.Property<TimeSpan>("Interval");
|
|
||||||
|
|
||||||
b.Property<string>("Message");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("ChannelId")
|
|
||||||
.IsUnique();
|
|
||||||
|
|
||||||
b.ToTable("Repeaters");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.SelfAssignedRole", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<ulong>("GuildId");
|
|
||||||
|
|
||||||
b.Property<ulong>("RoleId");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.HasIndex("GuildId", "RoleId")
|
|
||||||
.IsUnique();
|
|
||||||
|
|
||||||
b.ToTable("SelfAssignableRoles");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.TypingArticle", b =>
|
|
||||||
{
|
|
||||||
b.Property<int>("Id")
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
b.Property<string>("Author");
|
|
||||||
|
|
||||||
b.Property<string>("Text");
|
|
||||||
|
|
||||||
b.HasKey("Id");
|
|
||||||
|
|
||||||
b.ToTable("TypingArticles");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.BlacklistItem", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("NadekoBot.Services.Database.Models.BotConfig")
|
|
||||||
.WithMany("Blacklist")
|
|
||||||
.HasForeignKey("BotConfigId");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.ClashCaller", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("NadekoBot.Services.Database.Models.ClashWar", "ClashWar")
|
|
||||||
.WithMany("Bases")
|
|
||||||
.HasForeignKey("ClashWarId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.EightBallResponse", b =>
|
|
||||||
{
|
|
||||||
b.HasOne("NadekoBot.Services.Database.Models.BotConfig")
|
|
||||||
.WithMany("EightBallResponses")
|
|
||||||
.HasForeignKey("BotConfigId");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("NadekoBot.Services.Database.Models.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");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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<int>(
|
|
||||||
name: "NextId",
|
|
||||||
table: "Permission",
|
|
||||||
nullable: true);
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<int>(
|
|
||||||
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<int>(
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -8,8 +8,8 @@ using NadekoBot.Services.Database.Impl;
|
|||||||
namespace NadekoBot.Migrations
|
namespace NadekoBot.Migrations
|
||||||
{
|
{
|
||||||
[DbContext(typeof(NadekoSqliteContext))]
|
[DbContext(typeof(NadekoSqliteContext))]
|
||||||
[Migration("20160927023659_moar perms")]
|
[Migration("20160930001917_first")]
|
||||||
partial class moarperms
|
partial class first
|
||||||
{
|
{
|
||||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||||
{
|
{
|
||||||
@ -237,6 +237,8 @@ namespace NadekoBot.Migrations
|
|||||||
|
|
||||||
b.Property<int?>("LogSettingId");
|
b.Property<int?>("LogSettingId");
|
||||||
|
|
||||||
|
b.Property<string>("PermissionRole");
|
||||||
|
|
||||||
b.Property<int?>("RootPermissionId");
|
b.Property<int?>("RootPermissionId");
|
||||||
|
|
||||||
b.Property<bool>("SendChannelByeMessage");
|
b.Property<bool>("SendChannelByeMessage");
|
||||||
@ -245,6 +247,8 @@ namespace NadekoBot.Migrations
|
|||||||
|
|
||||||
b.Property<bool>("SendDmGreetMessage");
|
b.Property<bool>("SendDmGreetMessage");
|
||||||
|
|
||||||
|
b.Property<bool>("VerbosePermissions");
|
||||||
|
|
||||||
b.Property<bool>("VoicePlusTextEnabled");
|
b.Property<bool>("VoicePlusTextEnabled");
|
||||||
|
|
||||||
b.HasKey("Id");
|
b.HasKey("Id");
|
@ -4,7 +4,7 @@ using Microsoft.EntityFrameworkCore.Migrations;
|
|||||||
|
|
||||||
namespace NadekoBot.Migrations
|
namespace NadekoBot.Migrations
|
||||||
{
|
{
|
||||||
public partial class perms : Migration
|
public partial class first : Migration
|
||||||
{
|
{
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
{
|
{
|
||||||
@ -122,6 +122,30 @@ namespace NadekoBot.Migrations
|
|||||||
table.PrimaryKey("PK_LogSettings", x => x.Id);
|
table.PrimaryKey("PK_LogSettings", x => x.Id);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "Permission",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<int>(nullable: false)
|
||||||
|
.Annotation("Autoincrement", true),
|
||||||
|
NextId = table.Column<int>(nullable: true),
|
||||||
|
PrimaryTarget = table.Column<int>(nullable: false),
|
||||||
|
PrimaryTargetId = table.Column<ulong>(nullable: false),
|
||||||
|
SecondaryTarget = table.Column<int>(nullable: false),
|
||||||
|
SecondaryTargetName = table.Column<string>(nullable: true),
|
||||||
|
State = table.Column<bool>(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(
|
migrationBuilder.CreateTable(
|
||||||
name: "Quotes",
|
name: "Quotes",
|
||||||
columns: table => new
|
columns: table => new
|
||||||
@ -326,44 +350,6 @@ namespace NadekoBot.Migrations
|
|||||||
onDelete: ReferentialAction.Cascade);
|
onDelete: ReferentialAction.Cascade);
|
||||||
});
|
});
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
|
||||||
name: "GuildConfigs",
|
|
||||||
columns: table => new
|
|
||||||
{
|
|
||||||
Id = table.Column<int>(nullable: false)
|
|
||||||
.Annotation("Autoincrement", true),
|
|
||||||
AutoAssignRoleId = table.Column<ulong>(nullable: false),
|
|
||||||
AutoDeleteByeMessages = table.Column<bool>(nullable: false),
|
|
||||||
AutoDeleteGreetMessages = table.Column<bool>(nullable: false),
|
|
||||||
AutoDeleteGreetMessagesTimer = table.Column<int>(nullable: false),
|
|
||||||
AutoDeleteSelfAssignedRoleMessages = table.Column<bool>(nullable: false),
|
|
||||||
ByeMessageChannelId = table.Column<ulong>(nullable: false),
|
|
||||||
ChannelByeMessageText = table.Column<string>(nullable: true),
|
|
||||||
ChannelGreetMessageText = table.Column<string>(nullable: true),
|
|
||||||
DefaultMusicVolume = table.Column<float>(nullable: false),
|
|
||||||
DeleteMessageOnCommand = table.Column<bool>(nullable: false),
|
|
||||||
DmGreetMessageText = table.Column<string>(nullable: true),
|
|
||||||
ExclusiveSelfAssignedRoles = table.Column<bool>(nullable: false),
|
|
||||||
GenerateCurrencyChannelId = table.Column<ulong>(nullable: true),
|
|
||||||
GreetMessageChannelId = table.Column<ulong>(nullable: false),
|
|
||||||
GuildId = table.Column<ulong>(nullable: false),
|
|
||||||
LogSettingId = table.Column<int>(nullable: true),
|
|
||||||
SendChannelByeMessage = table.Column<bool>(nullable: false),
|
|
||||||
SendChannelGreetMessage = table.Column<bool>(nullable: false),
|
|
||||||
SendDmGreetMessage = table.Column<bool>(nullable: false),
|
|
||||||
VoicePlusTextEnabled = table.Column<bool>(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(
|
migrationBuilder.CreateTable(
|
||||||
name: "IgnoredLogChannels",
|
name: "IgnoredLogChannels",
|
||||||
columns: table => new
|
columns: table => new
|
||||||
@ -404,6 +390,53 @@ namespace NadekoBot.Migrations
|
|||||||
onDelete: ReferentialAction.Restrict);
|
onDelete: ReferentialAction.Restrict);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "GuildConfigs",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<int>(nullable: false)
|
||||||
|
.Annotation("Autoincrement", true),
|
||||||
|
AutoAssignRoleId = table.Column<ulong>(nullable: false),
|
||||||
|
AutoDeleteByeMessages = table.Column<bool>(nullable: false),
|
||||||
|
AutoDeleteGreetMessages = table.Column<bool>(nullable: false),
|
||||||
|
AutoDeleteGreetMessagesTimer = table.Column<int>(nullable: false),
|
||||||
|
AutoDeleteSelfAssignedRoleMessages = table.Column<bool>(nullable: false),
|
||||||
|
ByeMessageChannelId = table.Column<ulong>(nullable: false),
|
||||||
|
ChannelByeMessageText = table.Column<string>(nullable: true),
|
||||||
|
ChannelGreetMessageText = table.Column<string>(nullable: true),
|
||||||
|
DefaultMusicVolume = table.Column<float>(nullable: false),
|
||||||
|
DeleteMessageOnCommand = table.Column<bool>(nullable: false),
|
||||||
|
DmGreetMessageText = table.Column<string>(nullable: true),
|
||||||
|
ExclusiveSelfAssignedRoles = table.Column<bool>(nullable: false),
|
||||||
|
GenerateCurrencyChannelId = table.Column<ulong>(nullable: true),
|
||||||
|
GreetMessageChannelId = table.Column<ulong>(nullable: false),
|
||||||
|
GuildId = table.Column<ulong>(nullable: false),
|
||||||
|
LogSettingId = table.Column<int>(nullable: true),
|
||||||
|
PermissionRole = table.Column<string>(nullable: true),
|
||||||
|
RootPermissionId = table.Column<int>(nullable: true),
|
||||||
|
SendChannelByeMessage = table.Column<bool>(nullable: false),
|
||||||
|
SendChannelGreetMessage = table.Column<bool>(nullable: false),
|
||||||
|
SendDmGreetMessage = table.Column<bool>(nullable: false),
|
||||||
|
VerbosePermissions = table.Column<bool>(nullable: false),
|
||||||
|
VoicePlusTextEnabled = table.Column<bool>(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(
|
migrationBuilder.CreateTable(
|
||||||
name: "FollowedStream",
|
name: "FollowedStream",
|
||||||
columns: table => new
|
columns: table => new
|
||||||
@ -428,30 +461,6 @@ namespace NadekoBot.Migrations
|
|||||||
onDelete: ReferentialAction.Restrict);
|
onDelete: ReferentialAction.Restrict);
|
||||||
});
|
});
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
|
||||||
name: "Permission",
|
|
||||||
columns: table => new
|
|
||||||
{
|
|
||||||
Id = table.Column<int>(nullable: false)
|
|
||||||
.Annotation("Autoincrement", true),
|
|
||||||
GuildConfigId = table.Column<int>(nullable: true),
|
|
||||||
PrimaryTarget = table.Column<int>(nullable: false),
|
|
||||||
PrimaryTargetId = table.Column<ulong>(nullable: false),
|
|
||||||
SecondaryTarget = table.Column<int>(nullable: false),
|
|
||||||
SecondaryTargetName = table.Column<string>(nullable: true),
|
|
||||||
State = table.Column<bool>(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(
|
migrationBuilder.CreateIndex(
|
||||||
name: "IX_BlacklistItem_BotConfigId",
|
name: "IX_BlacklistItem_BotConfigId",
|
||||||
table: "BlacklistItem",
|
table: "BlacklistItem",
|
||||||
@ -495,6 +504,11 @@ namespace NadekoBot.Migrations
|
|||||||
table: "GuildConfigs",
|
table: "GuildConfigs",
|
||||||
column: "LogSettingId");
|
column: "LogSettingId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_GuildConfigs_RootPermissionId",
|
||||||
|
table: "GuildConfigs",
|
||||||
|
column: "RootPermissionId");
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
migrationBuilder.CreateIndex(
|
||||||
name: "IX_IgnoredLogChannels_LogSettingId",
|
name: "IX_IgnoredLogChannels_LogSettingId",
|
||||||
table: "IgnoredLogChannels",
|
table: "IgnoredLogChannels",
|
||||||
@ -511,9 +525,10 @@ namespace NadekoBot.Migrations
|
|||||||
column: "BotConfigId");
|
column: "BotConfigId");
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
migrationBuilder.CreateIndex(
|
||||||
name: "IX_Permission_GuildConfigId",
|
name: "IX_Permission_NextId",
|
||||||
table: "Permission",
|
table: "Permission",
|
||||||
column: "GuildConfigId");
|
column: "NextId",
|
||||||
|
unique: true);
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
migrationBuilder.CreateIndex(
|
||||||
name: "IX_PlayingStatus_BotConfigId",
|
name: "IX_PlayingStatus_BotConfigId",
|
||||||
@ -570,9 +585,6 @@ namespace NadekoBot.Migrations
|
|||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "ModulePrefixes");
|
name: "ModulePrefixes");
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
|
||||||
name: "Permission");
|
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "PlayingStatus");
|
name: "PlayingStatus");
|
||||||
|
|
||||||
@ -605,6 +617,9 @@ namespace NadekoBot.Migrations
|
|||||||
|
|
||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "LogSettings");
|
name: "LogSettings");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "Permission");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -236,6 +236,8 @@ namespace NadekoBot.Migrations
|
|||||||
|
|
||||||
b.Property<int?>("LogSettingId");
|
b.Property<int?>("LogSettingId");
|
||||||
|
|
||||||
|
b.Property<string>("PermissionRole");
|
||||||
|
|
||||||
b.Property<int?>("RootPermissionId");
|
b.Property<int?>("RootPermissionId");
|
||||||
|
|
||||||
b.Property<bool>("SendChannelByeMessage");
|
b.Property<bool>("SendChannelByeMessage");
|
||||||
@ -244,6 +246,8 @@ namespace NadekoBot.Migrations
|
|||||||
|
|
||||||
b.Property<bool>("SendDmGreetMessage");
|
b.Property<bool>("SendDmGreetMessage");
|
||||||
|
|
||||||
|
b.Property<bool>("VerbosePermissions");
|
||||||
|
|
||||||
b.Property<bool>("VoicePlusTextEnabled");
|
b.Property<bool>("VoicePlusTextEnabled");
|
||||||
|
|
||||||
b.HasKey("Id");
|
b.HasKey("Id");
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using Discord;
|
using Discord;
|
||||||
using Discord.Commands;
|
using Discord.Commands;
|
||||||
|
using NadekoBot.Services;
|
||||||
using NadekoBot.Services.Database;
|
using NadekoBot.Services.Database;
|
||||||
using NadekoBot.Services.Database.Models;
|
using NadekoBot.Services.Database.Models;
|
||||||
using System;
|
using System;
|
||||||
@ -21,7 +22,6 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
|
|
||||||
public static bool CheckPermissions(this IEnumerable<Permission> permsEnumerable, IUserMessage message, Command command, out int permIndex)
|
public static bool CheckPermissions(this IEnumerable<Permission> permsEnumerable, IUserMessage message, Command command, out int permIndex)
|
||||||
{
|
{
|
||||||
permsEnumerable = permsEnumerable.Reverse();
|
|
||||||
var perms = permsEnumerable as List<Permission> ?? permsEnumerable.ToList();
|
var perms = permsEnumerable as List<Permission> ?? permsEnumerable.ToList();
|
||||||
|
|
||||||
for (int i = 0; i < perms.Count; i++)
|
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)
|
public static bool? CheckPermission(this Permission perm, IUserMessage message, Command command)
|
||||||
{
|
{
|
||||||
if (!((perm.SecondaryTarget == SecondaryPermissionType.Command &&
|
if (!((perm.SecondaryTarget == SecondaryPermissionType.Command &&
|
||||||
perm.SecondaryTargetName == command.Text.ToLowerInvariant()) ||
|
perm.SecondaryTargetName.ToLowerInvariant() == command.Text.ToLowerInvariant()) ||
|
||||||
((perm.SecondaryTarget == SecondaryPermissionType.Module || perm.SecondaryTarget == SecondaryPermissionType.AllCommands) &&
|
(perm.SecondaryTarget == SecondaryPermissionType.Module &&
|
||||||
perm.SecondaryTargetName == command.Module.Name.ToLowerInvariant()) ||
|
perm.SecondaryTargetName.ToLowerInvariant() == command.Module.Name.ToLowerInvariant()) ||
|
||||||
perm.SecondaryTarget == SecondaryPermissionType.AllModules ||
|
perm.SecondaryTarget == SecondaryPermissionType.AllModules))
|
||||||
(perm.SecondaryTarget == SecondaryPermissionType.AllCommands && perm.SecondaryTargetName == command.Module.Name.ToLowerInvariant())))
|
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
var guildUser = message.Author as IGuildUser;
|
||||||
|
|
||||||
switch (perm.PrimaryTarget)
|
switch (perm.PrimaryTarget)
|
||||||
{
|
{
|
||||||
case PrimaryPermissionType.User:
|
case PrimaryPermissionType.User:
|
||||||
@ -67,13 +68,16 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
if (perm.PrimaryTargetId == message.Channel.Id)
|
if (perm.PrimaryTargetId == message.Channel.Id)
|
||||||
return perm.State;
|
return perm.State;
|
||||||
break;
|
break;
|
||||||
case PrimaryPermissionType.Role:
|
case PrimaryPermissionType.Role:
|
||||||
var guildUser = message.Author as IGuildUser;
|
|
||||||
if (guildUser == null)
|
if (guildUser == null)
|
||||||
break;
|
break;
|
||||||
if (guildUser.Roles.Any(r => r.Id == perm.PrimaryTargetId))
|
if (guildUser.Roles.Any(r => r.Id == perm.PrimaryTargetId))
|
||||||
return perm.State;
|
return perm.State;
|
||||||
break;
|
break;
|
||||||
|
case PrimaryPermissionType.Server:
|
||||||
|
if (guildUser == null)
|
||||||
|
break;
|
||||||
|
return perm.State;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -92,6 +96,9 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
case PrimaryPermissionType.Role:
|
case PrimaryPermissionType.Role:
|
||||||
com += "r";
|
com += "r";
|
||||||
break;
|
break;
|
||||||
|
case PrimaryPermissionType.Server:
|
||||||
|
com += "s";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (perm.SecondaryTarget)
|
switch (perm.SecondaryTarget)
|
||||||
@ -102,9 +109,6 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
case SecondaryPermissionType.Command:
|
case SecondaryPermissionType.Command:
|
||||||
com += "c";
|
com += "c";
|
||||||
break;
|
break;
|
||||||
case SecondaryPermissionType.AllCommands:
|
|
||||||
com = "a" + com + "c";
|
|
||||||
break;
|
|
||||||
case SecondaryPermissionType.AllModules:
|
case SecondaryPermissionType.AllModules:
|
||||||
com = "a" + com + "m";
|
com = "a" + com + "m";
|
||||||
break;
|
break;
|
||||||
@ -122,22 +126,19 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
case PrimaryPermissionType.Role:
|
case PrimaryPermissionType.Role:
|
||||||
com += $"<@&{perm.PrimaryTargetId}>";
|
com += $"<@&{perm.PrimaryTargetId}>";
|
||||||
break;
|
break;
|
||||||
|
case PrimaryPermissionType.Server:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NadekoBot.ModulePrefixes[typeof(Permissions).Name] + com;
|
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;
|
perm = perm.GetRoot();
|
||||||
while (last.Next != null)
|
|
||||||
{
|
|
||||||
last = last.Next;
|
|
||||||
}
|
|
||||||
|
|
||||||
toAdd.Previous = last;
|
perm.Previous = toAdd;
|
||||||
last.Next = toAdd;
|
toAdd.Next = perm;
|
||||||
toAdd.Next = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Insert(this Permission perm, int index, Permission toAdd)
|
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)
|
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();
|
throw new IndexOutOfRangeException();
|
||||||
|
|
||||||
if (index == 0)
|
|
||||||
{
|
|
||||||
perm.Next.Previous = null;
|
|
||||||
perm.Next = null;
|
|
||||||
return perm;
|
|
||||||
}
|
|
||||||
|
|
||||||
var toRemove = perm;
|
var toRemove = perm;
|
||||||
var i = 0;
|
var i = 0;
|
||||||
while (i != index)
|
while (i != index)
|
||||||
@ -195,7 +189,8 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
}
|
}
|
||||||
|
|
||||||
toRemove.Previous.Next = toRemove.Next;
|
toRemove.Previous.Next = toRemove.Next;
|
||||||
toRemove.Next.Previous = toRemove.Previous;
|
if (toRemove.Next != null)
|
||||||
|
toRemove.Next.Previous = toRemove.Previous;
|
||||||
return toRemove;
|
return toRemove;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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]
|
[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias]
|
||||||
[RequireContext(ContextType.Guild)]
|
[RequireContext(ContextType.Guild)]
|
||||||
public async Task ListPerms(IUserMessage msg)
|
public async Task ListPerms(IUserMessage msg)
|
||||||
@ -30,10 +46,10 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
string toSend = "";
|
string toSend = "";
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
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;
|
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))
|
if (string.IsNullOrWhiteSpace(toSend))
|
||||||
@ -47,16 +63,36 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
public async Task RemovePerm(IUserMessage imsg, int index)
|
public async Task RemovePerm(IUserMessage imsg, int index)
|
||||||
{
|
{
|
||||||
var channel = (ITextChannel)imsg.Channel;
|
var channel = (ITextChannel)imsg.Channel;
|
||||||
|
index -= 1;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Permission p;
|
Permission p;
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
var perms = uow.GuildConfigs.For(channel.Guild.Id).RootPermission;
|
var perms = uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission;
|
||||||
p = perms.RemoveAt(perms.Count() - index);
|
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 uow.CompleteAsync().ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
await channel.SendMessageAsync($"`Removed permission \"{p.GetCommand()}\" from position #{index}.`").ConfigureAwait(false);
|
|
||||||
|
using (var uow2 = DbHandler.UnitOfWork())
|
||||||
|
{
|
||||||
|
uow2._context.Remove<Permission>(p);
|
||||||
|
uow2._context.SaveChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
await channel.SendMessageAsync($"{imsg.Author.Mention} removed permission **{p.GetCommand()}** from position #{index + 1}.").ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
catch (ArgumentOutOfRangeException)
|
catch (ArgumentOutOfRangeException)
|
||||||
{
|
{
|
||||||
@ -68,24 +104,31 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
[RequireContext(ContextType.Guild)]
|
[RequireContext(ContextType.Guild)]
|
||||||
public async Task MovePerm(IUserMessage imsg, int from, int to)
|
public async Task MovePerm(IUserMessage imsg, int from, int to)
|
||||||
{
|
{
|
||||||
|
from -= 1;
|
||||||
|
to -= 1;
|
||||||
var channel = (ITextChannel)imsg.Channel;
|
var channel = (ITextChannel)imsg.Channel;
|
||||||
if (!(from == to || from < 1 || to < 1))
|
if (!(from == to || from < 0 || to < 0))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Permission toInsert;
|
Permission toInsert;
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
var perms = uow.GuildConfigs.For(channel.Guild.Id).RootPermission;
|
var perms = uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission;
|
||||||
var count = perms.Count();
|
if (from == 0)
|
||||||
toInsert = perms.RemoveAt(count - from);
|
toInsert = perms;
|
||||||
|
else
|
||||||
|
toInsert = perms.RemoveAt(from);
|
||||||
if (from < to)
|
if (from < to)
|
||||||
to -= 1;
|
to -= 1;
|
||||||
perms.Insert(count - to, toInsert);
|
var last = perms.Count() - 1;
|
||||||
uow.GuildConfigs.For(channel.Guild.Id).RootPermission = perms;
|
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 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;
|
return;
|
||||||
}
|
}
|
||||||
catch (Exception e) when (e is ArgumentOutOfRangeException || e is IndexOutOfRangeException)
|
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);
|
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]
|
[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias]
|
||||||
[RequireContext(ContextType.Guild)]
|
[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, IGuildUser user)
|
||||||
@ -103,14 +192,16 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
|
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission
|
var newPerm = new Permission
|
||||||
{
|
{
|
||||||
PrimaryTarget = PrimaryPermissionType.User,
|
PrimaryTarget = PrimaryPermissionType.User,
|
||||||
PrimaryTargetId = user.Id,
|
PrimaryTargetId = user.Id,
|
||||||
SecondaryTarget = SecondaryPermissionType.Command,
|
SecondaryTarget = SecondaryPermissionType.Command,
|
||||||
SecondaryTargetName = command.Text.ToLowerInvariant(),
|
SecondaryTargetName = command.Text.ToLowerInvariant(),
|
||||||
State = action.Value,
|
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 uow.CompleteAsync().ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{command.Text}` command for `{user}` user.").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())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission
|
var newPerm = new Permission
|
||||||
{
|
{
|
||||||
PrimaryTarget = PrimaryPermissionType.User,
|
PrimaryTarget = PrimaryPermissionType.User,
|
||||||
PrimaryTargetId = user.Id,
|
PrimaryTargetId = user.Id,
|
||||||
SecondaryTarget = SecondaryPermissionType.Module,
|
SecondaryTarget = SecondaryPermissionType.Module,
|
||||||
SecondaryTargetName = module.Name.ToLowerInvariant(),
|
SecondaryTargetName = module.Name.ToLowerInvariant(),
|
||||||
State = action.Value,
|
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 uow.CompleteAsync().ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{module.Name}` module for `{user}` user.").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())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission
|
var newPerm = new Permission
|
||||||
{
|
{
|
||||||
PrimaryTarget = PrimaryPermissionType.Role,
|
PrimaryTarget = PrimaryPermissionType.Role,
|
||||||
PrimaryTargetId = role.Id,
|
PrimaryTargetId = role.Id,
|
||||||
SecondaryTarget = SecondaryPermissionType.Command,
|
SecondaryTarget = SecondaryPermissionType.Command,
|
||||||
SecondaryTargetName = command.Text.ToLowerInvariant(),
|
SecondaryTargetName = command.Text.ToLowerInvariant(),
|
||||||
State = action.Value,
|
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 uow.CompleteAsync().ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{command.Text}` command for `{role}` role.").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())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission
|
var newPerm = new Permission
|
||||||
{
|
{
|
||||||
PrimaryTarget = PrimaryPermissionType.Role,
|
PrimaryTarget = PrimaryPermissionType.Role,
|
||||||
PrimaryTargetId = role.Id,
|
PrimaryTargetId = role.Id,
|
||||||
SecondaryTarget = SecondaryPermissionType.Module,
|
SecondaryTarget = SecondaryPermissionType.Module,
|
||||||
SecondaryTargetName = module.Name.ToLowerInvariant(),
|
SecondaryTargetName = module.Name.ToLowerInvariant(),
|
||||||
State = action.Value,
|
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 uow.CompleteAsync().ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{module.Name}` module for `{role}` role.").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)
|
public async Task ChnlCmd(IUserMessage imsg, Command command, PermissionAction action, ITextChannel chnl)
|
||||||
{
|
{
|
||||||
var channel = (ITextChannel)imsg.Channel;
|
var channel = (ITextChannel)imsg.Channel;
|
||||||
|
try
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
|
||||||
{
|
{
|
||||||
uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
PrimaryTarget = PrimaryPermissionType.Channel,
|
var newPerm = new Permission
|
||||||
PrimaryTargetId = chnl.Id,
|
{
|
||||||
SecondaryTarget = SecondaryPermissionType.Command,
|
PrimaryTarget = PrimaryPermissionType.Channel,
|
||||||
SecondaryTargetName = command.Text.ToLowerInvariant(),
|
PrimaryTargetId = chnl.Id,
|
||||||
State = action.Value,
|
SecondaryTarget = SecondaryPermissionType.Command,
|
||||||
});
|
SecondaryTargetName = command.Text.ToLowerInvariant(),
|
||||||
await uow.CompleteAsync().ConfigureAwait(false);
|
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);
|
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())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission
|
var newPerm = new Permission
|
||||||
{
|
{
|
||||||
PrimaryTarget = PrimaryPermissionType.Channel,
|
PrimaryTarget = PrimaryPermissionType.Channel,
|
||||||
PrimaryTargetId = chnl.Id,
|
PrimaryTargetId = chnl.Id,
|
||||||
SecondaryTarget = SecondaryPermissionType.Module,
|
SecondaryTarget = SecondaryPermissionType.Module,
|
||||||
SecondaryTargetName = module.Name.ToLowerInvariant(),
|
SecondaryTargetName = module.Name.ToLowerInvariant(),
|
||||||
State = action.Value,
|
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 uow.CompleteAsync().ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `{module.Name}` module for `{chnl}` channel.").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())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission
|
var newPerm = new Permission
|
||||||
{
|
{
|
||||||
PrimaryTarget = PrimaryPermissionType.Channel,
|
PrimaryTarget = PrimaryPermissionType.Channel,
|
||||||
PrimaryTargetId = chnl.Id,
|
PrimaryTargetId = chnl.Id,
|
||||||
SecondaryTarget = SecondaryPermissionType.AllModules,
|
SecondaryTarget = SecondaryPermissionType.AllModules,
|
||||||
SecondaryTargetName = "*",
|
SecondaryTargetName = "*",
|
||||||
State = action.Value,
|
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 uow.CompleteAsync().ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL MODULES` for `{chnl}` channel.").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())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission
|
var newPerm = new Permission
|
||||||
{
|
{
|
||||||
PrimaryTarget = PrimaryPermissionType.Role,
|
PrimaryTarget = PrimaryPermissionType.Role,
|
||||||
PrimaryTargetId = role.Id,
|
PrimaryTargetId = role.Id,
|
||||||
SecondaryTarget = SecondaryPermissionType.AllModules,
|
SecondaryTarget = SecondaryPermissionType.AllModules,
|
||||||
SecondaryTargetName = "*",
|
SecondaryTargetName = "*",
|
||||||
State = action.Value,
|
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 uow.CompleteAsync().ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL MODULES` for `{role}` role.").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())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission
|
var newPerm = new Permission
|
||||||
{
|
{
|
||||||
PrimaryTarget = PrimaryPermissionType.User,
|
PrimaryTarget = PrimaryPermissionType.User,
|
||||||
PrimaryTargetId = user.Id,
|
PrimaryTargetId = user.Id,
|
||||||
SecondaryTarget = SecondaryPermissionType.AllModules,
|
SecondaryTarget = SecondaryPermissionType.AllModules,
|
||||||
SecondaryTargetName = "*",
|
SecondaryTargetName = "*",
|
||||||
State = action.Value,
|
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 uow.CompleteAsync().ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL MODULES` for `{user}` user.").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]
|
[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias]
|
||||||
[RequireContext(ContextType.Guild)]
|
[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;
|
var channel = (ITextChannel)imsg.Channel;
|
||||||
|
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission
|
var newPerm = new Permission
|
||||||
{
|
{
|
||||||
PrimaryTarget = PrimaryPermissionType.Channel,
|
PrimaryTarget = PrimaryPermissionType.Server,
|
||||||
PrimaryTargetId = chnl.Id,
|
PrimaryTargetId = 0,
|
||||||
SecondaryTarget = SecondaryPermissionType.AllCommands,
|
SecondaryTarget = SecondaryPermissionType.AllModules,
|
||||||
SecondaryTargetName = module.Name.ToLowerInvariant(),
|
SecondaryTargetName = "*",
|
||||||
State = action.Value,
|
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 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]
|
//[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias]
|
||||||
[RequireContext(ContextType.Guild)]
|
//[RequireContext(ContextType.Guild)]
|
||||||
public async Task AllRoleCmds(IUserMessage imsg, Module module, PermissionAction action, IRole role)
|
//public async Task AllChnlCmds(IUserMessage imsg, Module module, PermissionAction action, ITextChannel chnl)
|
||||||
{
|
//{
|
||||||
var channel = (ITextChannel)imsg.Channel;
|
// var channel = (ITextChannel)imsg.Channel;
|
||||||
|
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
// using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
// {
|
||||||
uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission
|
// uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Add(new Permission
|
||||||
{
|
// {
|
||||||
PrimaryTarget = PrimaryPermissionType.Role,
|
// PrimaryTarget = PrimaryPermissionType.Channel,
|
||||||
PrimaryTargetId = role.Id,
|
// PrimaryTargetId = chnl.Id,
|
||||||
SecondaryTarget = SecondaryPermissionType.AllCommands,
|
// SecondaryTarget = SecondaryPermissionType.AllCommands,
|
||||||
SecondaryTargetName = module.Name.ToLowerInvariant(),
|
// SecondaryTargetName = module.Name.ToLowerInvariant(),
|
||||||
State = action.Value,
|
// State = action.Value,
|
||||||
});
|
// });
|
||||||
await uow.CompleteAsync().ConfigureAwait(false);
|
// 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);
|
// await channel.SendMessageAsync($"{(action.Value ? "Allowed" : "Denied")} usage of `ALL COMMANDS` from `{module.Name}` module for `{chnl}` channel.").ConfigureAwait(false);
|
||||||
}
|
//}
|
||||||
|
|
||||||
[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias]
|
//[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias]
|
||||||
[RequireContext(ContextType.Guild)]
|
//[RequireContext(ContextType.Guild)]
|
||||||
public async Task AllUsrCmds(IUserMessage imsg, Module module, PermissionAction action, IUser user)
|
//public async Task AllRoleCmds(IUserMessage imsg, Module module, PermissionAction action, IRole role)
|
||||||
{
|
//{
|
||||||
var channel = (ITextChannel)imsg.Channel;
|
// var channel = (ITextChannel)imsg.Channel;
|
||||||
|
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
// using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
// {
|
||||||
uow.GuildConfigs.For(channel.Guild.Id).RootPermission.Add(new Permission
|
// uow.GuildConfigs.PermissionsFor(channel.Guild.Id).RootPermission.Add(new Permission
|
||||||
{
|
// {
|
||||||
PrimaryTarget = PrimaryPermissionType.User,
|
// PrimaryTarget = PrimaryPermissionType.Role,
|
||||||
PrimaryTargetId = user.Id,
|
// PrimaryTargetId = role.Id,
|
||||||
SecondaryTarget = SecondaryPermissionType.AllCommands,
|
// SecondaryTarget = SecondaryPermissionType.AllCommands,
|
||||||
SecondaryTargetName = module.Name.ToLowerInvariant(),
|
// SecondaryTargetName = module.Name.ToLowerInvariant(),
|
||||||
State = action.Value,
|
// State = action.Value,
|
||||||
});
|
// });
|
||||||
await uow.CompleteAsync().ConfigureAwait(false);
|
// 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);
|
// 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);
|
||||||
|
//}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,8 @@ using Discord.Commands;
|
|||||||
using NadekoBot.Services.Database;
|
using NadekoBot.Services.Database;
|
||||||
using NadekoBot.Services.Database.Models;
|
using NadekoBot.Services.Database.Models;
|
||||||
using NadekoBot.Modules.Permissions;
|
using NadekoBot.Modules.Permissions;
|
||||||
|
using Microsoft.Data.Sqlite;
|
||||||
|
using Discord.Net;
|
||||||
|
|
||||||
namespace NadekoBot.Services
|
namespace NadekoBot.Services
|
||||||
{
|
{
|
||||||
@ -44,41 +46,66 @@ namespace NadekoBot.Services
|
|||||||
var sw = new Stopwatch();
|
var sw = new Stopwatch();
|
||||||
sw.Start();
|
sw.Start();
|
||||||
|
|
||||||
var t = await ExecuteCommand(usrMsg, usrMsg.Content, guild, usrMsg.Author, MultiMatchHandling.Best);
|
try
|
||||||
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));
|
var t = await ExecuteCommand(usrMsg, usrMsg.Content, guild, usrMsg.Author, MultiMatchHandling.Best);
|
||||||
_log.Info("Command Executed after {4}s\n\t" +
|
var command = t.Item1;
|
||||||
"User: {0}\n\t" +
|
var result = t.Item2;
|
||||||
"Server: {1}\n\t" +
|
sw.Stop();
|
||||||
"Channel: {2}\n\t" +
|
var channel = (usrMsg.Channel as ITextChannel);
|
||||||
"Message: {3}",
|
if (result.IsSuccess)
|
||||||
usrMsg.Author + " [" + usrMsg.Author.Id + "]", // {0}
|
{
|
||||||
(channel == null ? "PRIVATE" : channel.Guild.Name + " [" + channel.Guild.Id + "]"), // {1}
|
CommandExecuted(this, new CommandExecutedEventArgs(usrMsg, command));
|
||||||
(channel == null ? "PRIVATE" : channel.Name + " [" + channel.Id + "]"), // {2}
|
_log.Info("Command Executed after {4}s\n\t" +
|
||||||
usrMsg.Content, // {3}
|
"User: {0}\n\t" +
|
||||||
sw.Elapsed.TotalSeconds // {4}
|
"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" +
|
Console.WriteLine(ex);
|
||||||
"User: {0}\n\t" +
|
}
|
||||||
"Server: {1}\n\t" +
|
catch (SqliteException ex)
|
||||||
"Channel: {2}\n\t" +
|
{
|
||||||
"Message: {3}\n\t" +
|
Console.WriteLine(ex.InnerException);
|
||||||
"Error: {4}",
|
}
|
||||||
usrMsg.Author + " [" + usrMsg.Author.Id + "]", // {0}
|
catch (HttpException ex)
|
||||||
(channel == null ? "PRIVATE" : channel.Guild.Name + " [" + channel.Guild.Id + "]"), // {1}
|
{
|
||||||
(channel == null ? "PRIVATE" : channel.Name + " [" + channel.Id + "]"), // {2}
|
Console.WriteLine(ex);
|
||||||
usrMsg.Content,// {3}
|
|
||||||
result.ErrorReason, // {4}
|
|
||||||
sw.Elapsed.TotalSeconds // {5}
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -133,11 +160,14 @@ namespace NadekoBot.Services
|
|||||||
{
|
{
|
||||||
using (var uow = DbHandler.UnitOfWork())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
rootPerm = uow.GuildConfigs.For(guild.Id).RootPermission;
|
rootPerm = uow.GuildConfigs.PermissionsFor(guild.Id).RootPermission;
|
||||||
}
|
}
|
||||||
int index;
|
int index;
|
||||||
if (!rootPerm.AsEnumerable().CheckPermissions(message, cmd, out index))
|
if (!rootPerm.AsEnumerable().CheckPermissions(message, cmd, out index))
|
||||||
return new Tuple<Command, IResult>(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<Command, IResult>(cmd, SearchResult.FromError(CommandError.Exception, returnMsg));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Tuple<Command, IResult>(commands[i], await commands[i].Execute(message, parseResult));
|
return new Tuple<Command, IResult>(commands[i], await commands[i].Execute(message, parseResult));
|
||||||
|
@ -43,14 +43,8 @@ namespace NadekoBot.Services.Database.Models
|
|||||||
public ulong? GenerateCurrencyChannelId { get; set; }
|
public ulong? GenerateCurrencyChannelId { get; set; }
|
||||||
|
|
||||||
//permissions
|
//permissions
|
||||||
public Permission RootPermission { get; set; } = new Permission()
|
public Permission RootPermission { get; set; }
|
||||||
{
|
public bool VerbosePermissions { get; set; }
|
||||||
Next = null,
|
public string PermissionRole { get; set; } = "Nadeko";
|
||||||
Previous = null,
|
|
||||||
PrimaryTarget = PrimaryPermissionType.Role,
|
|
||||||
PrimaryTargetId = 0,
|
|
||||||
SecondaryTarget = SecondaryPermissionType.AllModules,
|
|
||||||
SecondaryTargetName = "*",
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@ -18,20 +19,50 @@ namespace NadekoBot.Services.Database.Models
|
|||||||
public string SecondaryTargetName { get; set; }
|
public string SecondaryTargetName { get; set; }
|
||||||
|
|
||||||
public bool State { 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
|
public enum PrimaryPermissionType
|
||||||
{
|
{
|
||||||
User,
|
User,
|
||||||
Channel,
|
Channel,
|
||||||
Role
|
Role,
|
||||||
|
Server
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum SecondaryPermissionType
|
public enum SecondaryPermissionType
|
||||||
{
|
{
|
||||||
Module,
|
Module,
|
||||||
Command,
|
Command,
|
||||||
AllCommands,
|
|
||||||
AllModules
|
AllModules
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -186,6 +186,7 @@ namespace NadekoBot.Services.Database
|
|||||||
permissionEntity
|
permissionEntity
|
||||||
.HasOne(p => p.Next)
|
.HasOne(p => p.Next)
|
||||||
.WithOne(p => p.Previous);
|
.WithOne(p => p.Previous);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region LogSettings
|
#region LogSettings
|
||||||
|
@ -11,6 +11,7 @@ namespace NadekoBot.Services.Database.Repositories
|
|||||||
public interface IGuildConfigRepository : IRepository<GuildConfig>
|
public interface IGuildConfigRepository : IRepository<GuildConfig>
|
||||||
{
|
{
|
||||||
GuildConfig For(ulong guildId);
|
GuildConfig For(ulong guildId);
|
||||||
|
GuildConfig PermissionsFor(ulong guildId);
|
||||||
IEnumerable<FollowedStream> GetAllFollowedStreams();
|
IEnumerable<FollowedStream> GetAllFollowedStreams();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,10 @@ namespace NadekoBot.Services.Database.Repositories.Impl
|
|||||||
.ThenInclude(ls => ls.IgnoredChannels)
|
.ThenInclude(ls => ls.IgnoredChannels)
|
||||||
.Include(gc => gc.LogSetting)
|
.Include(gc => gc.LogSetting)
|
||||||
.ThenInclude(ls => ls.IgnoredVoicePresenceChannelIds)
|
.ThenInclude(ls => ls.IgnoredVoicePresenceChannelIds)
|
||||||
|
.Include(gc => gc.RootPermission)
|
||||||
|
.ThenInclude(gc => gc.Previous)
|
||||||
|
.Include(gc => gc.RootPermission)
|
||||||
|
.ThenInclude(gc => gc.Next)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -29,16 +33,45 @@ namespace NadekoBot.Services.Database.Repositories.Impl
|
|||||||
public GuildConfig For(ulong guildId)
|
public GuildConfig For(ulong guildId)
|
||||||
{
|
{
|
||||||
var config = _set.Include(gc => gc.FollowedStreams)
|
var config = _set.Include(gc => gc.FollowedStreams)
|
||||||
.Include(gc => gc.RootPermission)
|
|
||||||
.Include(gc => gc.LogSetting)
|
.Include(gc => gc.LogSetting)
|
||||||
.ThenInclude(ls=>ls.IgnoredChannels)
|
.ThenInclude(ls => ls.IgnoredChannels)
|
||||||
.FirstOrDefault(c => c.GuildId == guildId);
|
.Include(gc => gc.LogSetting)
|
||||||
|
.ThenInclude(ls => ls.IgnoredVoicePresenceChannelIds)
|
||||||
|
.FirstOrDefault(c => c.GuildId == guildId);
|
||||||
|
|
||||||
if (config == null)
|
if (config == null)
|
||||||
{
|
{
|
||||||
_set.Add((config = new GuildConfig
|
_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();
|
_context.SaveChanges();
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,6 @@
|
|||||||
"Microsoft.Extensions.PlatformAbstractions": "1.0.0",
|
"Microsoft.Extensions.PlatformAbstractions": "1.0.0",
|
||||||
"Newtonsoft.Json": "9.0.1",
|
"Newtonsoft.Json": "9.0.1",
|
||||||
"Microsoft.Extensions.DependencyInjection": "1.0.0",
|
"Microsoft.Extensions.DependencyInjection": "1.0.0",
|
||||||
"Discord.Net.Commands": "1.0.0-dev",
|
|
||||||
"System.Resources.ResourceWriter": "4.0.0-beta-22816",
|
"System.Resources.ResourceWriter": "4.0.0-beta-22816",
|
||||||
"Google.Apis.YouTube.v3": "1.15.0.582",
|
"Google.Apis.YouTube.v3": "1.15.0.582",
|
||||||
"Google.Apis.Urlshortener.v1": "1.15.0.138",
|
"Google.Apis.Urlshortener.v1": "1.15.0.138",
|
||||||
@ -35,7 +34,9 @@
|
|||||||
"Microsoft.EntityFrameworkCore.Design": "1.0.0-preview2-final",
|
"Microsoft.EntityFrameworkCore.Design": "1.0.0-preview2-final",
|
||||||
"Microsoft.EntityFrameworkCore.Sqlite": "1.0.0",
|
"Microsoft.EntityFrameworkCore.Sqlite": "1.0.0",
|
||||||
"CoreCLR-NCalc": "2.1.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": {
|
"tools": {
|
||||||
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
|
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
|
||||||
|
@ -9096,7 +9096,8 @@
|
|||||||
"projectFileDependencyGroups": {
|
"projectFileDependencyGroups": {
|
||||||
"": [
|
"": [
|
||||||
"CoreCLR-NCalc >= 2.1.0",
|
"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.Customsearch.v1 >= 1.16.0.466",
|
||||||
"Google.Apis.Urlshortener.v1 >= 1.15.0.138",
|
"Google.Apis.Urlshortener.v1 >= 1.15.0.138",
|
||||||
"Google.Apis.YouTube.v3 >= 1.15.0.582",
|
"Google.Apis.YouTube.v3 >= 1.15.0.582",
|
||||||
|
Loading…
Reference in New Issue
Block a user