diff --git a/src/Discord.Net/Models/Server.cs b/src/Discord.Net/Models/Server.cs index b7a9933dc..616e0b5eb 100644 --- a/src/Discord.Net/Models/Server.cs +++ b/src/Discord.Net/Models/Server.cs @@ -70,10 +70,6 @@ namespace Discord public int AFKTimeout { get; private set; } /// Gets the date and time you joined this server. public DateTime JoinedAt { get; private set; } - /// Gets the default channel for this server. - public Channel DefaultChannel { get; private set; } - /// Gets the the role representing all users in a server. - public Role EveryoneRole { get; private set; } /// Gets all extra features added to this server. public IEnumerable Features { get; private set; } /// Gets all custom emojis on this server. @@ -93,6 +89,10 @@ namespace Discord public string IconUrl => GetIconUrl(Id, IconId); /// Gets the URL to this servers's splash image. public string SplashUrl => GetSplashUrl(Id, SplashId); + /// Gets the default channel for this server. + public Channel DefaultChannel => GetChannel(Id); + /// Gets the the role representing all users in a server. + public Role EveryoneRole => GetRole(Id); /// Gets a collection of all channels in this server. public IEnumerable AllChannels => _channels.Select(x => x.Value); @@ -119,7 +119,7 @@ namespace Discord Client = client; Id = id; } - + internal void Update(Guild model) { if (model.Name != null) @@ -144,7 +144,6 @@ namespace Discord var role = AddRole(x.Id); role.Update(x, false); } - EveryoneRole = _roles[Id]; } if (model.Emojis != null) //Needs Roles { @@ -171,7 +170,6 @@ namespace Discord _channels = new ConcurrentDictionary(2, (int)(model.Channels.Length * 1.05)); foreach (var subModel in model.Channels) AddChannel(subModel.Id, false).Update(subModel); - DefaultChannel = _channels[Id]; } if (model.MemberCount != null) { @@ -198,7 +196,7 @@ namespace Discord } } } - + /// Edits this server, changing only non-null attributes. public Task Edit(string name = null, string region = null, Stream icon = null, ImageType iconType = ImageType.Png) { @@ -366,7 +364,7 @@ namespace Discord if (name == null) throw new ArgumentNullException(nameof(name)); return _roles.Select(x => x.Value).Find(name, exactMatch); } - + /// Creates a new role. public async Task CreateRole(string name, ServerPermissions? permissions = null, Color color = null, bool isHoisted = false) { @@ -405,16 +403,16 @@ namespace Discord #region Permissions internal ServerPermissions GetPermissions(User user) - { - Member member; - if (_users.TryGetValue(user.Id, out member)) - return member.Permissions; - else - return ServerPermissions.None; - } - - internal void UpdatePermissions(User user) - { + { + Member member; + if (_users.TryGetValue(user.Id, out member)) + return member.Permissions; + else + return ServerPermissions.None; + } + + internal void UpdatePermissions(User user) + { Member member; if (_users.TryGetValue(user.Id, out member)) { @@ -426,30 +424,30 @@ namespace Discord channel.Value.UpdatePermissions(user); } } - } + } private bool UpdatePermissions(User user, ref ServerPermissions permissions) - { - uint newPermissions = 0; - - if (user.Id == _ownerId) - newPermissions = ServerPermissions.All.RawValue; - else - { - foreach (var serverRole in user.Roles) - newPermissions |= serverRole.Permissions.RawValue; - } - - if (newPermissions.HasBit((byte)PermissionBits.ManageRolesOrPermissions)) - newPermissions = ServerPermissions.All.RawValue; - - if (newPermissions != permissions.RawValue) - { - permissions = new ServerPermissions(newPermissions); + { + uint newPermissions = 0; + + if (user.Id == _ownerId) + newPermissions = ServerPermissions.All.RawValue; + else + { + foreach (var serverRole in user.Roles) + newPermissions |= serverRole.Permissions.RawValue; + } + + if (newPermissions.HasBit((byte)PermissionBits.ManageRolesOrPermissions)) + newPermissions = ServerPermissions.All.RawValue; + + if (newPermissions != permissions.RawValue) + { + permissions = new ServerPermissions(newPermissions); return true; - } + } return false; - } + } #endregion #region Users @@ -540,5 +538,5 @@ namespace Discord private Server() { } //Used for cloning public override string ToString() => Name ?? Id.ToIdString(); - } + } }