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; }
|
internal bool Available { get; private set; }
|
||||||
|
|
||||||
public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id);
|
public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id);
|
||||||
|
|
||||||
|
[Obsolete("DefaultChannelId is deprecated, use GetDefaultChannelAsync")]
|
||||||
public ulong DefaultChannelId => Id;
|
public ulong DefaultChannelId => Id;
|
||||||
public string IconUrl => CDN.GetGuildIconUrl(Id, IconId);
|
public string IconUrl => CDN.GetGuildIconUrl(Id, IconId);
|
||||||
public string SplashUrl => CDN.GetGuildSplashUrl(Id, SplashId);
|
public string SplashUrl => CDN.GetGuildSplashUrl(Id, SplashId);
|
||||||
@@ -185,8 +187,12 @@ namespace Discord.Rest
|
|||||||
}
|
}
|
||||||
public async Task<RestTextChannel> GetDefaultChannelAsync(RequestOptions options = null)
|
public async Task<RestTextChannel> GetDefaultChannelAsync(RequestOptions options = null)
|
||||||
{
|
{
|
||||||
var channel = await GuildHelper.GetChannelAsync(this, Discord, DefaultChannelId, options).ConfigureAwait(false);
|
var channels = await GetTextChannelsAsync(options).ConfigureAwait(false);
|
||||||
return channel as RestTextChannel;
|
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)
|
public async Task<RestGuildChannel> GetEmbedChannelAsync(RequestOptions options = null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -54,7 +54,6 @@ namespace Discord.WebSocket
|
|||||||
public string SplashId { get; private set; }
|
public string SplashId { get; private set; }
|
||||||
|
|
||||||
public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id);
|
public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id);
|
||||||
public SocketTextChannel DefaultChannel => GetTextChannel(Id);
|
|
||||||
public string IconUrl => CDN.GetGuildIconUrl(Id, IconId);
|
public string IconUrl => CDN.GetGuildIconUrl(Id, IconId);
|
||||||
public string SplashUrl => CDN.GetGuildSplashUrl(Id, SplashId);
|
public string SplashUrl => CDN.GetGuildSplashUrl(Id, SplashId);
|
||||||
public bool HasAllMembers => MemberCount == DownloadedMemberCount;// _downloaderPromise.Task.IsCompleted;
|
public bool HasAllMembers => MemberCount == DownloadedMemberCount;// _downloaderPromise.Task.IsCompleted;
|
||||||
@@ -62,6 +61,10 @@ namespace Discord.WebSocket
|
|||||||
public Task SyncPromise => _syncPromise.Task;
|
public Task SyncPromise => _syncPromise.Task;
|
||||||
public Task DownloaderPromise => _downloaderPromise.Task;
|
public Task DownloaderPromise => _downloaderPromise.Task;
|
||||||
public IAudioClient AudioClient => _audioClient;
|
public IAudioClient AudioClient => _audioClient;
|
||||||
|
public SocketTextChannel DefaultChannel => TextChannels
|
||||||
|
.Where(c => CurrentUser.GetPermissions(c).ReadMessages)
|
||||||
|
.OrderBy(c => c.Position)
|
||||||
|
.FirstOrDefault();
|
||||||
public SocketVoiceChannel AFKChannel
|
public SocketVoiceChannel AFKChannel
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@@ -606,7 +609,7 @@ namespace Discord.WebSocket
|
|||||||
ulong? IGuild.AFKChannelId => AFKChannelId;
|
ulong? IGuild.AFKChannelId => AFKChannelId;
|
||||||
IAudioClient IGuild.AudioClient => null;
|
IAudioClient IGuild.AudioClient => null;
|
||||||
bool IGuild.Available => true;
|
bool IGuild.Available => true;
|
||||||
ulong IGuild.DefaultChannelId => Id;
|
ulong IGuild.DefaultChannelId => DefaultChannel?.Id ?? 0;
|
||||||
ulong? IGuild.EmbedChannelId => EmbedChannelId;
|
ulong? IGuild.EmbedChannelId => EmbedChannelId;
|
||||||
IRole IGuild.EveryoneRole => EveryoneRole;
|
IRole IGuild.EveryoneRole => EveryoneRole;
|
||||||
IReadOnlyCollection<IRole> IGuild.Roles => Roles;
|
IReadOnlyCollection<IRole> IGuild.Roles => Roles;
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ namespace Discord
|
|||||||
var text5 = textChannels.Where(x => x.Name == "text5").FirstOrDefault();
|
var text5 = textChannels.Where(x => x.Name == "text5").FirstOrDefault();
|
||||||
|
|
||||||
Assert.NotNull(text1);
|
Assert.NotNull(text1);
|
||||||
Assert.True(text1.Id == guild.DefaultChannelId);
|
//Assert.True(text1.Id == guild.DefaultChannelId);
|
||||||
Assert.Equal(text1.Position, 1);
|
Assert.Equal(text1.Position, 1);
|
||||||
Assert.Equal(text1.Topic, "Topic1");
|
Assert.Equal(text1.Topic, "Topic1");
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ namespace Discord
|
|||||||
|
|
||||||
foreach (var channel in textChannels)
|
foreach (var channel in textChannels)
|
||||||
{
|
{
|
||||||
if (channel.Id != guild.DefaultChannelId)
|
//if (channel.Id != guild.DefaultChannelId)
|
||||||
await channel.DeleteAsync();
|
await channel.DeleteAsync();
|
||||||
}
|
}
|
||||||
foreach (var channel in voiceChannels)
|
foreach (var channel in voiceChannels)
|
||||||
|
|||||||
Reference in New Issue
Block a user