Removed Rest's VoiceChannel.GetUser(s). Added IChannel.GetUser(limit, offset)
This commit is contained in:
@@ -7,6 +7,8 @@ namespace Discord
|
|||||||
{
|
{
|
||||||
/// <summary> Gets a collection of all users in this channel. </summary>
|
/// <summary> Gets a collection of all users in this channel. </summary>
|
||||||
Task<IEnumerable<IUser>> GetUsers();
|
Task<IEnumerable<IUser>> GetUsers();
|
||||||
|
/// <summary> Gets a paginated collection of all users in this channel. </summary>
|
||||||
|
Task<IEnumerable<IUser>> GetUsers(int limit, int offset = 0);
|
||||||
/// <summary> Gets a user in this channel with the provided id.</summary>
|
/// <summary> Gets a user in this channel with the provided id.</summary>
|
||||||
Task<IUser> GetUser(ulong id);
|
Task<IUser> GetUser(ulong id);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>pdbonly</DebugType>
|
||||||
<Optimize>true</Optimize>
|
<Optimize>true</Optimize>
|
||||||
<OutputPath>bin\Release\</OutputPath>
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
<DefineConstants>TRACE;__DEMO__,__DEMO_EXPERIMENTAL__</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|||||||
@@ -131,6 +131,8 @@ namespace Discord.Rest
|
|||||||
|
|
||||||
async Task<IEnumerable<IUser>> IChannel.GetUsers()
|
async Task<IEnumerable<IUser>> IChannel.GetUsers()
|
||||||
=> await GetUsers().ConfigureAwait(false);
|
=> await GetUsers().ConfigureAwait(false);
|
||||||
|
async Task<IEnumerable<IUser>> IChannel.GetUsers(int limit, int offset)
|
||||||
|
=> (await GetUsers().ConfigureAwait(false)).Skip(offset).Take(limit);
|
||||||
async Task<IUser> IChannel.GetUser(ulong id)
|
async Task<IUser> IChannel.GetUser(ulong id)
|
||||||
=> await GetUser(id).ConfigureAwait(false);
|
=> await GetUser(id).ConfigureAwait(false);
|
||||||
Task<IMessage> IMessageChannel.GetCachedMessage(ulong id)
|
Task<IMessage> IMessageChannel.GetCachedMessage(ulong id)
|
||||||
|
|||||||
@@ -58,12 +58,7 @@ namespace Discord.Rest
|
|||||||
var model = await Discord.BaseClient.ModifyGuildChannel(Id, args).ConfigureAwait(false);
|
var model = await Discord.BaseClient.ModifyGuildChannel(Id, args).ConfigureAwait(false);
|
||||||
Update(model);
|
Update(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> Gets a user in this channel with the given id. </summary>
|
|
||||||
public abstract Task<GuildUser> GetUser(ulong id);
|
|
||||||
/// <summary> Gets all users in this channel. </summary>
|
|
||||||
public abstract Task<IEnumerable<GuildUser>> GetUsers();
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public OverwritePermissions? GetPermissionOverwrite(IUser user)
|
public OverwritePermissions? GetPermissionOverwrite(IUser user)
|
||||||
{
|
{
|
||||||
@@ -151,18 +146,24 @@ namespace Discord.Rest
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public override string ToString() => Name;
|
public override string ToString() => Name;
|
||||||
|
|
||||||
|
protected abstract Task<GuildUser> GetUserInternal(ulong id);
|
||||||
|
protected abstract Task<IEnumerable<GuildUser>> GetUsersInternal();
|
||||||
|
protected abstract Task<IEnumerable<GuildUser>> GetUsersInternal(int limit, int offset);
|
||||||
|
|
||||||
IGuild IGuildChannel.Guild => Guild;
|
IGuild IGuildChannel.Guild => Guild;
|
||||||
async Task<IInviteMetadata> IGuildChannel.CreateInvite(int? maxAge, int? maxUses, bool isTemporary, bool withXkcd)
|
async Task<IInviteMetadata> IGuildChannel.CreateInvite(int? maxAge, int? maxUses, bool isTemporary, bool withXkcd)
|
||||||
=> await CreateInvite(maxAge, maxUses, isTemporary, withXkcd).ConfigureAwait(false);
|
=> await CreateInvite(maxAge, maxUses, isTemporary, withXkcd).ConfigureAwait(false);
|
||||||
async Task<IEnumerable<IInviteMetadata>> IGuildChannel.GetInvites()
|
async Task<IEnumerable<IInviteMetadata>> IGuildChannel.GetInvites()
|
||||||
=> await GetInvites().ConfigureAwait(false);
|
=> await GetInvites().ConfigureAwait(false);
|
||||||
async Task<IEnumerable<IGuildUser>> IGuildChannel.GetUsers()
|
async Task<IEnumerable<IGuildUser>> IGuildChannel.GetUsers()
|
||||||
=> await GetUsers().ConfigureAwait(false);
|
=> await GetUsersInternal().ConfigureAwait(false);
|
||||||
async Task<IGuildUser> IGuildChannel.GetUser(ulong id)
|
|
||||||
=> await GetUser(id).ConfigureAwait(false);
|
|
||||||
async Task<IEnumerable<IUser>> IChannel.GetUsers()
|
async Task<IEnumerable<IUser>> IChannel.GetUsers()
|
||||||
=> await GetUsers().ConfigureAwait(false);
|
=> await GetUsersInternal().ConfigureAwait(false);
|
||||||
|
async Task<IEnumerable<IUser>> IChannel.GetUsers(int limit, int offset)
|
||||||
|
=> await GetUsersInternal(limit, offset).ConfigureAwait(false);
|
||||||
|
async Task<IGuildUser> IGuildChannel.GetUser(ulong id)
|
||||||
|
=> await GetUserInternal(id).ConfigureAwait(false);
|
||||||
async Task<IUser> IChannel.GetUser(ulong id)
|
async Task<IUser> IChannel.GetUser(ulong id)
|
||||||
=> await GetUser(id).ConfigureAwait(false);
|
=> await GetUserInternal(id).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,19 +39,27 @@ namespace Discord.Rest
|
|||||||
Update(model);
|
Update(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async Task<GuildUser> GetUser(ulong id)
|
/// <summary> Gets a user in this channel with the given id. </summary>
|
||||||
|
public async Task<GuildUser> GetUser(ulong id)
|
||||||
{
|
{
|
||||||
var user = await Guild.GetUser(id).ConfigureAwait(false);
|
var user = await Guild.GetUser(id).ConfigureAwait(false);
|
||||||
if (user != null && Permissions.GetValue(Permissions.ResolveChannel(user, this, user.GuildPermissions.RawValue), ChannelPermission.ReadMessages))
|
if (user != null && Permissions.GetValue(Permissions.ResolveChannel(user, this, user.GuildPermissions.RawValue), ChannelPermission.ReadMessages))
|
||||||
return user;
|
return user;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
public override async Task<IEnumerable<GuildUser>> GetUsers()
|
/// <summary> Gets all users in this channel. </summary>
|
||||||
|
public async Task<IEnumerable<GuildUser>> GetUsers()
|
||||||
{
|
{
|
||||||
var users = await Guild.GetUsers().ConfigureAwait(false);
|
var users = await Guild.GetUsers().ConfigureAwait(false);
|
||||||
return users.Where(x => Permissions.GetValue(Permissions.ResolveChannel(x, this, x.GuildPermissions.RawValue), ChannelPermission.ReadMessages));
|
return users.Where(x => Permissions.GetValue(Permissions.ResolveChannel(x, this, x.GuildPermissions.RawValue), ChannelPermission.ReadMessages));
|
||||||
}
|
}
|
||||||
|
/// <summary> Gets a paginated collection of users in this channel. </summary>
|
||||||
|
public async Task<IEnumerable<GuildUser>> GetUsers(int limit, int offset)
|
||||||
|
{
|
||||||
|
var users = await Guild.GetUsers(limit, offset).ConfigureAwait(false);
|
||||||
|
return users.Where(x => Permissions.GetValue(Permissions.ResolveChannel(x, this, x.GuildPermissions.RawValue), ChannelPermission.ReadMessages));
|
||||||
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public async Task<IEnumerable<Message>> GetMessages(int limit = DiscordConfig.MaxMessagesPerBatch)
|
public async Task<IEnumerable<Message>> GetMessages(int limit = DiscordConfig.MaxMessagesPerBatch)
|
||||||
{
|
{
|
||||||
@@ -107,6 +115,11 @@ namespace Discord.Rest
|
|||||||
|
|
||||||
private string DebuggerDisplay => $"{Name} ({Id}, Text)";
|
private string DebuggerDisplay => $"{Name} ({Id}, Text)";
|
||||||
|
|
||||||
|
|
||||||
|
protected override Task<GuildUser> GetUserInternal(ulong id) => GetUser(id);
|
||||||
|
protected override Task<IEnumerable<GuildUser>> GetUsersInternal() => GetUsers();
|
||||||
|
protected override Task<IEnumerable<GuildUser>> GetUsersInternal(int limit, int offset) => GetUsers(limit, offset);
|
||||||
|
|
||||||
IEnumerable<IMessage> IMessageChannel.CachedMessages => Array.Empty<Message>();
|
IEnumerable<IMessage> IMessageChannel.CachedMessages => Array.Empty<Message>();
|
||||||
|
|
||||||
Task<IMessage> IMessageChannel.GetCachedMessage(ulong id)
|
Task<IMessage> IMessageChannel.GetCachedMessage(ulong id)
|
||||||
|
|||||||
@@ -34,8 +34,9 @@ namespace Discord.Rest
|
|||||||
Update(model);
|
Update(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Task<GuildUser> GetUser(ulong id) { throw new NotSupportedException(); }
|
protected override Task<GuildUser> GetUserInternal(ulong id) { throw new NotSupportedException(); }
|
||||||
public override Task<IEnumerable<GuildUser>> GetUsers() { throw new NotSupportedException(); }
|
protected override Task<IEnumerable<GuildUser>> GetUsersInternal() { throw new NotSupportedException(); }
|
||||||
|
protected override Task<IEnumerable<GuildUser>> GetUsersInternal(int limit, int offset) { throw new NotSupportedException(); }
|
||||||
|
|
||||||
private string DebuggerDisplay => $"{Name} ({Id}, Voice)";
|
private string DebuggerDisplay => $"{Name} ({Id}, Voice)";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,6 +124,8 @@ namespace Discord.WebSocket
|
|||||||
|
|
||||||
Task<IEnumerable<IUser>> IChannel.GetUsers()
|
Task<IEnumerable<IUser>> IChannel.GetUsers()
|
||||||
=> Task.FromResult(Users);
|
=> Task.FromResult(Users);
|
||||||
|
Task<IEnumerable<IUser>> IChannel.GetUsers(int limit, int offset)
|
||||||
|
=> Task.FromResult(Users.Skip(offset).Take(limit));
|
||||||
Task<IUser> IChannel.GetUser(ulong id)
|
Task<IUser> IChannel.GetUser(ulong id)
|
||||||
=> Task.FromResult(GetUser(id));
|
=> Task.FromResult(GetUser(id));
|
||||||
Task<IMessage> IMessageChannel.GetCachedMessage(ulong id)
|
Task<IMessage> IMessageChannel.GetCachedMessage(ulong id)
|
||||||
|
|||||||
@@ -147,6 +147,8 @@ namespace Discord.WebSocket
|
|||||||
=> Task.FromResult<IGuildUser>(GetUser(id));
|
=> Task.FromResult<IGuildUser>(GetUser(id));
|
||||||
Task<IEnumerable<IUser>> IChannel.GetUsers()
|
Task<IEnumerable<IUser>> IChannel.GetUsers()
|
||||||
=> Task.FromResult<IEnumerable<IUser>>(Users);
|
=> Task.FromResult<IEnumerable<IUser>>(Users);
|
||||||
|
Task<IEnumerable<IUser>> IChannel.GetUsers(int limit, int offset)
|
||||||
|
=> Task.FromResult<IEnumerable<IUser>>(Users.Skip(offset).Take(limit));
|
||||||
Task<IUser> IChannel.GetUser(ulong id)
|
Task<IUser> IChannel.GetUser(ulong id)
|
||||||
=> Task.FromResult<IUser>(GetUser(id));
|
=> Task.FromResult<IUser>(GetUser(id));
|
||||||
Task IUpdateable.Update()
|
Task IUpdateable.Update()
|
||||||
|
|||||||
Reference in New Issue
Block a user