| @@ -17,14 +17,24 @@ namespace Discord | |||||
| string Name { get; } | string Name { get; } | ||||
| /// <summary> | /// <summary> | ||||
| /// Gets a collection of all users in this channel. | |||||
| /// Gets a collection of users that are able to view the channel or are currently in this channel. | |||||
| /// </summary> | /// </summary> | ||||
| /// <remarks> | |||||
| /// <note type="important"> | |||||
| /// The returned collection is an asynchronous enumerable object; one must call | |||||
| /// <see cref="AsyncEnumerableExtensions.FlattenAsync{T}"/> to access the individual messages as a | |||||
| /// collection. | |||||
| /// </note> | |||||
| /// This method will attempt to fetch all users that is able to view this channel or is currently in this channel. | |||||
| /// The library will attempt to split up the requests according to and <see cref="DiscordConfig.MaxUsersPerBatch"/>. | |||||
| /// In other words, if there are 3000 users, and the <see cref="Discord.DiscordConfig.MaxUsersPerBatch"/> constant | |||||
| /// is <c>1000</c>, the request will be split into 3 individual requests; thus returning 53individual asynchronous | |||||
| /// responses, hence the need of flattening. | |||||
| /// </remarks> | |||||
| /// <param name="mode">The <see cref="CacheMode"/> that determines whether the object should be fetched from cache.</param> | /// <param name="mode">The <see cref="CacheMode"/> that determines whether the object should be fetched from cache.</param> | ||||
| /// <param name="options">The options to be used when sending the request.</param> | /// <param name="options">The options to be used when sending the request.</param> | ||||
| /// <returns> | /// <returns> | ||||
| /// A paged collection containing a collection of users that can access this channel. Flattening the | |||||
| /// paginated response into a collection of users with | |||||
| /// <see cref="AsyncEnumerableExtensions.FlattenAsync{T}"/> is required if you wish to access the users. | |||||
| /// Paged collection of users. | |||||
| /// </returns> | /// </returns> | ||||
| IAsyncEnumerable<IReadOnlyCollection<IUser>> GetUsersAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); | IAsyncEnumerable<IReadOnlyCollection<IUser>> GetUsersAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); | ||||
| @@ -132,14 +132,16 @@ namespace Discord | |||||
| Task AddPermissionOverwriteAsync(IUser user, OverwritePermissions permissions, RequestOptions options = null); | Task AddPermissionOverwriteAsync(IUser user, OverwritePermissions permissions, RequestOptions options = null); | ||||
| /// <summary> | /// <summary> | ||||
| /// Gets a collection of users that are able to view the channel. | |||||
| /// Gets a collection of users that are able to view the channel or are currently in this channel. | |||||
| /// </summary> | /// </summary> | ||||
| /// <remarks> | |||||
| /// This method follows the same behavior as described in <see cref="IChannel.GetUsersAsync"/>. | |||||
| /// Please visit its documentation for more details on this method. | |||||
| /// </remarks> | |||||
| /// <param name="mode">The <see cref="CacheMode" /> that determines whether the object should be fetched from cache.</param> | /// <param name="mode">The <see cref="CacheMode" /> that determines whether the object should be fetched from cache.</param> | ||||
| /// <param name="options">The options to be used when sending the request.</param> | /// <param name="options">The options to be used when sending the request.</param> | ||||
| /// <returns> | /// <returns> | ||||
| /// A paged collection containing a collection of guild users that can access this channel. Flattening the | |||||
| /// paginated response into a collection of users with | |||||
| /// <see cref="AsyncEnumerableExtensions.FlattenAsync{T}"/> is required if you wish to access the users. | |||||
| /// Paged collection of users. | |||||
| /// </returns> | /// </returns> | ||||
| new IAsyncEnumerable<IReadOnlyCollection<IGuildUser>> GetUsersAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); | new IAsyncEnumerable<IReadOnlyCollection<IGuildUser>> GetUsersAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); | ||||
| /// <summary> | /// <summary> | ||||
| @@ -5,6 +5,11 @@ using System.Threading.Tasks; | |||||
| namespace Discord | namespace Discord | ||||
| { | { | ||||
| /// <summary> An extension class for squashing <see cref="IAsyncEnumerable{T}"/>. </summary> | /// <summary> An extension class for squashing <see cref="IAsyncEnumerable{T}"/>. </summary> | ||||
| /// <remarks> | |||||
| /// This set of extension methods will squash an <see cref="IAsyncEnumerable{T}"/> into a | |||||
| /// single <see cref="IEnumerable{T}"/>. This is often associated with requests that has a | |||||
| /// set limit when requesting. | |||||
| /// </remarks> | |||||
| public static class AsyncEnumerableExtensions | public static class AsyncEnumerableExtensions | ||||
| { | { | ||||
| /// <summary> Flattens the specified pages into one <see cref="IEnumerable{T}"/> asynchronously. </summary> | /// <summary> Flattens the specified pages into one <see cref="IEnumerable{T}"/> asynchronously. </summary> | ||||