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"