Changed Guild#DefaultChannel to resolve the first accessible channel (#777)
* Changed Guild#DefaultChannel to resolve the first accessible channel Resolves #776 This change is inline with hammerandchisel/discord-api-docs#329 RestGuild#DefaultChannelId is now obsolete and will throw a NotSupportedException. * RestGuild#DefaultChannelId will fall back to the guild ID Adding an exception here would be a breaking change, so this was agreed to fall back to the previous behavior, which would just return the guild ID.
This commit is contained in:
@@ -33,6 +33,8 @@ namespace Discord.Rest
|
||||
internal bool Available { get; private set; }
|
||||
|
||||
public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id);
|
||||
|
||||
[Obsolete("DefaultChannelId is deprecated, use GetDefaultChannelAsync")]
|
||||
public ulong DefaultChannelId => Id;
|
||||
public string IconUrl => CDN.GetGuildIconUrl(Id, IconId);
|
||||
public string SplashUrl => CDN.GetGuildSplashUrl(Id, SplashId);
|
||||
@@ -185,8 +187,12 @@ namespace Discord.Rest
|
||||
}
|
||||
public async Task<RestTextChannel> GetDefaultChannelAsync(RequestOptions options = null)
|
||||
{
|
||||
var channel = await GuildHelper.GetChannelAsync(this, Discord, DefaultChannelId, options).ConfigureAwait(false);
|
||||
return channel as RestTextChannel;
|
||||
var channels = await GetTextChannelsAsync(options).ConfigureAwait(false);
|
||||
var user = await GetCurrentUserAsync(options).ConfigureAwait(false);
|
||||
return channels
|
||||
.Where(c => user.GetPermissions(c).ReadMessages)
|
||||
.OrderBy(c => c.Position)
|
||||
.FirstOrDefault();
|
||||
}
|
||||
public async Task<RestGuildChannel> GetEmbedChannelAsync(RequestOptions options = null)
|
||||
{
|
||||
|
||||
@@ -54,7 +54,6 @@ namespace Discord.WebSocket
|
||||
public string SplashId { get; private set; }
|
||||
|
||||
public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id);
|
||||
public SocketTextChannel DefaultChannel => GetTextChannel(Id);
|
||||
public string IconUrl => CDN.GetGuildIconUrl(Id, IconId);
|
||||
public string SplashUrl => CDN.GetGuildSplashUrl(Id, SplashId);
|
||||
public bool HasAllMembers => MemberCount == DownloadedMemberCount;// _downloaderPromise.Task.IsCompleted;
|
||||
@@ -62,6 +61,10 @@ namespace Discord.WebSocket
|
||||
public Task SyncPromise => _syncPromise.Task;
|
||||
public Task DownloaderPromise => _downloaderPromise.Task;
|
||||
public IAudioClient AudioClient => _audioClient;
|
||||
public SocketTextChannel DefaultChannel => TextChannels
|
||||
.Where(c => CurrentUser.GetPermissions(c).ReadMessages)
|
||||
.OrderBy(c => c.Position)
|
||||
.FirstOrDefault();
|
||||
public SocketVoiceChannel AFKChannel
|
||||
{
|
||||
get
|
||||
@@ -606,7 +609,7 @@ namespace Discord.WebSocket
|
||||
ulong? IGuild.AFKChannelId => AFKChannelId;
|
||||
IAudioClient IGuild.AudioClient => null;
|
||||
bool IGuild.Available => true;
|
||||
ulong IGuild.DefaultChannelId => Id;
|
||||
ulong IGuild.DefaultChannelId => DefaultChannel?.Id ?? 0;
|
||||
ulong? IGuild.EmbedChannelId => EmbedChannelId;
|
||||
IRole IGuild.EveryoneRole => EveryoneRole;
|
||||
IReadOnlyCollection<IRole> IGuild.Roles => Roles;
|
||||
|
||||
@@ -64,7 +64,7 @@ namespace Discord
|
||||
var text5 = textChannels.Where(x => x.Name == "text5").FirstOrDefault();
|
||||
|
||||
Assert.NotNull(text1);
|
||||
Assert.True(text1.Id == guild.DefaultChannelId);
|
||||
//Assert.True(text1.Id == guild.DefaultChannelId);
|
||||
Assert.Equal(text1.Position, 1);
|
||||
Assert.Equal(text1.Topic, "Topic1");
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ namespace Discord
|
||||
|
||||
foreach (var channel in textChannels)
|
||||
{
|
||||
if (channel.Id != guild.DefaultChannelId)
|
||||
//if (channel.Id != guild.DefaultChannelId)
|
||||
await channel.DeleteAsync();
|
||||
}
|
||||
foreach (var channel in voiceChannels)
|
||||
|
||||
Reference in New Issue
Block a user