Merge branch 'dev' of https://github.com/RogueException/Discord.Net into dev
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
# Discord.Net v1.0.0-dev
|
# Discord.Net v1.0.0-dev
|
||||||
[](https://www.nuget.org/packages/Discord.Net) [](https://ci.appveyor.com/project/foxbot/discord-net/) [](https://discord.gg/0SBTUU1wZTYLhAAW)
|
[](https://www.myget.org/feed/Packages/discord-net) [](https://ci.appveyor.com/project/foxbot/discord-net/) [](https://discord.gg/0SBTUU1wZTYLhAAW)
|
||||||
|
|
||||||
An unofficial .Net API Wrapper for the Discord client (http://discordapp.com).
|
An unofficial .Net API Wrapper for the Discord client (http://discordapp.com).
|
||||||
|
|
||||||
|
|||||||
@@ -892,6 +892,12 @@ namespace Discord
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (!guild.HasAllMembers)
|
||||||
|
{
|
||||||
|
await _gatewayLogger.DebugAsync("Ignored GUILD_MEMBER_UPDATE, this user has not been downloaded yet.").ConfigureAwait(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
await _gatewayLogger.WarningAsync("GUILD_MEMBER_UPDATE referenced an unknown user.").ConfigureAwait(false);
|
await _gatewayLogger.WarningAsync("GUILD_MEMBER_UPDATE referenced an unknown user.").ConfigureAwait(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -926,6 +932,12 @@ namespace Discord
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (!guild.HasAllMembers)
|
||||||
|
{
|
||||||
|
await _gatewayLogger.DebugAsync("Ignored GUILD_MEMBER_REMOVE, this user has not been downloaded yet.").ConfigureAwait(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
await _gatewayLogger.WarningAsync("GUILD_MEMBER_REMOVE referenced an unknown user.").ConfigureAwait(false);
|
await _gatewayLogger.WarningAsync("GUILD_MEMBER_REMOVE referenced an unknown user.").ConfigureAwait(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ namespace Discord
|
|||||||
public new DiscordSocketClient Discord => base.Discord as DiscordSocketClient;
|
public new DiscordSocketClient Discord => base.Discord as DiscordSocketClient;
|
||||||
public new CachedDMUser Recipient => base.Recipient as CachedDMUser;
|
public new CachedDMUser Recipient => base.Recipient as CachedDMUser;
|
||||||
public IReadOnlyCollection<ICachedUser> Members => ImmutableArray.Create<ICachedUser>(Discord.CurrentUser, Recipient);
|
public IReadOnlyCollection<ICachedUser> Members => ImmutableArray.Create<ICachedUser>(Discord.CurrentUser, Recipient);
|
||||||
IReadOnlyCollection<CachedDMUser> ICachedPrivateChannel.Recipients => ImmutableArray.Create(Recipient);
|
IReadOnlyCollection<ICachedUser> ICachedPrivateChannel.Recipients => ImmutableArray.Create(Recipient);
|
||||||
|
|
||||||
public CachedDMChannel(DiscordSocketClient discord, CachedDMUser recipient, Model model)
|
public CachedDMChannel(DiscordSocketClient discord, CachedDMUser recipient, Model model)
|
||||||
: base(discord, recipient, model)
|
: base(discord, recipient, model)
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ namespace Discord
|
|||||||
public Presence Presence { get; private set; }
|
public Presence Presence { get; private set; }
|
||||||
|
|
||||||
public new DiscordSocketClient Discord { get { throw new NotSupportedException(); } }
|
public new DiscordSocketClient Discord { get { throw new NotSupportedException(); } }
|
||||||
|
CachedGlobalUser ICachedUser.User => this;
|
||||||
|
|
||||||
public CachedGlobalUser(Model model)
|
public CachedGlobalUser(Model model)
|
||||||
: base(model)
|
: base(model)
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ using MessageModel = Discord.API.Message;
|
|||||||
using Model = Discord.API.Channel;
|
using Model = Discord.API.Channel;
|
||||||
using UserModel = Discord.API.User;
|
using UserModel = Discord.API.User;
|
||||||
using VoiceStateModel = Discord.API.VoiceState;
|
using VoiceStateModel = Discord.API.VoiceState;
|
||||||
using Discord.API;
|
|
||||||
|
|
||||||
namespace Discord
|
namespace Discord
|
||||||
{
|
{
|
||||||
@@ -20,7 +19,7 @@ namespace Discord
|
|||||||
public new DiscordSocketClient Discord => base.Discord as DiscordSocketClient;
|
public new DiscordSocketClient Discord => base.Discord as DiscordSocketClient;
|
||||||
public IReadOnlyCollection<ICachedUser> Members
|
public IReadOnlyCollection<ICachedUser> Members
|
||||||
=> _users.Select(x => x.Value as ICachedUser).Concat(ImmutableArray.Create(Discord.CurrentUser)).ToReadOnlyCollection(() => _users.Count + 1);
|
=> _users.Select(x => x.Value as ICachedUser).Concat(ImmutableArray.Create(Discord.CurrentUser)).ToReadOnlyCollection(() => _users.Count + 1);
|
||||||
public new IReadOnlyCollection<CachedDMUser> Recipients => _users.Cast<CachedDMUser>().ToReadOnlyCollection(_users);
|
public new IReadOnlyCollection<ICachedUser> Recipients => _users.Select(x => x.Value as ICachedUser).ToReadOnlyCollection(_users);
|
||||||
|
|
||||||
public CachedGroupChannel(DiscordSocketClient discord, Model model)
|
public CachedGroupChannel(DiscordSocketClient discord, Model model)
|
||||||
: base(discord, model)
|
: base(discord, model)
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
using Model = Discord.API.User;
|
using System;
|
||||||
|
using Model = Discord.API.User;
|
||||||
|
|
||||||
namespace Discord
|
namespace Discord
|
||||||
{
|
{
|
||||||
internal class CachedSelfUser : SelfUser, ICachedUser
|
internal class CachedSelfUser : SelfUser, ICachedUser
|
||||||
{
|
{
|
||||||
public new DiscordSocketClient Discord => base.Discord as DiscordSocketClient;
|
public new DiscordSocketClient Discord => base.Discord as DiscordSocketClient;
|
||||||
|
CachedGlobalUser ICachedUser.User { get { throw new NotSupportedException(); } }
|
||||||
|
|
||||||
public CachedSelfUser(DiscordSocketClient discord, Model model)
|
public CachedSelfUser(DiscordSocketClient discord, Model model)
|
||||||
: base(discord, model)
|
: base(discord, model)
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ namespace Discord
|
|||||||
{
|
{
|
||||||
internal interface ICachedPrivateChannel : ICachedChannel, IPrivateChannel
|
internal interface ICachedPrivateChannel : ICachedChannel, IPrivateChannel
|
||||||
{
|
{
|
||||||
new IReadOnlyCollection<CachedDMUser> Recipients { get; }
|
new IReadOnlyCollection<ICachedUser> Recipients { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
{
|
{
|
||||||
internal interface ICachedUser : IUser, ICachedEntity<ulong>
|
internal interface ICachedUser : IUser, ICachedEntity<ulong>
|
||||||
{
|
{
|
||||||
|
CachedGlobalUser User { get; }
|
||||||
|
|
||||||
ICachedUser Clone();
|
ICachedUser Clone();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ namespace Discord.Net.Queue
|
|||||||
}
|
}
|
||||||
catch (HttpRateLimitException ex)
|
catch (HttpRateLimitException ex)
|
||||||
{
|
{
|
||||||
//When a 429 occurs, we drop all our locks, including the ones we wanted.
|
//When a 429 occurs, we drop all our locks.
|
||||||
//This is generally safe though since 429s actually occuring should be very rare.
|
//This is generally safe though since 429s actually occuring should be very rare.
|
||||||
RequestQueueBucket bucket;
|
RequestQueueBucket bucket;
|
||||||
bool success = FindBucket(ex.BucketId, out bucket);
|
bool success = FindBucket(ex.BucketId, out bucket);
|
||||||
@@ -152,7 +152,8 @@ namespace Discord.Net.Queue
|
|||||||
if (millis <= 0 || !await _semaphore.WaitAsync(millis).ConfigureAwait(false))
|
if (millis <= 0 || !await _semaphore.WaitAsync(millis).ConfigureAwait(false))
|
||||||
throw new TimeoutException();
|
throw new TimeoutException();
|
||||||
}
|
}
|
||||||
await _semaphore.WaitAsync().ConfigureAwait(false);
|
else
|
||||||
|
await _semaphore.WaitAsync().ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
private async Task QueueExitAsync()
|
private async Task QueueExitAsync()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user