@@ -10,8 +10,8 @@ namespace Discord.API.Client.GatewaySocket | |||||
object IWebSocketMessage.Payload => this; | object IWebSocketMessage.Payload => this; | ||||
bool IWebSocketMessage.IsPrivate => false; | bool IWebSocketMessage.IsPrivate => false; | ||||
[JsonProperty("guild_id"), JsonConverter(typeof(LongStringConverter))] | |||||
public ulong GuildId { get; set; } | |||||
[JsonProperty("guild_id"), JsonConverter(typeof(LongStringArrayConverter))] | |||||
public ulong[] GuildId { get; set; } | |||||
[JsonProperty("query")] | [JsonProperty("query")] | ||||
public string Query { get; set; } | public string Query { get; set; } | ||||
[JsonProperty("limit")] | [JsonProperty("limit")] | ||||
@@ -479,12 +479,16 @@ namespace Discord | |||||
PrivateUser.Update(data.User); | PrivateUser.Update(data.User); | ||||
CurrentUser = new Profile(this, data.User.Id); | CurrentUser = new Profile(this, data.User.Id); | ||||
CurrentUser.Update(data.User); | CurrentUser.Update(data.User); | ||||
List<ulong> largeServers = new List<ulong>(); | |||||
foreach (var model in data.Guilds) | foreach (var model in data.Guilds) | ||||
{ | { | ||||
if (model.Unavailable != true) | if (model.Unavailable != true) | ||||
{ | { | ||||
var server = AddServer(model.Id); | var server = AddServer(model.Id); | ||||
server.Update(model); | server.Update(model); | ||||
if (model.IsLarge) | |||||
largeServers.Add(server.Id); | |||||
} | } | ||||
} | } | ||||
foreach (var model in data.PrivateChannels) | foreach (var model in data.PrivateChannels) | ||||
@@ -492,6 +496,7 @@ namespace Discord | |||||
var channel = AddPrivateChannel(model.Id, model.Recipient.Id); | var channel = AddPrivateChannel(model.Id, model.Recipient.Id); | ||||
channel.Update(model); | channel.Update(model); | ||||
} | } | ||||
GatewaySocket.SendRequestMembers(largeServers, "", 0); | |||||
if (Config.LogLevel >= LogSeverity.Verbose) | if (Config.LogLevel >= LogSeverity.Verbose) | ||||
{ | { | ||||
stopwatch.Stop(); | stopwatch.Stop(); | ||||
@@ -501,10 +501,6 @@ namespace Discord | |||||
var response = await Client.ClientAPI.Send(request).ConfigureAwait(false); | var response = await Client.ClientAPI.Send(request).ConfigureAwait(false); | ||||
return response.Pruned; | return response.Pruned; | ||||
} | } | ||||
/// <summary>When Config.UseLargeThreshold is enabled, running this command will request the Discord server to provide you with all offline users for this server.</summary> | |||||
public void RequestOfflineUsers() | |||||
=> Client.GatewaySocket.SendRequestMembers(Id, "", 0); | |||||
#endregion | #endregion | ||||
internal Server Clone() | internal Server Clone() | ||||
@@ -8,6 +8,7 @@ using Newtonsoft.Json.Linq; | |||||
using System; | using System; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.IO; | using System.IO; | ||||
using System.Linq; | |||||
using System.Threading; | using System.Threading; | ||||
using System.Threading.Tasks; | using System.Threading.Tasks; | ||||
@@ -179,8 +180,8 @@ namespace Discord.Net.WebSockets | |||||
}); | }); | ||||
public void SendUpdateVoice(ulong? serverId, ulong? channelId, bool isSelfMuted, bool isSelfDeafened) | public void SendUpdateVoice(ulong? serverId, ulong? channelId, bool isSelfMuted, bool isSelfDeafened) | ||||
=> QueueMessage(new UpdateVoiceCommand { GuildId = serverId, ChannelId = channelId, IsSelfMuted = isSelfMuted, IsSelfDeafened = isSelfDeafened }); | => QueueMessage(new UpdateVoiceCommand { GuildId = serverId, ChannelId = channelId, IsSelfMuted = isSelfMuted, IsSelfDeafened = isSelfDeafened }); | ||||
public void SendRequestMembers(ulong serverId, string query, int limit) | |||||
=> QueueMessage(new RequestMembersCommand { GuildId = serverId, Query = query, Limit = limit }); | |||||
public void SendRequestMembers(IEnumerable<ulong> serverId, string query, int limit) | |||||
=> QueueMessage(new RequestMembersCommand { GuildId = serverId.ToArray(), Query = query, Limit = limit }); | |||||
//Cancel if either DiscordClient.Disconnect is called, data socket errors or timeout is reached | //Cancel if either DiscordClient.Disconnect is called, data socket errors or timeout is reached | ||||
public override void WaitForConnection(CancellationToken cancelToken) | public override void WaitForConnection(CancellationToken cancelToken) | ||||