Fix usage of CacheMode.AllowDownload in channels (#2154)
Co-Authored-By: ✨ <25006819+sabihoshi@users.noreply.github.com> Co-authored-by: ✨ <25006819+sabihoshi@users.noreply.github.com>
This commit is contained in:
@@ -21,7 +21,7 @@ namespace Discord
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// <note type="important">
|
/// <note type="important">
|
||||||
/// The returned collection is an asynchronous enumerable object; one must call
|
/// The returned collection is an asynchronous enumerable object; one must call
|
||||||
/// <see cref="AsyncEnumerableExtensions.FlattenAsync{T}"/> to access the individual messages as a
|
/// <see cref="AsyncEnumerableExtensions.FlattenAsync{T}"/> to access the individual messages as a
|
||||||
/// collection.
|
/// collection.
|
||||||
/// </note>
|
/// </note>
|
||||||
|
|||||||
@@ -227,7 +227,7 @@ namespace Discord.Rest
|
|||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
IAsyncEnumerable<IReadOnlyCollection<IGuildUser>> IGuildChannel.GetUsersAsync(CacheMode mode, RequestOptions options)
|
IAsyncEnumerable<IReadOnlyCollection<IGuildUser>> IGuildChannel.GetUsersAsync(CacheMode mode, RequestOptions options)
|
||||||
=> AsyncEnumerable.Empty<IReadOnlyCollection<IGuildUser>>(); //Overridden //Overridden in Text/Voice
|
=> AsyncEnumerable.Empty<IReadOnlyCollection<IGuildUser>>(); //Overridden in Text/Voice
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
Task<IGuildUser> IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
Task<IGuildUser> IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||||
=> Task.FromResult<IGuildUser>(null); //Overridden in Text/Voice
|
=> Task.FromResult<IGuildUser>(null); //Overridden in Text/Voice
|
||||||
|
|||||||
@@ -261,7 +261,7 @@ namespace Discord.Rest
|
|||||||
/// The duration on which this thread archives after.
|
/// The duration on which this thread archives after.
|
||||||
/// <para>
|
/// <para>
|
||||||
/// <b>Note: </b> Options <see cref="ThreadArchiveDuration.OneWeek"/> and <see cref="ThreadArchiveDuration.ThreeDays"/>
|
/// <b>Note: </b> Options <see cref="ThreadArchiveDuration.OneWeek"/> and <see cref="ThreadArchiveDuration.ThreeDays"/>
|
||||||
/// are only available for guilds that are boosted. You can check in the <see cref="IGuild.Features"/> to see if the
|
/// are only available for guilds that are boosted. You can check in the <see cref="IGuild.Features"/> to see if the
|
||||||
/// guild has the <b>THREE_DAY_THREAD_ARCHIVE</b> and <b>SEVEN_DAY_THREAD_ARCHIVE</b>.
|
/// guild has the <b>THREE_DAY_THREAD_ARCHIVE</b> and <b>SEVEN_DAY_THREAD_ARCHIVE</b>.
|
||||||
/// </para>
|
/// </para>
|
||||||
/// </param>
|
/// </param>
|
||||||
@@ -364,10 +364,9 @@ namespace Discord.Rest
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
IAsyncEnumerable<IReadOnlyCollection<IGuildUser>> IGuildChannel.GetUsersAsync(CacheMode mode, RequestOptions options)
|
IAsyncEnumerable<IReadOnlyCollection<IGuildUser>> IGuildChannel.GetUsersAsync(CacheMode mode, RequestOptions options)
|
||||||
{
|
{
|
||||||
if (mode == CacheMode.AllowDownload)
|
return mode == CacheMode.AllowDownload
|
||||||
return GetUsersAsync(options);
|
? GetUsersAsync(options)
|
||||||
else
|
: AsyncEnumerable.Empty<IReadOnlyCollection<IGuildUser>>();
|
||||||
return AsyncEnumerable.Empty<IReadOnlyCollection<IGuildUser>>();
|
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|||||||
@@ -209,7 +209,7 @@ namespace Discord.WebSocket
|
|||||||
/// Sets the <paramref name="activity"/> of the logged-in user.
|
/// Sets the <paramref name="activity"/> of the logged-in user.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// This method sets the <paramref name="activity"/> of the user.
|
/// This method sets the <paramref name="activity"/> of the user.
|
||||||
/// <note type="note">
|
/// <note type="note">
|
||||||
/// Discord will only accept setting of name and the type of activity.
|
/// Discord will only accept setting of name and the type of activity.
|
||||||
/// </note>
|
/// </note>
|
||||||
@@ -219,7 +219,7 @@ namespace Discord.WebSocket
|
|||||||
/// </note>
|
/// </note>
|
||||||
/// <note type="warning">
|
/// <note type="warning">
|
||||||
/// Rich Presence cannot be set via this method or client. Rich Presence is strictly limited to RPC
|
/// Rich Presence cannot be set via this method or client. Rich Presence is strictly limited to RPC
|
||||||
/// clients only.
|
/// clients only.
|
||||||
/// </note>
|
/// </note>
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
/// <param name="activity">The activity to be set.</param>
|
/// <param name="activity">The activity to be set.</param>
|
||||||
@@ -240,7 +240,7 @@ namespace Discord.WebSocket
|
|||||||
/// Creates a guild for the logged-in user who is in less than 10 active guilds.
|
/// Creates a guild for the logged-in user who is in less than 10 active guilds.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// This method creates a new guild on behalf of the logged-in user.
|
/// This method creates a new guild on behalf of the logged-in user.
|
||||||
/// <note type="warning">
|
/// <note type="warning">
|
||||||
/// Due to Discord's limitation, this method will only work for users that are in less than 10 guilds.
|
/// Due to Discord's limitation, this method will only work for users that are in less than 10 guilds.
|
||||||
/// </note>
|
/// </note>
|
||||||
@@ -317,8 +317,15 @@ namespace Discord.WebSocket
|
|||||||
=> await CreateGuildAsync(name, region, jpegIcon, options).ConfigureAwait(false);
|
=> await CreateGuildAsync(name, region, jpegIcon, options).ConfigureAwait(false);
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
Task<IUser> IDiscordClient.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
async Task<IUser> IDiscordClient.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||||
=> Task.FromResult<IUser>(GetUser(id));
|
{
|
||||||
|
var user = GetUser(id);
|
||||||
|
if (user is not null || mode == CacheMode.CacheOnly)
|
||||||
|
return user;
|
||||||
|
|
||||||
|
return await Rest.GetUserAsync(id, options).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
Task<IUser> IDiscordClient.GetUserAsync(string username, string discriminator, RequestOptions options)
|
Task<IUser> IDiscordClient.GetUserAsync(string username, string discriminator, RequestOptions options)
|
||||||
=> Task.FromResult<IUser>(GetUser(username, discriminator));
|
=> Task.FromResult<IUser>(GetUser(username, discriminator));
|
||||||
|
|||||||
@@ -533,8 +533,15 @@ namespace Discord.WebSocket
|
|||||||
=> await CreateGuildAsync(name, region, jpegIcon).ConfigureAwait(false);
|
=> await CreateGuildAsync(name, region, jpegIcon).ConfigureAwait(false);
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
Task<IUser> IDiscordClient.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
async Task<IUser> IDiscordClient.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||||
=> Task.FromResult<IUser>(GetUser(id));
|
{
|
||||||
|
var user = GetUser(id);
|
||||||
|
if (user is not null || mode == CacheMode.CacheOnly)
|
||||||
|
return user;
|
||||||
|
|
||||||
|
return await Rest.GetUserAsync(id, options).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
Task<IUser> IDiscordClient.GetUserAsync(string username, string discriminator, RequestOptions options)
|
Task<IUser> IDiscordClient.GetUserAsync(string username, string discriminator, RequestOptions options)
|
||||||
=> Task.FromResult<IUser>(GetUser(username, discriminator));
|
=> Task.FromResult<IUser>(GetUser(username, discriminator));
|
||||||
|
|||||||
@@ -543,7 +543,7 @@ namespace Discord.WebSocket
|
|||||||
if(model == null)
|
if(model == null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
|
||||||
if (model.GuildId.IsSpecified)
|
if (model.GuildId.IsSpecified)
|
||||||
{
|
{
|
||||||
var guild = State.GetGuild(model.GuildId.Value);
|
var guild = State.GetGuild(model.GuildId.Value);
|
||||||
@@ -2128,7 +2128,7 @@ namespace Discord.WebSocket
|
|||||||
{
|
{
|
||||||
await TimedInvokeAsync(_speakerRemoved, nameof(SpeakerRemoved), stage, guildUser);
|
await TimedInvokeAsync(_speakerRemoved, nameof(SpeakerRemoved), stage, guildUser);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await TimedInvokeAsync(_userVoiceStateUpdatedEvent, nameof(UserVoiceStateUpdated), user, before, after).ConfigureAwait(false);
|
await TimedInvokeAsync(_userVoiceStateUpdatedEvent, nameof(UserVoiceStateUpdated), user, before, after).ConfigureAwait(false);
|
||||||
@@ -2520,7 +2520,7 @@ namespace Discord.WebSocket
|
|||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case "THREAD_MEMBERS_UPDATE":
|
case "THREAD_MEMBERS_UPDATE":
|
||||||
{
|
{
|
||||||
await _gatewayLogger.DebugAsync("Received Dispatch (THREAD_MEMBERS_UPDATE)").ConfigureAwait(false);
|
await _gatewayLogger.DebugAsync("Received Dispatch (THREAD_MEMBERS_UPDATE)").ConfigureAwait(false);
|
||||||
|
|
||||||
@@ -3113,7 +3113,14 @@ namespace Discord.WebSocket
|
|||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
async Task<IUser> IDiscordClient.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
async Task<IUser> IDiscordClient.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||||
=> mode == CacheMode.AllowDownload ? await GetUserAsync(id, options).ConfigureAwait(false) : GetUser(id);
|
{
|
||||||
|
var user = GetUser(id);
|
||||||
|
if (user is not null || mode == CacheMode.CacheOnly)
|
||||||
|
return user;
|
||||||
|
|
||||||
|
return await Rest.GetUserAsync(id, options).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
Task<IUser> IDiscordClient.GetUserAsync(string username, string discriminator, RequestOptions options)
|
Task<IUser> IDiscordClient.GetUserAsync(string username, string discriminator, RequestOptions options)
|
||||||
=> Task.FromResult<IUser>(GetUser(username, discriminator));
|
=> Task.FromResult<IUser>(GetUser(username, discriminator));
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using System.Collections.Immutable;
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Discord.Rest;
|
||||||
using Model = Discord.API.Channel;
|
using Model = Discord.API.Channel;
|
||||||
|
|
||||||
namespace Discord.WebSocket
|
namespace Discord.WebSocket
|
||||||
@@ -64,21 +65,44 @@ namespace Discord.WebSocket
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region IGuildChannel
|
#region IGuildChannel
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
IAsyncEnumerable<IReadOnlyCollection<IGuildUser>> IGuildChannel.GetUsersAsync(CacheMode mode, RequestOptions options)
|
IAsyncEnumerable<IReadOnlyCollection<IGuildUser>> IGuildChannel.GetUsersAsync(CacheMode mode,
|
||||||
=> ImmutableArray.Create<IReadOnlyCollection<IGuildUser>>(Users).ToAsyncEnumerable();
|
RequestOptions options)
|
||||||
|
{
|
||||||
|
return mode == CacheMode.AllowDownload
|
||||||
|
? ChannelHelper.GetUsersAsync(this, Guild, Discord, null, null, options)
|
||||||
|
: ImmutableArray.Create<IReadOnlyCollection<IGuildUser>>(Users).ToAsyncEnumerable();
|
||||||
|
}
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
Task<IGuildUser> IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
async Task<IGuildUser> IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||||
=> Task.FromResult<IGuildUser>(GetUser(id));
|
{
|
||||||
|
var user = GetUser(id);
|
||||||
|
if (user is not null || mode == CacheMode.CacheOnly)
|
||||||
|
return user;
|
||||||
|
|
||||||
|
return await ChannelHelper.GetUserAsync(this, Guild, Discord, id, options).ConfigureAwait(false);
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region IChannel
|
#region IChannel
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
IAsyncEnumerable<IReadOnlyCollection<IUser>> IChannel.GetUsersAsync(CacheMode mode, RequestOptions options)
|
IAsyncEnumerable<IReadOnlyCollection<IUser>> IChannel.GetUsersAsync(CacheMode mode, RequestOptions options)
|
||||||
=> ImmutableArray.Create<IReadOnlyCollection<IUser>>(Users).ToAsyncEnumerable();
|
{
|
||||||
|
return mode == CacheMode.AllowDownload
|
||||||
|
? ChannelHelper.GetUsersAsync(this, Guild, Discord, null, null, options)
|
||||||
|
: ImmutableArray.Create<IReadOnlyCollection<IGuildUser>>(Users).ToAsyncEnumerable();
|
||||||
|
}
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
Task<IUser> IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
async Task<IUser> IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||||
=> Task.FromResult<IUser>(GetUser(id));
|
{
|
||||||
|
var user = GetUser(id);
|
||||||
|
if (user is not null || mode == CacheMode.CacheOnly)
|
||||||
|
return user;
|
||||||
|
|
||||||
|
return await ChannelHelper.GetUserAsync(this, Guild, Discord, id, options).ConfigureAwait(false);
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -352,7 +352,7 @@ namespace Discord.WebSocket
|
|||||||
Task IAudioChannel.ModifyAsync(Action<AudioChannelProperties> func, RequestOptions options) { throw new NotSupportedException(); }
|
Task IAudioChannel.ModifyAsync(Action<AudioChannelProperties> func, RequestOptions options) { throw new NotSupportedException(); }
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region IChannel
|
#region IChannel
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
Task<IUser> IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
Task<IUser> IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||||
=> Task.FromResult<IUser>(GetUser(id));
|
=> Task.FromResult<IUser>(GetUser(id));
|
||||||
|
|||||||
@@ -214,10 +214,10 @@ namespace Discord.WebSocket
|
|||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
IAsyncEnumerable<IReadOnlyCollection<IGuildUser>> IGuildChannel.GetUsersAsync(CacheMode mode, RequestOptions options)
|
IAsyncEnumerable<IReadOnlyCollection<IGuildUser>> IGuildChannel.GetUsersAsync(CacheMode mode, RequestOptions options)
|
||||||
=> ImmutableArray.Create<IReadOnlyCollection<IGuildUser>>(Users).ToAsyncEnumerable();
|
=> ImmutableArray.Create<IReadOnlyCollection<IGuildUser>>(Users).ToAsyncEnumerable(); //Overridden in Text/Voice
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
Task<IGuildUser> IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
Task<IGuildUser> IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||||
=> Task.FromResult<IGuildUser>(GetUser(id));
|
=> Task.FromResult<IGuildUser>(GetUser(id)); //Overridden in Text/Voice
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region IChannel
|
#region IChannel
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ namespace Discord.WebSocket
|
|||||||
/// The duration on which this thread archives after.
|
/// The duration on which this thread archives after.
|
||||||
/// <para>
|
/// <para>
|
||||||
/// <b>Note: </b> Options <see cref="ThreadArchiveDuration.OneWeek"/> and <see cref="ThreadArchiveDuration.ThreeDays"/>
|
/// <b>Note: </b> Options <see cref="ThreadArchiveDuration.OneWeek"/> and <see cref="ThreadArchiveDuration.ThreeDays"/>
|
||||||
/// are only available for guilds that are boosted. You can check in the <see cref="IGuild.Features"/> to see if the
|
/// are only available for guilds that are boosted. You can check in the <see cref="IGuild.Features"/> to see if the
|
||||||
/// guild has the <b>THREE_DAY_THREAD_ARCHIVE</b> and <b>SEVEN_DAY_THREAD_ARCHIVE</b>.
|
/// guild has the <b>THREE_DAY_THREAD_ARCHIVE</b> and <b>SEVEN_DAY_THREAD_ARCHIVE</b>.
|
||||||
/// </para>
|
/// </para>
|
||||||
/// </param>
|
/// </param>
|
||||||
@@ -355,11 +355,22 @@ namespace Discord.WebSocket
|
|||||||
|
|
||||||
#region IGuildChannel
|
#region IGuildChannel
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
Task<IGuildUser> IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
async Task<IGuildUser> IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||||
=> Task.FromResult<IGuildUser>(GetUser(id));
|
{
|
||||||
|
var user = GetUser(id);
|
||||||
|
if (user is not null || mode == CacheMode.CacheOnly)
|
||||||
|
return user;
|
||||||
|
|
||||||
|
return await ChannelHelper.GetUserAsync(this, Guild, Discord, id, options).ConfigureAwait(false);
|
||||||
|
}
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
IAsyncEnumerable<IReadOnlyCollection<IGuildUser>> IGuildChannel.GetUsersAsync(CacheMode mode, RequestOptions options)
|
IAsyncEnumerable<IReadOnlyCollection<IGuildUser>> IGuildChannel.GetUsersAsync(CacheMode mode, RequestOptions options)
|
||||||
=> ImmutableArray.Create<IReadOnlyCollection<IGuildUser>>(Users).ToAsyncEnumerable();
|
{
|
||||||
|
return mode == CacheMode.AllowDownload
|
||||||
|
? ChannelHelper.GetUsersAsync(this, Guild, Discord, null, null, options)
|
||||||
|
: ImmutableArray.Create<IReadOnlyCollection<IGuildUser>>(Users).ToAsyncEnumerable();
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region IMessageChannel
|
#region IMessageChannel
|
||||||
|
|||||||
@@ -372,7 +372,7 @@ namespace Discord.WebSocket
|
|||||||
/// This field is based off of caching alone, since there is no events returned on the guild model.
|
/// This field is based off of caching alone, since there is no events returned on the guild model.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
/// <returns>
|
/// <returns>
|
||||||
/// A read-only collection of guild events found within this guild.
|
/// A read-only collection of guild events found within this guild.
|
||||||
/// </returns>
|
/// </returns>
|
||||||
public IReadOnlyCollection<SocketGuildEvent> Events => _events.ToReadOnlyCollection();
|
public IReadOnlyCollection<SocketGuildEvent> Events => _events.ToReadOnlyCollection();
|
||||||
|
|
||||||
@@ -1928,8 +1928,15 @@ namespace Discord.WebSocket
|
|||||||
async Task<IGuildUser> IGuild.AddGuildUserAsync(ulong userId, string accessToken, Action<AddGuildUserProperties> func, RequestOptions options)
|
async Task<IGuildUser> IGuild.AddGuildUserAsync(ulong userId, string accessToken, Action<AddGuildUserProperties> func, RequestOptions options)
|
||||||
=> await AddGuildUserAsync(userId, accessToken, func, options);
|
=> await AddGuildUserAsync(userId, accessToken, func, options);
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
Task<IGuildUser> IGuild.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
async Task<IGuildUser> IGuild.GetUserAsync(ulong id, CacheMode mode, RequestOptions options)
|
||||||
=> Task.FromResult<IGuildUser>(GetUser(id));
|
{
|
||||||
|
var user = GetUser(id);
|
||||||
|
if (user is not null || mode == CacheMode.CacheOnly)
|
||||||
|
return user;
|
||||||
|
|
||||||
|
return await GuildHelper.GetUserAsync(this, Discord, id, options).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
Task<IGuildUser> IGuild.GetCurrentUserAsync(CacheMode mode, RequestOptions options)
|
Task<IGuildUser> IGuild.GetCurrentUserAsync(CacheMode mode, RequestOptions options)
|
||||||
=> Task.FromResult<IGuildUser>(CurrentUser);
|
=> Task.FromResult<IGuildUser>(CurrentUser);
|
||||||
|
|||||||
Reference in New Issue
Block a user