diff --git a/Discord.Net.sln b/Discord.Net.sln
index bac38366c..1c32308ff 100644
--- a/Discord.Net.sln
+++ b/Discord.Net.sln
@@ -26,6 +26,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Net", "src\Discord.
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Net.Commands", "src\Discord.Net.Commands.Net45\Discord.Net.Commands.csproj", "{1B5603B4-6F8F-4289-B945-7BAAE523D740}"
EndProject
+Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Discord.Net.Modules", "src\Discord.Net.Modules\Discord.Net.Modules.xproj", "{01584E8A-78DA-486F-9EF9-A894E435841B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Net.Modules", "src\Discord.Net.Modules.Net45\Discord.Net.Modules.csproj", "{3091164F-66AE-4543-A63D-167C1116241D}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -63,6 +67,18 @@ Global
{1B5603B4-6F8F-4289-B945-7BAAE523D740}.FullDebug|Any CPU.Build.0 = Debug|Any CPU
{1B5603B4-6F8F-4289-B945-7BAAE523D740}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1B5603B4-6F8F-4289-B945-7BAAE523D740}.Release|Any CPU.Build.0 = Release|Any CPU
+ {01584E8A-78DA-486F-9EF9-A894E435841B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {01584E8A-78DA-486F-9EF9-A894E435841B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {01584E8A-78DA-486F-9EF9-A894E435841B}.FullDebug|Any CPU.ActiveCfg = Debug|Any CPU
+ {01584E8A-78DA-486F-9EF9-A894E435841B}.FullDebug|Any CPU.Build.0 = Debug|Any CPU
+ {01584E8A-78DA-486F-9EF9-A894E435841B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {01584E8A-78DA-486F-9EF9-A894E435841B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3091164F-66AE-4543-A63D-167C1116241D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3091164F-66AE-4543-A63D-167C1116241D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3091164F-66AE-4543-A63D-167C1116241D}.FullDebug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3091164F-66AE-4543-A63D-167C1116241D}.FullDebug|Any CPU.Build.0 = Debug|Any CPU
+ {3091164F-66AE-4543-A63D-167C1116241D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3091164F-66AE-4543-A63D-167C1116241D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -75,5 +91,7 @@ Global
{855D6B1D-847B-42DA-BE6A-23683EA89511} = {6317A2E6-8E36-4C3E-949B-3F10EC888AB9}
{8D71A857-879A-4A10-859E-5FF824ED6688} = {DF03D4E8-38F6-4FE1-BC52-E38124BE8AFD}
{1B5603B4-6F8F-4289-B945-7BAAE523D740} = {DF03D4E8-38F6-4FE1-BC52-E38124BE8AFD}
+ {01584E8A-78DA-486F-9EF9-A894E435841B} = {EA68EBE2-51C8-4440-9EF7-D633C90A5D35}
+ {3091164F-66AE-4543-A63D-167C1116241D} = {DF03D4E8-38F6-4FE1-BC52-E38124BE8AFD}
EndGlobalSection
EndGlobal
diff --git a/src/Discord.Net.Commands.Net45/Properties/AssemblyInfo.cs b/src/Discord.Net.Commands.Net45/Properties/AssemblyInfo.cs
index e242053d8..c9652a642 100644
--- a/src/Discord.Net.Commands.Net45/Properties/AssemblyInfo.cs
+++ b/src/Discord.Net.Commands.Net45/Properties/AssemblyInfo.cs
@@ -13,6 +13,6 @@ using System.Runtime.InteropServices;
[assembly: ComVisible(false)]
[assembly: Guid("76ea00e6-ea24-41e1-acb2-639c0313fa80")]
-[assembly: AssemblyVersion("0.8.0.0")]
-[assembly: AssemblyFileVersion("0.8.0.0")]
+[assembly: AssemblyVersion("0.8.1.0")]
+[assembly: AssemblyFileVersion("0.8.1.0")]
diff --git a/src/Discord.Net.Commands/project.json b/src/Discord.Net.Commands/project.json
index aac273d4e..259f9606a 100644
--- a/src/Discord.Net.Commands/project.json
+++ b/src/Discord.Net.Commands/project.json
@@ -1,5 +1,5 @@
{
- "version": "0.8.0-beta1",
+ "version": "0.8.1-beta1",
"description": "A Discord.Net extension adding basic command support.",
"authors": [ "RogueException" ],
"tags": [ "discord", "discordapp" ],
@@ -13,7 +13,7 @@
"warningsAsErrors": true
},
"dependencies": {
- "Discord.Net": "0.8.0-beta1"
+ "Discord.Net": "0.8.1-beta1"
},
"frameworks": {
"net45": { },
diff --git a/src/Discord.Net.Modules.Net45/Discord.Net.Modules.csproj b/src/Discord.Net.Modules.Net45/Discord.Net.Modules.csproj
new file mode 100644
index 000000000..4bc5bf376
--- /dev/null
+++ b/src/Discord.Net.Modules.Net45/Discord.Net.Modules.csproj
@@ -0,0 +1,56 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {3091164F-66AE-4543-A63D-167C1116241D}
+ Library
+ Properties
+ Discord
+ Discord.Net.Commands
+ 512
+ v4.5
+ False
+
+
+ true
+ full
+ false
+ bin\Debug\
+ TRACE;DEBUG;NET45
+ prompt
+ 4
+ 6
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE;NET45
+ prompt
+ 4
+ true
+ 6
+
+
+
+
+
+
+
+
+
+ {8d71a857-879a-4a10-859e-5ff824ed6688}
+ Discord.Net
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Discord.Net.Modules.Net45/Properties/AssemblyInfo.cs b/src/Discord.Net.Modules.Net45/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..f61c1c991
--- /dev/null
+++ b/src/Discord.Net.Modules.Net45/Properties/AssemblyInfo.cs
@@ -0,0 +1,18 @@
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("Discord.Net.Modules")]
+[assembly: AssemblyDescription("A Discord.Net extension adding basic plugin support.")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("RogueException")]
+[assembly: AssemblyProduct("Discord.Net.Modules")]
+[assembly: AssemblyCopyright("Copyright © 2015")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+[assembly: ComVisible(false)]
+[assembly: Guid("76ea00e6-ea24-41e1-acb2-639c0313fa80")]
+
+[assembly: AssemblyVersion("0.8.1.0")]
+[assembly: AssemblyFileVersion("0.8.1.0")]
+
diff --git a/src/Discord.Net.Modules/Discord.Net.Modules.xproj b/src/Discord.Net.Modules/Discord.Net.Modules.xproj
new file mode 100644
index 000000000..f6db54ed1
--- /dev/null
+++ b/src/Discord.Net.Modules/Discord.Net.Modules.xproj
@@ -0,0 +1,21 @@
+
+
+
+ 14.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+
+
+
+ 01584e8a-78da-486f-9ef9-a894e435841b
+ Discord
+ ..\..\artifacts\obj\$(MSBuildProjectName)
+ ..\..\artifacts\bin\$(MSBuildProjectName)\
+
+
+ 2.0
+
+
+ True
+
+
+
\ No newline at end of file
diff --git a/src/Discord.Net.Modules/project.json b/src/Discord.Net.Modules/project.json
new file mode 100644
index 000000000..9f71ee00c
--- /dev/null
+++ b/src/Discord.Net.Modules/project.json
@@ -0,0 +1,22 @@
+{
+ "version": "0.8.1-beta1",
+ "description": "A Discord.Net extension adding basic plugin support.",
+ "authors": [ "RogueException" ],
+ "tags": [ "discord", "discordapp" ],
+ "projectUrl": "https://github.com/RogueException/Discord.Net",
+ "licenseUrl": "http://opensource.org/licenses/MIT",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/RogueException/Discord.Net"
+ },
+ "compilationOptions": {
+ "warningsAsErrors": true
+ },
+ "dependencies": {
+ "Discord.Net": "0.8.1-beta1"
+ },
+ "frameworks": {
+ "net45": { },
+ "dnx451": { }
+ }
+}
diff --git a/src/Discord.Net.Net45/Properties/AssemblyInfo.cs b/src/Discord.Net.Net45/Properties/AssemblyInfo.cs
index 857ea2201..2825ff2a9 100644
--- a/src/Discord.Net.Net45/Properties/AssemblyInfo.cs
+++ b/src/Discord.Net.Net45/Properties/AssemblyInfo.cs
@@ -13,5 +13,5 @@ using System.Runtime.InteropServices;
[assembly: ComVisible(false)]
[assembly: Guid("76ea00e6-ea24-41e1-acb2-639c0313fa80")]
-[assembly: AssemblyVersion("0.8.0")]
-[assembly: AssemblyFileVersion("0.8.0")]
+[assembly: AssemblyVersion("0.8.1.0")]
+[assembly: AssemblyFileVersion("0.8.1.0")]
diff --git a/src/Discord.Net/API/Members.cs b/src/Discord.Net/API/Members.cs
index 9e69390c6..1f702719e 100644
--- a/src/Discord.Net/API/Members.cs
+++ b/src/Discord.Net/API/Members.cs
@@ -92,5 +92,10 @@ namespace Discord.API
internal sealed class MemberAddEvent : MemberInfo { }
internal sealed class MemberUpdateEvent : MemberInfo { }
internal sealed class MemberRemoveEvent : MemberInfo { }
- internal sealed class MemberVoiceStateUpdateEvent : VoiceMemberInfo { }
+ internal sealed class MemberVoiceStateUpdateEvent : VoiceMemberInfo { }
+ internal sealed class MembersChunkEvent
+ {
+ [JsonProperty("members")]
+ public MemberInfo[] Members;
+ }
}
diff --git a/src/Discord.Net/API/Messages.cs b/src/Discord.Net/API/Messages.cs
index 8fc031dd1..a5edb27ec 100644
--- a/src/Discord.Net/API/Messages.cs
+++ b/src/Discord.Net/API/Messages.cs
@@ -125,6 +125,21 @@ namespace Discord.API
//Get
public sealed class GetMessagesResponse : List { }
+ //Commands
+ internal sealed class GetUsersCommand : WebSocketMessage
+ {
+ public GetUsersCommand() : base(8) { }
+ public class Data
+ {
+ [JsonProperty("guild_id")]
+ public string ServerId;
+ [JsonProperty("query")]
+ public string Query;
+ [JsonProperty("limit")]
+ public int Limit;
+ }
+ }
+
//Events
internal sealed class MessageCreateEvent : MessageInfo { }
internal sealed class MessageUpdateEvent : MessageInfo { }
diff --git a/src/Discord.Net/DiscordClient.Users.cs b/src/Discord.Net/DiscordClient.Users.cs
index 41a3f0e5d..e63fd04c1 100644
--- a/src/Discord.Net/DiscordClient.Users.cs
+++ b/src/Discord.Net/DiscordClient.Users.cs
@@ -169,7 +169,10 @@ namespace Discord
if (user == null) throw new ArgumentNullException(nameof(user));
CheckReady();
- return _api.EditUser(user.Server?.Id, user.Id, mute: mute, deaf: deaf, roles: roles.Select(x => x.Id));
+ var serverId = user.Server?.Id;
+ return _api.EditUser(serverId, user.Id,
+ mute: mute, deaf: deaf,
+ roles: roles.Select(x => x.Id).Where(x => x != serverId));
}
public Task KickUser(User user)
@@ -202,6 +205,14 @@ namespace Discord
return response.Pruned ?? 0;
}
+ /// When Config.UseLargeThreshold is enabled, running this command will request the Discord server to provide you with all offline users for a particular server.
+ public void RequestOfflineUsers(string serverId)
+ {
+ if (serverId == null) throw new ArgumentNullException(nameof(serverId));
+
+ _dataSocket.SendGetUsers(serverId);
+ }
+
public Task EditProfile(string currentPassword = "",
string username = null, string email = null, string password = null,
ImageType avatarType = ImageType.Png, byte[] avatar = null)
diff --git a/src/Discord.Net/DiscordClient.cs b/src/Discord.Net/DiscordClient.cs
index ca562a01e..f14874dee 100644
--- a/src/Discord.Net/DiscordClient.cs
+++ b/src/Discord.Net/DiscordClient.cs
@@ -418,6 +418,17 @@ namespace Discord
RaiseUserRemoved(user);
}
break;
+ case "GUILD_MEMBERS_CHUNK":
+ {
+ var data = e.Payload.ToObject(_serializer);
+ foreach (var memberData in data.Members)
+ {
+ var user = _users.GetOrAdd(memberData.User.Id, memberData.GuildId);
+ user.Update(memberData);
+ //RaiseUserAdded(user);
+ }
+ }
+ break;
//Roles
case "GUILD_ROLE_CREATE":
diff --git a/src/Discord.Net/Net/WebSockets/DataWebSocket.cs b/src/Discord.Net/Net/WebSockets/DataWebSocket.cs
index 49d368748..7e59565d7 100644
--- a/src/Discord.Net/Net/WebSockets/DataWebSocket.cs
+++ b/src/Discord.Net/Net/WebSockets/DataWebSocket.cs
@@ -27,7 +27,7 @@ namespace Discord.Net.WebSockets
msg.Payload.Token = token;
msg.Payload.Properties["$device"] = "Discord.Net";
if (_client.Config.UseLargeThreshold)
- msg.Payload.LargeThreshold = 50;
+ msg.Payload.LargeThreshold = 100;
msg.Payload.Compress = true;
QueueMessage(msg);
}
@@ -141,5 +141,11 @@ namespace Discord.Net.WebSockets
leaveVoice.Payload.ServerId = serverId;
QueueMessage(leaveVoice);
}
+ public void SendGetUsers(string serverId, string query = "", int limit = 0)
+ {
+ var getOfflineUsers = new GetUsersCommand();
+ getOfflineUsers.Payload.ServerId = serverId;
+ QueueMessage(getOfflineUsers);
+ }
}
}
diff --git a/src/Discord.Net/project.json b/src/Discord.Net/project.json
index 8a2b2e1b2..3d0b55689 100644
--- a/src/Discord.Net/project.json
+++ b/src/Discord.Net/project.json
@@ -1,5 +1,5 @@
{
- "version": "0.8.0-beta1",
+ "version": "0.8.1-beta1",
"description": "An unofficial .Net API wrapper for the Discord client.",
"authors": [
"RogueException"