All administration submodules now inherit NadekoSubmodule, and woops, forgot to commit discord.net connection change
This commit is contained in:
		 Submodule Discord.Net updated: 9ce5c4757e...d2229228b9
									
								
							@@ -16,7 +16,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
    public partial class Administration
 | 
					    public partial class Administration
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        [Group]
 | 
					        [Group]
 | 
				
			||||||
        public class AutoAssignRoleCommands : ModuleBase
 | 
					        public class AutoAssignRoleCommands : NadekoSubmodule
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            private static Logger _log { get; }
 | 
					            private static Logger _log { get; }
 | 
				
			||||||
            //guildid/roleid
 | 
					            //guildid/roleid
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,16 +15,13 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
    public partial class Administration
 | 
					    public partial class Administration
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        [Group]
 | 
					        [Group]
 | 
				
			||||||
        public class DMForwardCommands : ModuleBase
 | 
					        public class DMForwardCommands : NadekoSubmodule
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            private static bool ForwardDMs { get; set; }
 | 
					            private static bool ForwardDMs { get; set; }
 | 
				
			||||||
            private static bool ForwardDMsToAllOwners { get; set; }
 | 
					            private static bool ForwardDMsToAllOwners { get; set; }
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            private static readonly Logger _log;
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            static DMForwardCommands()
 | 
					            static DMForwardCommands()
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                _log = LogManager.GetCurrentClassLogger();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                using (var uow = DbHandler.UnitOfWork())
 | 
					                using (var uow = DbHandler.UnitOfWork())
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,7 +15,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
    public partial class Administration
 | 
					    public partial class Administration
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        [Group]
 | 
					        [Group]
 | 
				
			||||||
        public class LocalizationCommands : ModuleBase
 | 
					        public class LocalizationCommands : NadekoSubmodule
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            private ImmutableDictionary<string, string> SupportedLocales { get; } = new Dictionary<string, string>()
 | 
					            private ImmutableDictionary<string, string> SupportedLocales { get; } = new Dictionary<string, string>()
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
    public partial class Administration
 | 
					    public partial class Administration
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        [Group]
 | 
					        [Group]
 | 
				
			||||||
        public class LogCommands : ModuleBase
 | 
					        public class LogCommands : NadekoSubmodule
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            private const string clockEmojiUrl = "https://cdn.discordapp.com/attachments/155726317222887425/258309524966866945/clock.png";
 | 
					            private const string clockEmojiUrl = "https://cdn.discordapp.com/attachments/155726317222887425/258309524966866945/clock.png";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
    public partial class Administration
 | 
					    public partial class Administration
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        [Group]
 | 
					        [Group]
 | 
				
			||||||
        public class Migration : ModuleBase
 | 
					        public class Migration : NadekoSubmodule
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            private const int CURRENT_VERSION = 1;
 | 
					            private const int CURRENT_VERSION = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
    public partial class Administration
 | 
					    public partial class Administration
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        [Group]
 | 
					        [Group]
 | 
				
			||||||
        public class MuteCommands : ModuleBase
 | 
					        public class MuteCommands : NadekoSubmodule
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            private static ConcurrentDictionary<ulong, string> GuildMuteRoles { get; } = new ConcurrentDictionary<ulong, string>();
 | 
					            private static ConcurrentDictionary<ulong, string> GuildMuteRoles { get; } = new ConcurrentDictionary<ulong, string>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -58,12 +58,11 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                    if (muted == null || !muted.Contains(usr.Id))
 | 
					                    if (muted == null || !muted.Contains(usr.Id))
 | 
				
			||||||
                        return;
 | 
					                        return;
 | 
				
			||||||
                    else
 | 
					 | 
				
			||||||
                    await MuteUser(usr).ConfigureAwait(false);
 | 
					                    await MuteUser(usr).ConfigureAwait(false);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                catch (Exception ex)
 | 
					                catch (Exception ex)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    _log.Warn(ex);
 | 
					                    LogManager.GetCurrentClassLogger().Warn(ex);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                    
 | 
					                    
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
    public partial class Administration
 | 
					    public partial class Administration
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        [Group]
 | 
					        [Group]
 | 
				
			||||||
        public class PlayingRotateCommands : ModuleBase
 | 
					        public class PlayingRotateCommands : NadekoSubmodule
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            private static Logger _log { get; }
 | 
					            private static Logger _log { get; }
 | 
				
			||||||
            public static List<PlayingStatus> RotatingStatusMessages { get; }
 | 
					            public static List<PlayingStatus> RotatingStatusMessages { get; }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -76,12 +76,12 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Group]
 | 
					        [Group]
 | 
				
			||||||
        public class ProtectionCommands : ModuleBase
 | 
					        public class ProtectionCommands : NadekoSubmodule
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            private static ConcurrentDictionary<ulong, AntiRaidStats> antiRaidGuilds =
 | 
					            private static readonly ConcurrentDictionary<ulong, AntiRaidStats> _antiRaidGuilds =
 | 
				
			||||||
                    new ConcurrentDictionary<ulong, AntiRaidStats>();
 | 
					                    new ConcurrentDictionary<ulong, AntiRaidStats>();
 | 
				
			||||||
            // guildId | (userId|messages)
 | 
					            // guildId | (userId|messages)
 | 
				
			||||||
            private static ConcurrentDictionary<ulong, AntiSpamStats> antiSpamGuilds =
 | 
					            private static readonly ConcurrentDictionary<ulong, AntiSpamStats> _antiSpamGuilds =
 | 
				
			||||||
                    new ConcurrentDictionary<ulong, AntiSpamStats>();
 | 
					                    new ConcurrentDictionary<ulong, AntiSpamStats>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            private static Logger _log { get; }
 | 
					            private static Logger _log { get; }
 | 
				
			||||||
@@ -98,11 +98,11 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
                    if (raid != null)
 | 
					                    if (raid != null)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        var raidStats = new AntiRaidStats() { AntiRaidSettings = raid };
 | 
					                        var raidStats = new AntiRaidStats() { AntiRaidSettings = raid };
 | 
				
			||||||
                        antiRaidGuilds.TryAdd(gc.GuildId, raidStats);
 | 
					                        _antiRaidGuilds.TryAdd(gc.GuildId, raidStats);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    if (spam != null)
 | 
					                    if (spam != null)
 | 
				
			||||||
                        antiSpamGuilds.TryAdd(gc.GuildId, new AntiSpamStats() { AntiSpamSettings = spam });
 | 
					                        _antiSpamGuilds.TryAdd(gc.GuildId, new AntiSpamStats() { AntiSpamSettings = spam });
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                NadekoBot.Client.MessageReceived += (imsg) =>
 | 
					                NadekoBot.Client.MessageReceived += (imsg) =>
 | 
				
			||||||
@@ -119,7 +119,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
                        try
 | 
					                        try
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            AntiSpamStats spamSettings;
 | 
					                            AntiSpamStats spamSettings;
 | 
				
			||||||
                            if (!antiSpamGuilds.TryGetValue(channel.Guild.Id, out spamSettings) ||
 | 
					                            if (!_antiSpamGuilds.TryGetValue(channel.Guild.Id, out spamSettings) ||
 | 
				
			||||||
                                spamSettings.AntiSpamSettings.IgnoredChannels.Contains(new AntiSpamIgnore()
 | 
					                                spamSettings.AntiSpamSettings.IgnoredChannels.Contains(new AntiSpamIgnore()
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    ChannelId = channel.Id
 | 
					                                    ChannelId = channel.Id
 | 
				
			||||||
@@ -151,7 +151,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
                    if (usr.IsBot)
 | 
					                    if (usr.IsBot)
 | 
				
			||||||
                        return Task.CompletedTask;
 | 
					                        return Task.CompletedTask;
 | 
				
			||||||
                    AntiRaidStats settings;
 | 
					                    AntiRaidStats settings;
 | 
				
			||||||
                    if (!antiRaidGuilds.TryGetValue(usr.Guild.Id, out settings))
 | 
					                    if (!_antiRaidGuilds.TryGetValue(usr.Guild.Id, out settings))
 | 
				
			||||||
                        return Task.CompletedTask;
 | 
					                        return Task.CompletedTask;
 | 
				
			||||||
                    if (!settings.RaidUsers.Add(usr))
 | 
					                    if (!settings.RaidUsers.Add(usr))
 | 
				
			||||||
                        return Task.CompletedTask;
 | 
					                        return Task.CompletedTask;
 | 
				
			||||||
@@ -245,7 +245,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                AntiRaidStats throwaway;
 | 
					                AntiRaidStats throwaway;
 | 
				
			||||||
                if (antiRaidGuilds.TryRemove(Context.Guild.Id, out throwaway))
 | 
					                if (_antiRaidGuilds.TryRemove(Context.Guild.Id, out throwaway))
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    using (var uow = DbHandler.UnitOfWork())
 | 
					                    using (var uow = DbHandler.UnitOfWork())
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
@@ -281,7 +281,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
                    }
 | 
					                    }
 | 
				
			||||||
                };
 | 
					                };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                antiRaidGuilds.AddOrUpdate(Context.Guild.Id, stats, (key, old) => stats);
 | 
					                _antiRaidGuilds.AddOrUpdate(Context.Guild.Id, stats, (key, old) => stats);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                using (var uow = DbHandler.UnitOfWork())
 | 
					                using (var uow = DbHandler.UnitOfWork())
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
@@ -304,7 +304,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                AntiSpamStats throwaway;
 | 
					                AntiSpamStats throwaway;
 | 
				
			||||||
                if (antiSpamGuilds.TryRemove(Context.Guild.Id, out throwaway))
 | 
					                if (_antiSpamGuilds.TryRemove(Context.Guild.Id, out throwaway))
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    using (var uow = DbHandler.UnitOfWork())
 | 
					                    using (var uow = DbHandler.UnitOfWork())
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
@@ -340,7 +340,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
                    }
 | 
					                    }
 | 
				
			||||||
                };
 | 
					                };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                antiSpamGuilds.AddOrUpdate(Context.Guild.Id, stats, (key, old) => stats);
 | 
					                _antiSpamGuilds.AddOrUpdate(Context.Guild.Id, stats, (key, old) => stats);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                using (var uow = DbHandler.UnitOfWork())
 | 
					                using (var uow = DbHandler.UnitOfWork())
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
@@ -376,7 +376,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
                    if (spam.IgnoredChannels.Add(obj))
 | 
					                    if (spam.IgnoredChannels.Add(obj))
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        AntiSpamStats temp;
 | 
					                        AntiSpamStats temp;
 | 
				
			||||||
                        if (antiSpamGuilds.TryGetValue(Context.Guild.Id, out temp))
 | 
					                        if (_antiSpamGuilds.TryGetValue(Context.Guild.Id, out temp))
 | 
				
			||||||
                            temp.AntiSpamSettings.IgnoredChannels.Add(obj);
 | 
					                            temp.AntiSpamSettings.IgnoredChannels.Add(obj);
 | 
				
			||||||
                        added = true;
 | 
					                        added = true;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
@@ -384,7 +384,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        spam.IgnoredChannels.Remove(obj);
 | 
					                        spam.IgnoredChannels.Remove(obj);
 | 
				
			||||||
                        AntiSpamStats temp;
 | 
					                        AntiSpamStats temp;
 | 
				
			||||||
                        if (antiSpamGuilds.TryGetValue(Context.Guild.Id, out temp))
 | 
					                        if (_antiSpamGuilds.TryGetValue(Context.Guild.Id, out temp))
 | 
				
			||||||
                            temp.AntiSpamSettings.IgnoredChannels.Remove(obj);
 | 
					                            temp.AntiSpamSettings.IgnoredChannels.Remove(obj);
 | 
				
			||||||
                        added = false;
 | 
					                        added = false;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
@@ -403,10 +403,10 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
            public async Task AntiList()
 | 
					            public async Task AntiList()
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                AntiSpamStats spam;
 | 
					                AntiSpamStats spam;
 | 
				
			||||||
                antiSpamGuilds.TryGetValue(Context.Guild.Id, out spam);
 | 
					                _antiSpamGuilds.TryGetValue(Context.Guild.Id, out spam);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                AntiRaidStats raid;
 | 
					                AntiRaidStats raid;
 | 
				
			||||||
                antiRaidGuilds.TryGetValue(Context.Guild.Id, out raid);
 | 
					                _antiRaidGuilds.TryGetValue(Context.Guild.Id, out raid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (spam == null && raid == null)
 | 
					                if (spam == null && raid == null)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
    public partial class Administration
 | 
					    public partial class Administration
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        [Group]
 | 
					        [Group]
 | 
				
			||||||
        public class RatelimitCommand : ModuleBase
 | 
					        public class RatelimitCommand : NadekoSubmodule
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            public static ConcurrentDictionary<ulong, Ratelimiter> RatelimitingChannels = new ConcurrentDictionary<ulong, Ratelimiter>();
 | 
					            public static ConcurrentDictionary<ulong, Ratelimiter> RatelimitingChannels = new ConcurrentDictionary<ulong, Ratelimiter>();
 | 
				
			||||||
            private static Logger _log { get; }
 | 
					            private static Logger _log { get; }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,7 +16,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
    public partial class Administration
 | 
					    public partial class Administration
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        [Group]
 | 
					        [Group]
 | 
				
			||||||
        public class SelfAssignedRolesCommands : ModuleBase
 | 
					        public class SelfAssignedRolesCommands : NadekoSubmodule
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            [NadekoCommand, Usage, Description, Aliases]
 | 
					            [NadekoCommand, Usage, Description, Aliases]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
    public partial class Administration
 | 
					    public partial class Administration
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        [Group]
 | 
					        [Group]
 | 
				
			||||||
        class SelfCommands : ModuleBase
 | 
					        public class SelfCommands : NadekoSubmodule
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            [NadekoCommand, Usage, Description, Aliases]
 | 
					            [NadekoCommand, Usage, Description, Aliases]
 | 
				
			||||||
            [OwnerOnly]
 | 
					            [OwnerOnly]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,19 +19,20 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
    public partial class Administration
 | 
					    public partial class Administration
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        [Group]
 | 
					        [Group]
 | 
				
			||||||
        public class VoicePlusTextCommands : ModuleBase
 | 
					        public class VoicePlusTextCommands : NadekoSubmodule
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            private static Regex channelNameRegex = new Regex(@"[^a-zA-Z0-9 -]", RegexOptions.Compiled);
 | 
					            private new static readonly Logger _log;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            private static ConcurrentHashSet<ulong> voicePlusTextCache { get; }
 | 
					            private static readonly Regex _channelNameRegex = new Regex(@"[^a-zA-Z0-9 -]", RegexOptions.Compiled);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            private static ConcurrentDictionary<ulong, SemaphoreSlim> guildLockObjects = new ConcurrentDictionary<ulong, SemaphoreSlim>();
 | 
					            private static readonly ConcurrentHashSet<ulong> _voicePlusTextCache;
 | 
				
			||||||
 | 
					            private static readonly ConcurrentDictionary<ulong, SemaphoreSlim> _guildLockObjects = new ConcurrentDictionary<ulong, SemaphoreSlim>();
 | 
				
			||||||
            static VoicePlusTextCommands()
 | 
					            static VoicePlusTextCommands()
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var _log = LogManager.GetCurrentClassLogger();
 | 
					                _log = LogManager.GetCurrentClassLogger();
 | 
				
			||||||
                var sw = Stopwatch.StartNew();
 | 
					                var sw = Stopwatch.StartNew();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                voicePlusTextCache = new ConcurrentHashSet<ulong>(NadekoBot.AllGuildConfigs.Where(g => g.VoicePlusTextEnabled).Select(g => g.GuildId));
 | 
					                _voicePlusTextCache = new ConcurrentHashSet<ulong>(NadekoBot.AllGuildConfigs.Where(g => g.VoicePlusTextEnabled).Select(g => g.GuildId));
 | 
				
			||||||
                NadekoBot.Client.UserVoiceStateUpdated += UserUpdatedEventHandler;
 | 
					                NadekoBot.Client.UserVoiceStateUpdated += UserUpdatedEventHandler;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                sw.Stop();
 | 
					                sw.Stop();
 | 
				
			||||||
@@ -51,7 +52,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
                if (before.VoiceChannel == after.VoiceChannel)
 | 
					                if (before.VoiceChannel == after.VoiceChannel)
 | 
				
			||||||
                    return Task.CompletedTask;
 | 
					                    return Task.CompletedTask;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (!voicePlusTextCache.Contains(guild.Id))
 | 
					                if (!_voicePlusTextCache.Contains(guild.Id))
 | 
				
			||||||
                    return Task.CompletedTask;
 | 
					                    return Task.CompletedTask;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                var _ = Task.Run(async () =>
 | 
					                var _ = Task.Run(async () =>
 | 
				
			||||||
@@ -71,13 +72,13 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
                            using (var uow = DbHandler.UnitOfWork())
 | 
					                            using (var uow = DbHandler.UnitOfWork())
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                uow.GuildConfigs.For(guild.Id, set => set).VoicePlusTextEnabled = false;
 | 
					                                uow.GuildConfigs.For(guild.Id, set => set).VoicePlusTextEnabled = false;
 | 
				
			||||||
                                voicePlusTextCache.TryRemove(guild.Id);
 | 
					                                _voicePlusTextCache.TryRemove(guild.Id);
 | 
				
			||||||
                                await uow.CompleteAsync().ConfigureAwait(false);
 | 
					                                await uow.CompleteAsync().ConfigureAwait(false);
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            return;
 | 
					                            return;
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        var semaphore = guildLockObjects.GetOrAdd(guild.Id, (key) => new SemaphoreSlim(1, 1));
 | 
					                        var semaphore = _guildLockObjects.GetOrAdd(guild.Id, (key) => new SemaphoreSlim(1, 1));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        try
 | 
					                        try
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
@@ -109,8 +110,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
                                    roleToAdd = await guild.CreateRoleAsync(roleName, GuildPermissions.None).ConfigureAwait(false);
 | 
					                                    roleToAdd = await guild.CreateRoleAsync(roleName, GuildPermissions.None).ConfigureAwait(false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                ITextChannel textChannel = guild.TextChannels
 | 
					                                ITextChannel textChannel = guild.TextChannels
 | 
				
			||||||
                                                            .Where(t => t.Name == GetChannelName(afterVch.Name).ToLowerInvariant())
 | 
					                                                            .FirstOrDefault(t => t.Name == GetChannelName(afterVch.Name).ToLowerInvariant());
 | 
				
			||||||
                                                            .FirstOrDefault();
 | 
					 | 
				
			||||||
                                if (textChannel == null)
 | 
					                                if (textChannel == null)
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    var created = (await guild.CreateTextChannelAsync(GetChannelName(afterVch.Name).ToLowerInvariant()).ConfigureAwait(false));
 | 
					                                    var created = (await guild.CreateTextChannelAsync(GetChannelName(afterVch.Name).ToLowerInvariant()).ConfigureAwait(false));
 | 
				
			||||||
@@ -146,7 +146,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            private static string GetChannelName(string voiceName) =>
 | 
					            private static string GetChannelName(string voiceName) =>
 | 
				
			||||||
                channelNameRegex.Replace(voiceName, "").Trim().Replace(" ", "-").TrimTo(90, true) + "-voice";
 | 
					                _channelNameRegex.Replace(voiceName, "").Trim().Replace(" ", "-").TrimTo(90, true) + "-voice";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            private static string GetRoleName(IVoiceChannel ch) =>
 | 
					            private static string GetRoleName(IVoiceChannel ch) =>
 | 
				
			||||||
                "nvoice-" + ch.Id;
 | 
					                "nvoice-" + ch.Id;
 | 
				
			||||||
@@ -186,7 +186,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    if (!isEnabled)
 | 
					                    if (!isEnabled)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        voicePlusTextCache.TryRemove(guild.Id);
 | 
					                        _voicePlusTextCache.TryRemove(guild.Id);
 | 
				
			||||||
                        foreach (var textChannel in (await guild.GetTextChannelsAsync().ConfigureAwait(false)).Where(c => c.Name.EndsWith("-voice")))
 | 
					                        foreach (var textChannel in (await guild.GetTextChannelsAsync().ConfigureAwait(false)).Where(c => c.Name.EndsWith("-voice")))
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            try { await textChannel.DeleteAsync().ConfigureAwait(false); } catch { }
 | 
					                            try { await textChannel.DeleteAsync().ConfigureAwait(false); } catch { }
 | 
				
			||||||
@@ -201,7 +201,7 @@ namespace NadekoBot.Modules.Administration
 | 
				
			|||||||
                        await Context.Channel.SendConfirmAsync("ℹ️ Successfuly **removed** voice + text feature.").ConfigureAwait(false);
 | 
					                        await Context.Channel.SendConfirmAsync("ℹ️ Successfuly **removed** voice + text feature.").ConfigureAwait(false);
 | 
				
			||||||
                        return;
 | 
					                        return;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    voicePlusTextCache.Add(guild.Id);
 | 
					                    _voicePlusTextCache.Add(guild.Id);
 | 
				
			||||||
                    await Context.Channel.SendConfirmAsync("🆗 Successfuly **enabled** voice + text feature.").ConfigureAwait(false);
 | 
					                    await Context.Channel.SendConfirmAsync("🆗 Successfuly **enabled** voice + text feature.").ConfigureAwait(false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user