async Task IPermissionConfig.AddNewGuild(IGuild guild, IReadOnlyCollection <IGuildUser> users)
        {
            if (!GuildAdminRole.ContainsKey(guild.Id))
            {
                GuildAdminRole[guild.Id] = 0ul;
            }
            if (!GuildModRole.ContainsKey(guild.Id))
            {
                GuildModRole[guild.Id] = 0ul;
            }
            if (!GuildModuleWhitelist.ContainsKey(guild.Id))
            {
                GuildModuleWhitelist[guild.Id] = new HashSet <string>();
            }
            if (!UseFancyHelps.ContainsKey(guild.Id))
            {
                UseFancyHelps[guild.Id] = false;
            }

            foreach (var channel in await guild.GetTextChannelsAsync().ConfigureAwait(false))
            {
                if (!ChannelModuleWhitelist.ContainsKey(channel.Id))
                {
                    ChannelModuleWhitelist[channel.Id] = new HashSet <string>();
                }
                if (!SpecialPermissionUsersList.ContainsKey(channel.Id))
                {
                    SpecialPermissionUsersList[channel.Id] = new HashSet <ulong>();
                }
            }
        }
        async Task IPermissionConfig.AddNewGuild(IGuild guild)
        {
            if (!GuildAdminRole.ContainsKey(guild.Id))
            {
                GuildAdminRole[guild.Id] = 0ul;
            }
            if (!GuildModRole.ContainsKey(guild.Id))
            {
                GuildModRole[guild.Id] = 0ul;
            }
            if (!GuildModuleWhitelist.ContainsKey(guild.Id))
            {
                GuildModuleWhitelist[guild.Id] = new HashSet <string>();
            }
            if (!UseFancyHelps.ContainsKey(guild.Id))
            {
                UseFancyHelps[guild.Id] = false;
            }

            foreach (var channel in await guild.GetTextChannelsAsync())
            {
                if (!ChannelModuleWhitelist.ContainsKey(channel.Id))
                {
                    ChannelModuleWhitelist[channel.Id] = new HashSet <string>();
                }
                if (!SpecialPermissionUsersList.ContainsKey(channel.Id))
                {
                    SpecialPermissionUsersList[channel.Id] = new HashSet <ulong>();
                }
            }
            await(this as IPermissionConfig).WhitelistModuleGuild(guild, PermissionsModule.PermModuleName).ConfigureAwait(false);
        }
 Task IPermissionConfig.AddChannel(ITextChannel channel)
 {
     if (!ChannelModuleWhitelist.ContainsKey(channel.Id))
     {
         ChannelModuleWhitelist[channel.Id] = new HashSet <string>();
     }
     if (!SpecialPermissionUsersList.ContainsKey(channel.Id))
     {
         SpecialPermissionUsersList[channel.Id] = new HashSet <ulong>();
     }
     return(Task.CompletedTask);
 }
        Task IPermissionConfig.RemoveChannel(ITextChannel channel)
        {
            if (ChannelModuleWhitelist.ContainsKey(channel.Id))
            {
                ChannelModuleWhitelist.Remove(channel.Id);
            }
            if (SpecialPermissionUsersList.ContainsKey(channel.Id))
            {
                SpecialPermissionUsersList.Remove(channel.Id);
            }

            return(Task.CompletedTask);
        }