diff --git a/.gitignore b/.gitignore
index ccd272109..45e5e009d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -202,4 +202,7 @@ project.lock.json
/docs/_build
*.pyc
/.editorconfig
-.vscode/
\ No newline at end of file
+.vscode/
+docs/api/\.manifest
+
+\.idea/
diff --git a/Discord.Net.sln b/Discord.Net.sln
index 6308b4444..a63606787 100644
--- a/Discord.Net.sln
+++ b/Discord.Net.sln
@@ -1,7 +1,6 @@
-
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
-VisualStudioVersion = 15.0.26014.0
+VisualStudioVersion = 15.0.26228.4
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Core", "src\Discord.Net.Core\Discord.Net.Core.csproj", "{91E9E7BD-75C9-4E98-84AA-2C271922E5C2}"
EndProject
@@ -19,15 +18,11 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Providers", "Providers", "{
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Providers.WS4Net", "src\Discord.Net.Providers.WS4Net\Discord.Net.Providers.WS4Net.csproj", "{6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Providers.UdpClient", "src\Discord.Net.Providers.UdpClient\Discord.Net.Providers.UdpClient.csproj", "{ABC9F4B9-2452-4725-B522-754E0A02E282}"
-EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extensions", "Extensions", "{CC3D4B1C-9DE0-448B-8AE7-F3F1F3EC5C3A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Tests", "test\Discord.Net.Tests\Discord.Net.Tests.csproj", "{C38E5BC1-11CB-4101-8A38-5B40A1BC6433}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{F66D75C0-E304-46E0-9C3A-294F340DB37D}"
-EndProject
-Project("{13B669BE-BB05-4DDF-9536-439F39A36129}") = "Discord.Net.Relay", "src\Discord.Net.Relay\Discord.Net.Relay.csproj", "{2705FCB3-68C9-4CEB-89CC-01F8EC80512B}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Webhook", "src\Discord.Net.Webhook\Discord.Net.Webhook.csproj", "{9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -41,16 +36,16 @@ Global
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Debug|x64.ActiveCfg = Debug|x64
- {91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Debug|x64.Build.0 = Debug|x64
- {91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Debug|x86.ActiveCfg = Debug|x86
- {91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Debug|x86.Build.0 = Debug|x86
+ {91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Debug|x64.Build.0 = Debug|Any CPU
+ {91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Debug|x86.Build.0 = Debug|Any CPU
{91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Release|Any CPU.Build.0 = Release|Any CPU
- {91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Release|x64.ActiveCfg = Release|x64
- {91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Release|x64.Build.0 = Release|x64
- {91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Release|x86.ActiveCfg = Release|x86
- {91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Release|x86.Build.0 = Release|x86
+ {91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Release|x64.ActiveCfg = Release|Any CPU
+ {91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Release|x64.Build.0 = Release|Any CPU
+ {91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Release|x86.ActiveCfg = Release|Any CPU
+ {91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Release|x86.Build.0 = Release|Any CPU
{BFC6DC28-0351-4573-926A-D4124244C04F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BFC6DC28-0351-4573-926A-D4124244C04F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BFC6DC28-0351-4573-926A-D4124244C04F}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -89,76 +84,52 @@ Global
{078DD7E6-943D-4D09-AFC2-D2BA58B76C9C}.Release|x86.Build.0 = Debug|Any CPU
{688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Debug|x64.ActiveCfg = Debug|x64
- {688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Debug|x64.Build.0 = Debug|x64
- {688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Debug|x86.ActiveCfg = Debug|x86
- {688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Debug|x86.Build.0 = Debug|x86
+ {688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Debug|x64.Build.0 = Debug|Any CPU
+ {688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Debug|x86.Build.0 = Debug|Any CPU
{688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Release|Any CPU.Build.0 = Release|Any CPU
- {688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Release|x64.ActiveCfg = Release|x64
- {688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Release|x64.Build.0 = Release|x64
- {688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Release|x86.ActiveCfg = Release|x86
- {688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Release|x86.Build.0 = Release|x86
+ {688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Release|x64.ActiveCfg = Release|Any CPU
+ {688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Release|x64.Build.0 = Release|Any CPU
+ {688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Release|x86.ActiveCfg = Release|Any CPU
+ {688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Release|x86.Build.0 = Release|Any CPU
{6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Debug|x64.ActiveCfg = Debug|x64
- {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Debug|x64.Build.0 = Debug|x64
- {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Debug|x86.ActiveCfg = Debug|x86
- {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Debug|x86.Build.0 = Debug|x86
+ {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Debug|x64.Build.0 = Debug|Any CPU
+ {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Debug|x86.Build.0 = Debug|Any CPU
{6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Release|Any CPU.Build.0 = Release|Any CPU
- {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Release|x64.ActiveCfg = Release|x64
- {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Release|x64.Build.0 = Release|x64
- {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Release|x86.ActiveCfg = Release|x86
- {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Release|x86.Build.0 = Release|x86
- {547261FC-8BA3-40EA-A040-A38ABDAA8D72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {547261FC-8BA3-40EA-A040-A38ABDAA8D72}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {547261FC-8BA3-40EA-A040-A38ABDAA8D72}.Debug|x64.ActiveCfg = Debug|x64
- {547261FC-8BA3-40EA-A040-A38ABDAA8D72}.Debug|x64.Build.0 = Debug|x64
- {547261FC-8BA3-40EA-A040-A38ABDAA8D72}.Debug|x86.ActiveCfg = Debug|x86
- {547261FC-8BA3-40EA-A040-A38ABDAA8D72}.Debug|x86.Build.0 = Debug|x86
- {547261FC-8BA3-40EA-A040-A38ABDAA8D72}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {547261FC-8BA3-40EA-A040-A38ABDAA8D72}.Release|Any CPU.Build.0 = Release|Any CPU
- {547261FC-8BA3-40EA-A040-A38ABDAA8D72}.Release|x64.ActiveCfg = Release|x64
- {547261FC-8BA3-40EA-A040-A38ABDAA8D72}.Release|x64.Build.0 = Release|x64
- {547261FC-8BA3-40EA-A040-A38ABDAA8D72}.Release|x86.ActiveCfg = Release|x86
- {547261FC-8BA3-40EA-A040-A38ABDAA8D72}.Release|x86.Build.0 = Release|x86
- {ABC9F4B9-2452-4725-B522-754E0A02E282}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {ABC9F4B9-2452-4725-B522-754E0A02E282}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {ABC9F4B9-2452-4725-B522-754E0A02E282}.Debug|x64.ActiveCfg = Debug|x64
- {ABC9F4B9-2452-4725-B522-754E0A02E282}.Debug|x64.Build.0 = Debug|x64
- {ABC9F4B9-2452-4725-B522-754E0A02E282}.Debug|x86.ActiveCfg = Debug|x86
- {ABC9F4B9-2452-4725-B522-754E0A02E282}.Debug|x86.Build.0 = Debug|x86
- {ABC9F4B9-2452-4725-B522-754E0A02E282}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {ABC9F4B9-2452-4725-B522-754E0A02E282}.Release|Any CPU.Build.0 = Release|Any CPU
- {ABC9F4B9-2452-4725-B522-754E0A02E282}.Release|x64.ActiveCfg = Release|x64
- {ABC9F4B9-2452-4725-B522-754E0A02E282}.Release|x64.Build.0 = Release|x64
- {ABC9F4B9-2452-4725-B522-754E0A02E282}.Release|x86.ActiveCfg = Release|x86
- {ABC9F4B9-2452-4725-B522-754E0A02E282}.Release|x86.Build.0 = Release|x86
+ {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Release|x64.ActiveCfg = Release|Any CPU
+ {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Release|x64.Build.0 = Release|Any CPU
+ {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Release|x86.ActiveCfg = Release|Any CPU
+ {6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7}.Release|x86.Build.0 = Release|Any CPU
{C38E5BC1-11CB-4101-8A38-5B40A1BC6433}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C38E5BC1-11CB-4101-8A38-5B40A1BC6433}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C38E5BC1-11CB-4101-8A38-5B40A1BC6433}.Debug|x64.ActiveCfg = Debug|x64
- {C38E5BC1-11CB-4101-8A38-5B40A1BC6433}.Debug|x64.Build.0 = Debug|x64
- {C38E5BC1-11CB-4101-8A38-5B40A1BC6433}.Debug|x86.ActiveCfg = Debug|x86
- {C38E5BC1-11CB-4101-8A38-5B40A1BC6433}.Debug|x86.Build.0 = Debug|x86
+ {C38E5BC1-11CB-4101-8A38-5B40A1BC6433}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {C38E5BC1-11CB-4101-8A38-5B40A1BC6433}.Debug|x64.Build.0 = Debug|Any CPU
+ {C38E5BC1-11CB-4101-8A38-5B40A1BC6433}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C38E5BC1-11CB-4101-8A38-5B40A1BC6433}.Debug|x86.Build.0 = Debug|Any CPU
{C38E5BC1-11CB-4101-8A38-5B40A1BC6433}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C38E5BC1-11CB-4101-8A38-5B40A1BC6433}.Release|Any CPU.Build.0 = Release|Any CPU
- {C38E5BC1-11CB-4101-8A38-5B40A1BC6433}.Release|x64.ActiveCfg = Release|x64
- {C38E5BC1-11CB-4101-8A38-5B40A1BC6433}.Release|x64.Build.0 = Release|x64
- {C38E5BC1-11CB-4101-8A38-5B40A1BC6433}.Release|x86.ActiveCfg = Release|x86
- {C38E5BC1-11CB-4101-8A38-5B40A1BC6433}.Release|x86.Build.0 = Release|x86
- {2705FCB3-68C9-4CEB-89CC-01F8EC80512B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {2705FCB3-68C9-4CEB-89CC-01F8EC80512B}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {2705FCB3-68C9-4CEB-89CC-01F8EC80512B}.Debug|x64.ActiveCfg = Debug|x64
- {2705FCB3-68C9-4CEB-89CC-01F8EC80512B}.Debug|x64.Build.0 = Debug|x64
- {2705FCB3-68C9-4CEB-89CC-01F8EC80512B}.Debug|x86.ActiveCfg = Debug|x86
- {2705FCB3-68C9-4CEB-89CC-01F8EC80512B}.Debug|x86.Build.0 = Debug|x86
- {2705FCB3-68C9-4CEB-89CC-01F8EC80512B}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {2705FCB3-68C9-4CEB-89CC-01F8EC80512B}.Release|Any CPU.Build.0 = Release|Any CPU
- {2705FCB3-68C9-4CEB-89CC-01F8EC80512B}.Release|x64.ActiveCfg = Release|x64
- {2705FCB3-68C9-4CEB-89CC-01F8EC80512B}.Release|x64.Build.0 = Release|x64
- {2705FCB3-68C9-4CEB-89CC-01F8EC80512B}.Release|x86.ActiveCfg = Release|x86
- {2705FCB3-68C9-4CEB-89CC-01F8EC80512B}.Release|x86.Build.0 = Release|x86
+ {C38E5BC1-11CB-4101-8A38-5B40A1BC6433}.Release|x64.ActiveCfg = Release|Any CPU
+ {C38E5BC1-11CB-4101-8A38-5B40A1BC6433}.Release|x64.Build.0 = Release|Any CPU
+ {C38E5BC1-11CB-4101-8A38-5B40A1BC6433}.Release|x86.ActiveCfg = Release|Any CPU
+ {C38E5BC1-11CB-4101-8A38-5B40A1BC6433}.Release|x86.Build.0 = Release|Any CPU
+ {9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Debug|x64.Build.0 = Debug|Any CPU
+ {9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Debug|x86.Build.0 = Debug|Any CPU
+ {9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Release|x64.ActiveCfg = Release|Any CPU
+ {9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Release|x64.Build.0 = Release|Any CPU
+ {9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Release|x86.ActiveCfg = Release|Any CPU
+ {9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -169,7 +140,6 @@ Global
{078DD7E6-943D-4D09-AFC2-D2BA58B76C9C} = {CC3D4B1C-9DE0-448B-8AE7-F3F1F3EC5C3A}
{688FD1D8-7F01-4539-B2E9-F473C5D699C7} = {288C363D-A636-4EAE-9AC1-4698B641B26E}
{6BDEEC08-417B-459F-9CA3-FF8BAB18CAC7} = {B0657AAE-DCC5-4FBF-8E5D-1FB578CF3012}
- {ABC9F4B9-2452-4725-B522-754E0A02E282} = {B0657AAE-DCC5-4FBF-8E5D-1FB578CF3012}
- {2705FCB3-68C9-4CEB-89CC-01F8EC80512B} = {F66D75C0-E304-46E0-9C3A-294F340DB37D}
+ {9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30} = {CC3D4B1C-9DE0-448B-8AE7-F3F1F3EC5C3A}
EndGlobalSection
EndGlobal
diff --git a/Discord.Net.targets b/Discord.Net.targets
new file mode 100644
index 000000000..6dc4bb140
--- /dev/null
+++ b/Discord.Net.targets
@@ -0,0 +1,31 @@
+
+
+ 1.0.1
+
+ RogueException
+ discord;discordapp
+ https://github.com/RogueException/Discord.Net
+ http://opensource.org/licenses/MIT
+ git
+ git://github.com/RogueException/Discord.Net
+
+
+ $(VersionSuffix)-dev
+ dev
+
+
+ $(VersionSuffix)-$(BuildNumber)
+ build-$(BuildNumber)
+
+
+ $(DefineConstants);FILESYSTEM;DEFAULTUDPCLIENT;DEFAULTWEBSOCKET
+
+
+ $(DefineConstants);FORMATSTR;UNIXTIME;MSTRYBUFFER;UDPDISPOSE
+
+
+ $(NoWarn);CS1573;CS1591
+ true
+ true
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index 903fa76c1..2b58d4579 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,5 @@
-# Discord.Net v1.0.0-rc
+# Discord.Net
+[](https://www.nuget.org/packages/Discord.Net)
[](https://www.myget.org/feed/Packages/discord-net)
[](https://ci.appveyor.com/project/RogueException/discord-net/branch/dev)
[](https://discord.gg/0SBTUU1wZTVjAMPx)
@@ -13,13 +14,13 @@ Our stable builds available from NuGet through the Discord.Net metapackage:
- [Discord.Net](https://www.nuget.org/packages/Discord.Net/)
The individual components may also be installed from NuGet:
+- [Discord.Net.Commands](https://www.nuget.org/packages/Discord.Net.Commands/)
- [Discord.Net.Rest](https://www.nuget.org/packages/Discord.Net.Rest/)
- [Discord.Net.Rpc](https://www.nuget.org/packages/Discord.Net.Rpc/)
- [Discord.Net.WebSocket](https://www.nuget.org/packages/Discord.Net.WebSocket/)
-- [Discord.Net.Commands](https://www.nuget.org/packages/Discord.Net.Commands/)
+- [Discord.Net.Webhook](https://www.nuget.org/packages/Discord.Net.Webhook/)
-The following providers are available for platforms not supporting .NET Standard 1.3:
-- [Discord.Net.Providers.UdpClient](https://www.nuget.org/packages/Discord.Net.Providers.UdpClient/)
+The following provider is available for platforms not supporting .NET Standard 1.3:
- [Discord.Net.Providers.WS4Net](https://www.nuget.org/packages/Discord.Net.Providers.WS4Net/)
### Unstable (MyGet)
@@ -29,13 +30,13 @@ Nightly builds are available through our MyGet feed (`https://www.myget.org/F/di
In order to compile Discord.Net, you require the following:
### Using Visual Studio
-- [Visual Studio 2017 RC](https://www.microsoft.com/net/core#windowsvs2017)
-- [.NET Core SDK 1.0 RC3](https://github.com/dotnet/core/blob/master/release-notes/rc3-download.md)
+- [Visual Studio 2017](https://www.microsoft.com/net/core#windowsvs2017)
+- [.NET Core SDK](https://www.microsoft.com/net/download/core)
-The .NET Core and Docker (Preview) workload is required during Visual Studio installation.
+The .NET Core workload must be selected during Visual Studio installation.
### Using Command Line
-- [.NET Core SDK 1.0 RC3](https://github.com/dotnet/core/blob/master/release-notes/rc3-download.md)
+- [.NET Core SDK](https://www.microsoft.com/net/download/core)
## Known Issues
diff --git a/appveyor.yml b/appveyor.yml
new file mode 100644
index 000000000..d94e2ad68
--- /dev/null
+++ b/appveyor.yml
@@ -0,0 +1,61 @@
+version: build-{build}
+branches:
+ only:
+ - dev
+image: Visual Studio 2017
+
+nuget:
+ disable_publish_on_pr: true
+pull_requests:
+ do_not_increment_build_number: true
+clone_folder: C:\Projects\Discord.Net
+cache: test/Discord.Net.Tests/cache.db
+
+environment:
+ DOTNET_CLI_TELEMETRY_OPTOUT: 1
+ DNET_TEST_TOKEN:
+ secure: l7h5e7UE7yRd70hAB97kjPiQpPOShwqoBbOzEAYQ+XBd/Pre5OA33IXa3uisdUeQJP/nPFhcOsI+yn7WpuFaoQ==
+ DNET_TEST_GUILDID: 273160668180381696
+init:
+- ps: $Env:BUILD = "$($Env:APPVEYOR_BUILD_NUMBER.PadLeft(5, "0"))"
+
+build_script:
+- ps: appveyor-retry dotnet restore Discord.Net.sln -v Minimal /p:BuildNumber="$Env:BUILD" /p:IsTagBuild="$Env:APPVEYOR_REPO_TAG"
+- ps: dotnet build Discord.Net.sln -c "Release" /p:BuildNumber="$Env:BUILD" /p:IsTagBuild="$Env:APPVEYOR_REPO_TAG"
+after_build:
+- ps: dotnet pack "src\Discord.Net.Core\Discord.Net.Core.csproj" -c "Release" -o "../../artifacts" --no-build /p:BuildNumber="$Env:BUILD" /p:IsTagBuild="$Env:APPVEYOR_REPO_TAG"
+- ps: dotnet pack "src\Discord.Net.Rest\Discord.Net.Rest.csproj" -c "Release" -o "../../artifacts" --no-build /p:BuildNumber="$Env:BUILD" /p:IsTagBuild="$Env:APPVEYOR_REPO_TAG"
+- ps: dotnet pack "src\Discord.Net.WebSocket\Discord.Net.WebSocket.csproj" -c "Release" -o "../../artifacts" --no-build /p:BuildNumber="$Env:BUILD" /p:IsTagBuild="$Env:APPVEYOR_REPO_TAG"
+- ps: dotnet pack "src\Discord.Net.Rpc\Discord.Net.Rpc.csproj" -c "Release" -o "../../artifacts" --no-build /p:BuildNumber="$Env:BUILD" /p:IsTagBuild="$Env:APPVEYOR_REPO_TAG"
+- ps: dotnet pack "src\Discord.Net.Commands\Discord.Net.Commands.csproj" -c "Release" -o "../../artifacts" --no-build /p:BuildNumber="$Env:BUILD" /p:IsTagBuild="$Env:APPVEYOR_REPO_TAG"
+- ps: dotnet pack "src\Discord.Net.Webhook\Discord.Net.Webhook.csproj" -c "Release" -o "../../artifacts" --no-build /p:BuildNumber="$Env:BUILD" /p:IsTagBuild="$Env:APPVEYOR_REPO_TAG"
+- ps: dotnet pack "src\Discord.Net.Providers.WS4Net\Discord.Net.Providers.WS4Net.csproj" -c "Release" -o "../../artifacts" --no-build /p:BuildNumber="$Env:BUILD" /p:IsTagBuild="$Env:APPVEYOR_REPO_TAG"
+- ps: >-
+ if ($Env:APPVEYOR_REPO_TAG -eq "true") {
+ nuget pack src\Discord.Net\Discord.Net.nuspec -OutputDirectory "artifacts" -properties suffix=""
+ } else {
+ nuget pack src\Discord.Net\Discord.Net.nuspec -OutputDirectory "artifacts" -properties suffix="-build-$Env:BUILD"
+ }
+- ps: Get-ChildItem artifacts\*.nupkg | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
+
+test_script:
+- ps: >-
+ if ($APPVEYOR_PULL_REQUEST_NUMBER -eq "") {
+ dotnet test test/Discord.Net.Tests/Discord.Net.Tests.csproj -c "Release" --no-build /p:BuildNumber="$Env:BUILD" /p:IsTagBuild="$Env:APPVEYOR_REPO_TAG"
+ }
+
+deploy:
+- provider: NuGet
+ server: https://www.myget.org/F/discord-net/api/v2/package
+ api_key:
+ secure: Jl7BXeUjRnkVHDMBuUWSXcEOkrli1PBleW2IiLyUs5j63UNUNp1hcjaUJRujx9lz
+ symbol_server: https://www.myget.org/F/discord-net/symbols/api/v2/package
+ on:
+ branch: dev
+- provider: NuGet
+ server: https://www.myget.org/F/rogueexception/api/v2/package
+ api_key:
+ secure: D+vW2O2LBf/iJb4f+q8fkyIW2VdIYIGxSYLWNrOD4BHlDBZQlJipDbNarWjUr2Kn
+ symbol_server: https://www.myget.org/F/rogueexception/symbols/api/v2/package
+ on:
+ branch: dev
\ No newline at end of file
diff --git a/build.ps1 b/build.ps1
deleted file mode 100644
index 08508bbcf..000000000
--- a/build.ps1
+++ /dev/null
@@ -1,4 +0,0 @@
-appveyor-retry dotnet restore Discord.Net.sln -v Minimal /p:BuildNumber="$Env:BUILD"
-if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
-dotnet build Discord.Net.sln -c "Release" /p:BuildNumber="$Env:BUILD"
-if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
\ No newline at end of file
diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md
index f19e7c297..296b6d1cb 100644
--- a/docs/CONTRIBUTING.md
+++ b/docs/CONTRIBUTING.md
@@ -1,15 +1,46 @@
# Contributing to Docs
-I don't really have any strict conditions for writing documentation, but just keep these few guidelines in mind:
+I don't really have any strict conditions for writing documentation,
+but just keep these few guidelines in mind:
* Keep code samples in the `guides/samples` folder
-* When referencing an object in the API, link to it's page in the API documentation.
+* When referencing an object in the API, link to it's page in the
+API documentation.
* Documentation should be written in clear and proper English*
-\* If anyone is interested in translating documentation into other languages, please open an issue or contact me on Discord (`foxbot#0282`).
+\* If anyone is interested in translating documentation into other
+languages, please open an issue or contact me on
+Discord (`foxbot#0282`).
+
+### Layout
+
+Documentation should be written in a FAQ/Wiki style format.
+
+Recommended reads:
+
+* http://docs.microsoft.com
+* http://flask.pocoo.org/docs/0.12/
+
+Style consistencies:
+
+* Use a ruler set at 70 characters
+* Links should use long syntax
+* Pages should be short and concise, not broad and long
+
+Example of long link syntax:
+
+```
+Please consult the [API Documentation] for more information.
+
+[API Documentation]: xref:System.String
+```
### Compiling
-Documentation is compiled into a static site using [DocFx](https://dotnet.github.io/docfx/). We currently use version 2.8
+Documentation is compiled into a static site using [DocFx].
+We currently use the most recent build off the dev branch.
+
+After making changes, compile your changes into the static site with
+`docfx`. You can also view your changes live with `docfx --serve`.
-After making changes, compile your changes into the static site with `docfx`. You can also view your changes live with `docfx --serve`.
\ No newline at end of file
+[DocFx]: https://dotnet.github.io/docfx/
\ No newline at end of file
diff --git a/docs/api/.manifest b/docs/api/.manifest
deleted file mode 100644
index 0a47304c4..000000000
--- a/docs/api/.manifest
+++ /dev/null
@@ -1 +0,0 @@
-{"Discord.Rpc":"Discord.Rpc.yml","Discord.Rpc.DiscordRpcClient":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.ConnectionState":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.Scopes":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.TokenExpiresAt":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.CurrentUser":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.ApplicationInfo":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.#ctor(System.String,System.String)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.#ctor(System.String,System.String,Discord.Rpc.DiscordRpcConfig)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.ConnectAsync":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.DisconnectAsync":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.AuthorizeAsync(System.String[],System.String,RequestOptions)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.SubscribeGlobal(Discord.Rpc.RpcGlobalEvent,RequestOptions)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.UnsubscribeGlobal(Discord.Rpc.RpcGlobalEvent,RequestOptions)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.SubscribeGuild(System.UInt64,Discord.Rpc.RpcChannelEvent,RequestOptions)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.UnsubscribeGuild(System.UInt64,Discord.Rpc.RpcChannelEvent,RequestOptions)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.SubscribeChannel(System.UInt64,Discord.Rpc.RpcChannelEvent,RequestOptions)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.UnsubscribeChannel(System.UInt64,Discord.Rpc.RpcChannelEvent,RequestOptions)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.GetRpcGuildAsync(System.UInt64,RequestOptions)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.GetRpcGuildsAsync(RequestOptions)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.GetRpcChannelAsync(System.UInt64,RequestOptions)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.GetRpcChannelsAsync(System.UInt64,RequestOptions)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.SelectTextChannelAsync(IChannel,RequestOptions)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.SelectTextChannelAsync(Discord.Rpc.RpcChannelSummary,RequestOptions)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.SelectTextChannelAsync(System.UInt64,RequestOptions)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.SelectVoiceChannelAsync(IChannel,System.Boolean,RequestOptions)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.SelectVoiceChannelAsync(Discord.Rpc.RpcChannelSummary,System.Boolean,RequestOptions)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.SelectVoiceChannelAsync(System.UInt64,System.Boolean,RequestOptions)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.GetVoiceSettingsAsync(RequestOptions)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.SetVoiceSettingsAsync(Action{Discord.Rpc.VoiceProperties},RequestOptions)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.SetUserVoiceSettingsAsync(System.UInt64,Action{Discord.Rpc.UserVoiceProperties},RequestOptions)":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.Connected":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.Disconnected":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.Ready":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.ChannelCreated":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.GuildCreated":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.GuildStatusUpdated":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.VoiceStateCreated":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.VoiceStateUpdated":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.VoiceStateDeleted":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.SpeakingStarted":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.SpeakingStopped":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.VoiceSettingsUpdated":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.MessageReceived":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.MessageUpdated":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcClient.MessageDeleted":"Discord.Rpc.DiscordRpcClient.yml","Discord.Rpc.DiscordRpcConfig":"Discord.Rpc.DiscordRpcConfig.yml","Discord.Rpc.DiscordRpcConfig.RpcAPIVersion":"Discord.Rpc.DiscordRpcConfig.yml","Discord.Rpc.DiscordRpcConfig.PortRangeStart":"Discord.Rpc.DiscordRpcConfig.yml","Discord.Rpc.DiscordRpcConfig.PortRangeEnd":"Discord.Rpc.DiscordRpcConfig.yml","Discord.Rpc.DiscordRpcConfig.ConnectionTimeout":"Discord.Rpc.DiscordRpcConfig.yml","Discord.Rpc.DiscordRpcConfig.WebSocketProvider":"Discord.Rpc.DiscordRpcConfig.yml","Discord.Rpc.DiscordRpcConfig.#ctor":"Discord.Rpc.DiscordRpcConfig.yml","Discord.Rpc.RpcChannelEvent":"Discord.Rpc.RpcChannelEvent.yml","Discord.Rpc.RpcChannelEvent.VoiceStateCreate":"Discord.Rpc.RpcChannelEvent.yml","Discord.Rpc.RpcChannelEvent.VoiceStateUpdate":"Discord.Rpc.RpcChannelEvent.yml","Discord.Rpc.RpcChannelEvent.VoiceStateDelete":"Discord.Rpc.RpcChannelEvent.yml","Discord.Rpc.RpcChannelEvent.SpeakingStart":"Discord.Rpc.RpcChannelEvent.yml","Discord.Rpc.RpcChannelEvent.SpeakingStop":"Discord.Rpc.RpcChannelEvent.yml","Discord.Rpc.RpcChannelEvent.MessageCreate":"Discord.Rpc.RpcChannelEvent.yml","Discord.Rpc.RpcChannelEvent.MessageUpdate":"Discord.Rpc.RpcChannelEvent.yml","Discord.Rpc.RpcChannelEvent.MessageDelete":"Discord.Rpc.RpcChannelEvent.yml","Discord.Rpc.RpcGlobalEvent":"Discord.Rpc.RpcGlobalEvent.yml","Discord.Rpc.RpcGlobalEvent.ChannelCreated":"Discord.Rpc.RpcGlobalEvent.yml","Discord.Rpc.RpcGlobalEvent.GuildCreated":"Discord.Rpc.RpcGlobalEvent.yml","Discord.Rpc.RpcGlobalEvent.VoiceSettingsUpdated":"Discord.Rpc.RpcGlobalEvent.yml","Discord.Rpc.RpcGuildEvent":"Discord.Rpc.RpcGuildEvent.yml","Discord.Rpc.RpcGuildEvent.GuildStatus":"Discord.Rpc.RpcGuildEvent.yml","Discord.Rpc.RpcEntity`1":"Discord.Rpc.RpcEntity-1.yml","Discord.Rpc.RpcEntity`1.Discord":"Discord.Rpc.RpcEntity-1.yml","Discord.Rpc.RpcEntity`1.Id":"Discord.Rpc.RpcEntity-1.yml","Discord.Rpc.UserVoiceProperties":"Discord.Rpc.UserVoiceProperties.yml","Discord.Rpc.UserVoiceProperties.Pan":"Discord.Rpc.UserVoiceProperties.yml","Discord.Rpc.UserVoiceProperties.Volume":"Discord.Rpc.UserVoiceProperties.yml","Discord.Rpc.UserVoiceProperties.Mute":"Discord.Rpc.UserVoiceProperties.yml","Discord.Rpc.VoiceDevice":"Discord.Rpc.VoiceDevice.yml","Discord.Rpc.VoiceDevice.Id":"Discord.Rpc.VoiceDevice.yml","Discord.Rpc.VoiceDevice.Name":"Discord.Rpc.VoiceDevice.yml","Discord.Rpc.VoiceDevice.ToString":"Discord.Rpc.VoiceDevice.yml","Discord.Rpc.VoiceDeviceProperties":"Discord.Rpc.VoiceDeviceProperties.yml","Discord.Rpc.VoiceDeviceProperties.DeviceId":"Discord.Rpc.VoiceDeviceProperties.yml","Discord.Rpc.VoiceDeviceProperties.Volume":"Discord.Rpc.VoiceDeviceProperties.yml","Discord.Rpc.VoiceDeviceProperties.AvailableDevices":"Discord.Rpc.VoiceDeviceProperties.yml","Discord.Rpc.VoiceModeProperties":"Discord.Rpc.VoiceModeProperties.yml","Discord.Rpc.VoiceModeProperties.Type":"Discord.Rpc.VoiceModeProperties.yml","Discord.Rpc.VoiceModeProperties.AutoThreshold":"Discord.Rpc.VoiceModeProperties.yml","Discord.Rpc.VoiceModeProperties.Threshold":"Discord.Rpc.VoiceModeProperties.yml","Discord.Rpc.VoiceModeProperties.Shortcut":"Discord.Rpc.VoiceModeProperties.yml","Discord.Rpc.VoiceModeProperties.Delay":"Discord.Rpc.VoiceModeProperties.yml","Discord.Rpc.VoiceProperties":"Discord.Rpc.VoiceProperties.yml","Discord.Rpc.VoiceProperties.Input":"Discord.Rpc.VoiceProperties.yml","Discord.Rpc.VoiceProperties.Output":"Discord.Rpc.VoiceProperties.yml","Discord.Rpc.VoiceProperties.Mode":"Discord.Rpc.VoiceProperties.yml","Discord.Rpc.VoiceProperties.AutomaticGainControl":"Discord.Rpc.VoiceProperties.yml","Discord.Rpc.VoiceProperties.EchoCancellation":"Discord.Rpc.VoiceProperties.yml","Discord.Rpc.VoiceProperties.NoiseSuppression":"Discord.Rpc.VoiceProperties.yml","Discord.Rpc.VoiceProperties.QualityOfService":"Discord.Rpc.VoiceProperties.yml","Discord.Rpc.VoiceProperties.SilenceWarning":"Discord.Rpc.VoiceProperties.yml","Discord.Rpc.VoiceSettings":"Discord.Rpc.VoiceSettings.yml","Discord.Rpc.VoiceSettings.InputDeviceId":"Discord.Rpc.VoiceSettings.yml","Discord.Rpc.VoiceSettings.InputVolume":"Discord.Rpc.VoiceSettings.yml","Discord.Rpc.VoiceSettings.AvailableInputDevices":"Discord.Rpc.VoiceSettings.yml","Discord.Rpc.VoiceSettings.OutputDeviceId":"Discord.Rpc.VoiceSettings.yml","Discord.Rpc.VoiceSettings.OutputVolume":"Discord.Rpc.VoiceSettings.yml","Discord.Rpc.VoiceSettings.AvailableOutputDevices":"Discord.Rpc.VoiceSettings.yml","Discord.Rpc.VoiceSettings.AutomaticGainControl":"Discord.Rpc.VoiceSettings.yml","Discord.Rpc.VoiceSettings.EchoCancellation":"Discord.Rpc.VoiceSettings.yml","Discord.Rpc.VoiceSettings.NoiseSuppression":"Discord.Rpc.VoiceSettings.yml","Discord.Rpc.VoiceSettings.QualityOfService":"Discord.Rpc.VoiceSettings.yml","Discord.Rpc.VoiceSettings.SilenceWarning":"Discord.Rpc.VoiceSettings.yml","Discord.Rpc.VoiceSettings.ActivationMode":"Discord.Rpc.VoiceSettings.yml","Discord.Rpc.VoiceSettings.AutoThreshold":"Discord.Rpc.VoiceSettings.yml","Discord.Rpc.VoiceSettings.Threshold":"Discord.Rpc.VoiceSettings.yml","Discord.Rpc.VoiceSettings.Shortcuts":"Discord.Rpc.VoiceSettings.yml","Discord.Rpc.VoiceSettings.Delay":"Discord.Rpc.VoiceSettings.yml","Discord.Rpc.VoiceShortcut":"Discord.Rpc.VoiceShortcut.yml","Discord.Rpc.VoiceShortcut.Type":"Discord.Rpc.VoiceShortcut.yml","Discord.Rpc.VoiceShortcut.Code":"Discord.Rpc.VoiceShortcut.yml","Discord.Rpc.VoiceShortcut.Name":"Discord.Rpc.VoiceShortcut.yml","Discord.Rpc.VoiceShortcut.ToString":"Discord.Rpc.VoiceShortcut.yml","Discord.Rpc.VoiceShortcutType":"Discord.Rpc.VoiceShortcutType.yml","Discord.Rpc.VoiceShortcutType.KeyboardKey":"Discord.Rpc.VoiceShortcutType.yml","Discord.Rpc.VoiceShortcutType.MouseButton":"Discord.Rpc.VoiceShortcutType.yml","Discord.Rpc.VoiceShortcutType.KeyboardModifierKey":"Discord.Rpc.VoiceShortcutType.yml","Discord.Rpc.VoiceShortcutType.GamepadButton":"Discord.Rpc.VoiceShortcutType.yml","Discord.Rpc.IRpcAudioChannel":"Discord.Rpc.IRpcAudioChannel.yml","Discord.Rpc.IRpcAudioChannel.VoiceStates":"Discord.Rpc.IRpcAudioChannel.yml","Discord.Rpc.IRpcMessageChannel":"Discord.Rpc.IRpcMessageChannel.yml","Discord.Rpc.IRpcMessageChannel.CachedMessages":"Discord.Rpc.IRpcMessageChannel.yml","Discord.Rpc.IRpcPrivateChannel":"Discord.Rpc.IRpcPrivateChannel.yml","Discord.Rpc.RpcChannel":"Discord.Rpc.RpcChannel.yml","Discord.Rpc.RpcChannel.Name":"Discord.Rpc.RpcChannel.yml","Discord.Rpc.RpcChannel.CreatedAt":"Discord.Rpc.RpcChannel.yml","Discord.Rpc.RpcChannelSummary":"Discord.Rpc.RpcChannelSummary.yml","Discord.Rpc.RpcChannelSummary.Id":"Discord.Rpc.RpcChannelSummary.yml","Discord.Rpc.RpcChannelSummary.Name":"Discord.Rpc.RpcChannelSummary.yml","Discord.Rpc.RpcChannelSummary.Type":"Discord.Rpc.RpcChannelSummary.yml","Discord.Rpc.RpcChannelSummary.ToString":"Discord.Rpc.RpcChannelSummary.yml","Discord.Rpc.RpcDMChannel":"Discord.Rpc.RpcDMChannel.yml","Discord.Rpc.RpcDMChannel.CachedMessages":"Discord.Rpc.RpcDMChannel.yml","Discord.Rpc.RpcDMChannel.CloseAsync(RequestOptions)":"Discord.Rpc.RpcDMChannel.yml","Discord.Rpc.RpcDMChannel.GetMessageAsync(System.UInt64,RequestOptions)":"Discord.Rpc.RpcDMChannel.yml","Discord.Rpc.RpcDMChannel.GetMessagesAsync(System.Int32,RequestOptions)":"Discord.Rpc.RpcDMChannel.yml","Discord.Rpc.RpcDMChannel.GetMessagesAsync(System.UInt64,Direction,System.Int32,RequestOptions)":"Discord.Rpc.RpcDMChannel.yml","Discord.Rpc.RpcDMChannel.GetMessagesAsync(IMessage,Direction,System.Int32,RequestOptions)":"Discord.Rpc.RpcDMChannel.yml","Discord.Rpc.RpcDMChannel.GetPinnedMessagesAsync(RequestOptions)":"Discord.Rpc.RpcDMChannel.yml","Discord.Rpc.RpcDMChannel.SendMessageAsync(System.String,System.Boolean,Embed,RequestOptions)":"Discord.Rpc.RpcDMChannel.yml","Discord.Rpc.RpcDMChannel.SendFileAsync(Stream,System.String,System.String,System.Boolean,RequestOptions)":"Discord.Rpc.RpcDMChannel.yml","Discord.Rpc.RpcDMChannel.DeleteMessagesAsync(IEnumerable{IMessage},RequestOptions)":"Discord.Rpc.RpcDMChannel.yml","Discord.Rpc.RpcDMChannel.TriggerTypingAsync(RequestOptions)":"Discord.Rpc.RpcDMChannel.yml","Discord.Rpc.RpcDMChannel.EnterTypingState(RequestOptions)":"Discord.Rpc.RpcDMChannel.yml","Discord.Rpc.RpcDMChannel.ToString":"Discord.Rpc.RpcDMChannel.yml","Discord.Rpc.RpcGroupChannel":"Discord.Rpc.RpcGroupChannel.yml","Discord.Rpc.RpcGroupChannel.CachedMessages":"Discord.Rpc.RpcGroupChannel.yml","Discord.Rpc.RpcGroupChannel.VoiceStates":"Discord.Rpc.RpcGroupChannel.yml","Discord.Rpc.RpcGroupChannel.LeaveAsync(RequestOptions)":"Discord.Rpc.RpcGroupChannel.yml","Discord.Rpc.RpcGroupChannel.GetMessageAsync(System.UInt64,RequestOptions)":"Discord.Rpc.RpcGroupChannel.yml","Discord.Rpc.RpcGroupChannel.GetMessagesAsync(System.Int32,RequestOptions)":"Discord.Rpc.RpcGroupChannel.yml","Discord.Rpc.RpcGroupChannel.GetMessagesAsync(System.UInt64,Direction,System.Int32,RequestOptions)":"Discord.Rpc.RpcGroupChannel.yml","Discord.Rpc.RpcGroupChannel.GetMessagesAsync(IMessage,Direction,System.Int32,RequestOptions)":"Discord.Rpc.RpcGroupChannel.yml","Discord.Rpc.RpcGroupChannel.GetPinnedMessagesAsync(RequestOptions)":"Discord.Rpc.RpcGroupChannel.yml","Discord.Rpc.RpcGroupChannel.SendMessageAsync(System.String,System.Boolean,Embed,RequestOptions)":"Discord.Rpc.RpcGroupChannel.yml","Discord.Rpc.RpcGroupChannel.SendFileAsync(Stream,System.String,System.String,System.Boolean,RequestOptions)":"Discord.Rpc.RpcGroupChannel.yml","Discord.Rpc.RpcGroupChannel.DeleteMessagesAsync(IEnumerable{IMessage},RequestOptions)":"Discord.Rpc.RpcGroupChannel.yml","Discord.Rpc.RpcGroupChannel.TriggerTypingAsync(RequestOptions)":"Discord.Rpc.RpcGroupChannel.yml","Discord.Rpc.RpcGroupChannel.EnterTypingState(RequestOptions)":"Discord.Rpc.RpcGroupChannel.yml","Discord.Rpc.RpcGroupChannel.ToString":"Discord.Rpc.RpcGroupChannel.yml","Discord.Rpc.RpcGuildChannel":"Discord.Rpc.RpcGuildChannel.yml","Discord.Rpc.RpcGuildChannel.GuildId":"Discord.Rpc.RpcGuildChannel.yml","Discord.Rpc.RpcGuildChannel.Position":"Discord.Rpc.RpcGuildChannel.yml","Discord.Rpc.RpcGuildChannel.ModifyAsync(Action{GuildChannelProperties},RequestOptions)":"Discord.Rpc.RpcGuildChannel.yml","Discord.Rpc.RpcGuildChannel.DeleteAsync(RequestOptions)":"Discord.Rpc.RpcGuildChannel.yml","Discord.Rpc.RpcGuildChannel.AddPermissionOverwriteAsync(IUser,OverwritePermissions,RequestOptions)":"Discord.Rpc.RpcGuildChannel.yml","Discord.Rpc.RpcGuildChannel.AddPermissionOverwriteAsync(IRole,OverwritePermissions,RequestOptions)":"Discord.Rpc.RpcGuildChannel.yml","Discord.Rpc.RpcGuildChannel.RemovePermissionOverwriteAsync(IUser,RequestOptions)":"Discord.Rpc.RpcGuildChannel.yml","Discord.Rpc.RpcGuildChannel.RemovePermissionOverwriteAsync(IRole,RequestOptions)":"Discord.Rpc.RpcGuildChannel.yml","Discord.Rpc.RpcGuildChannel.GetInvitesAsync(RequestOptions)":"Discord.Rpc.RpcGuildChannel.yml","Discord.Rpc.RpcGuildChannel.CreateInviteAsync(System.Nullable{System.Int32},System.Nullable{System.Int32},System.Boolean,RequestOptions)":"Discord.Rpc.RpcGuildChannel.yml","Discord.Rpc.RpcGuildChannel.ToString":"Discord.Rpc.RpcGuildChannel.yml","Discord.Rpc.RpcTextChannel":"Discord.Rpc.RpcTextChannel.yml","Discord.Rpc.RpcTextChannel.CachedMessages":"Discord.Rpc.RpcTextChannel.yml","Discord.Rpc.RpcTextChannel.Mention":"Discord.Rpc.RpcTextChannel.yml","Discord.Rpc.RpcTextChannel.ModifyAsync(Action{TextChannelProperties},RequestOptions)":"Discord.Rpc.RpcTextChannel.yml","Discord.Rpc.RpcTextChannel.GetMessageAsync(System.UInt64,RequestOptions)":"Discord.Rpc.RpcTextChannel.yml","Discord.Rpc.RpcTextChannel.GetMessagesAsync(System.Int32,RequestOptions)":"Discord.Rpc.RpcTextChannel.yml","Discord.Rpc.RpcTextChannel.GetMessagesAsync(System.UInt64,Direction,System.Int32,RequestOptions)":"Discord.Rpc.RpcTextChannel.yml","Discord.Rpc.RpcTextChannel.GetMessagesAsync(IMessage,Direction,System.Int32,RequestOptions)":"Discord.Rpc.RpcTextChannel.yml","Discord.Rpc.RpcTextChannel.GetPinnedMessagesAsync(RequestOptions)":"Discord.Rpc.RpcTextChannel.yml","Discord.Rpc.RpcTextChannel.SendMessageAsync(System.String,System.Boolean,Embed,RequestOptions)":"Discord.Rpc.RpcTextChannel.yml","Discord.Rpc.RpcTextChannel.SendFileAsync(Stream,System.String,System.String,System.Boolean,RequestOptions)":"Discord.Rpc.RpcTextChannel.yml","Discord.Rpc.RpcTextChannel.DeleteMessagesAsync(IEnumerable{IMessage},RequestOptions)":"Discord.Rpc.RpcTextChannel.yml","Discord.Rpc.RpcTextChannel.TriggerTypingAsync(RequestOptions)":"Discord.Rpc.RpcTextChannel.yml","Discord.Rpc.RpcTextChannel.EnterTypingState(RequestOptions)":"Discord.Rpc.RpcTextChannel.yml","Discord.Rpc.RpcVoiceChannel":"Discord.Rpc.RpcVoiceChannel.yml","Discord.Rpc.RpcVoiceChannel.UserLimit":"Discord.Rpc.RpcVoiceChannel.yml","Discord.Rpc.RpcVoiceChannel.Bitrate":"Discord.Rpc.RpcVoiceChannel.yml","Discord.Rpc.RpcVoiceChannel.VoiceStates":"Discord.Rpc.RpcVoiceChannel.yml","Discord.Rpc.RpcVoiceChannel.ModifyAsync(Action{VoiceChannelProperties},RequestOptions)":"Discord.Rpc.RpcVoiceChannel.yml","Discord.Rpc.RpcGuild":"Discord.Rpc.RpcGuild.yml","Discord.Rpc.RpcGuild.Name":"Discord.Rpc.RpcGuild.yml","Discord.Rpc.RpcGuild.IconUrl":"Discord.Rpc.RpcGuild.yml","Discord.Rpc.RpcGuild.Users":"Discord.Rpc.RpcGuild.yml","Discord.Rpc.RpcGuild.ToString":"Discord.Rpc.RpcGuild.yml","Discord.Rpc.RpcGuildStatus":"Discord.Rpc.RpcGuildStatus.yml","Discord.Rpc.RpcGuildStatus.Guild":"Discord.Rpc.RpcGuildStatus.yml","Discord.Rpc.RpcGuildStatus.Online":"Discord.Rpc.RpcGuildStatus.yml","Discord.Rpc.RpcGuildStatus.ToString":"Discord.Rpc.RpcGuildStatus.yml","Discord.Rpc.RpcGuildSummary":"Discord.Rpc.RpcGuildSummary.yml","Discord.Rpc.RpcGuildSummary.Id":"Discord.Rpc.RpcGuildSummary.yml","Discord.Rpc.RpcGuildSummary.Name":"Discord.Rpc.RpcGuildSummary.yml","Discord.Rpc.RpcGuildSummary.ToString":"Discord.Rpc.RpcGuildSummary.yml","Discord.Rpc.RpcMessage":"Discord.Rpc.RpcMessage.yml","Discord.Rpc.RpcMessage.Channel":"Discord.Rpc.RpcMessage.yml","Discord.Rpc.RpcMessage.Author":"Discord.Rpc.RpcMessage.yml","Discord.Rpc.RpcMessage.Content":"Discord.Rpc.RpcMessage.yml","Discord.Rpc.RpcMessage.AuthorColor":"Discord.Rpc.RpcMessage.yml","Discord.Rpc.RpcMessage.CreatedAt":"Discord.Rpc.RpcMessage.yml","Discord.Rpc.RpcMessage.IsTTS":"Discord.Rpc.RpcMessage.yml","Discord.Rpc.RpcMessage.IsPinned":"Discord.Rpc.RpcMessage.yml","Discord.Rpc.RpcMessage.IsBlocked":"Discord.Rpc.RpcMessage.yml","Discord.Rpc.RpcMessage.EditedTimestamp":"Discord.Rpc.RpcMessage.yml","Discord.Rpc.RpcMessage.Attachments":"Discord.Rpc.RpcMessage.yml","Discord.Rpc.RpcMessage.Embeds":"Discord.Rpc.RpcMessage.yml","Discord.Rpc.RpcMessage.MentionedChannelIds":"Discord.Rpc.RpcMessage.yml","Discord.Rpc.RpcMessage.MentionedRoleIds":"Discord.Rpc.RpcMessage.yml","Discord.Rpc.RpcMessage.MentionedUserIds":"Discord.Rpc.RpcMessage.yml","Discord.Rpc.RpcMessage.Tags":"Discord.Rpc.RpcMessage.yml","Discord.Rpc.RpcMessage.WebhookId":"Discord.Rpc.RpcMessage.yml","Discord.Rpc.RpcMessage.IsWebhook":"Discord.Rpc.RpcMessage.yml","Discord.Rpc.RpcMessage.Timestamp":"Discord.Rpc.RpcMessage.yml","Discord.Rpc.RpcMessage.DeleteAsync(RequestOptions)":"Discord.Rpc.RpcMessage.yml","Discord.Rpc.RpcMessage.ToString":"Discord.Rpc.RpcMessage.yml","Discord.Rpc.RpcSystemMessage":"Discord.Rpc.RpcSystemMessage.yml","Discord.Rpc.RpcSystemMessage.Type":"Discord.Rpc.RpcSystemMessage.yml","Discord.Rpc.RpcUserMessage":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.IsTTS":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.IsPinned":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.IsBlocked":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.WebhookId":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.EditedTimestamp":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.Attachments":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.Embeds":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.MentionedChannelIds":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.MentionedRoleIds":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.MentionedUserIds":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.Tags":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.Reactions":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.ModifyAsync(Action{MessageProperties},RequestOptions)":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.AddReactionAsync(Emoji,RequestOptions)":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.AddReactionAsync(System.String,RequestOptions)":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.RemoveReactionAsync(Emoji,IUser,RequestOptions)":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.RemoveReactionAsync(System.String,IUser,RequestOptions)":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.RemoveAllReactionsAsync(RequestOptions)":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.GetReactionUsersAsync(System.String,System.Int32,System.Nullable{System.UInt64},RequestOptions)":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.PinAsync(RequestOptions)":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.UnpinAsync(RequestOptions)":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.Resolve(System.Int32,TagHandling,TagHandling,TagHandling,TagHandling,TagHandling)":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.RpcUserMessage.Resolve(TagHandling,TagHandling,TagHandling,TagHandling,TagHandling)":"Discord.Rpc.RpcUserMessage.yml","Discord.Rpc.Pan":"Discord.Rpc.Pan.yml","Discord.Rpc.Pan.Left":"Discord.Rpc.Pan.yml","Discord.Rpc.Pan.Right":"Discord.Rpc.Pan.yml","Discord.Rpc.Pan.#ctor(System.Single,System.Single)":"Discord.Rpc.Pan.yml","Discord.Rpc.Pan.ToString":"Discord.Rpc.Pan.yml","Discord.Rpc.RpcGuildUser":"Discord.Rpc.RpcGuildUser.yml","Discord.Rpc.RpcGuildUser.Status":"Discord.Rpc.RpcGuildUser.yml","Discord.Rpc.RpcUser":"Discord.Rpc.RpcUser.yml","Discord.Rpc.RpcUser.IsBot":"Discord.Rpc.RpcUser.yml","Discord.Rpc.RpcUser.Username":"Discord.Rpc.RpcUser.yml","Discord.Rpc.RpcUser.DiscriminatorValue":"Discord.Rpc.RpcUser.yml","Discord.Rpc.RpcUser.AvatarId":"Discord.Rpc.RpcUser.yml","Discord.Rpc.RpcUser.AvatarUrl":"Discord.Rpc.RpcUser.yml","Discord.Rpc.RpcUser.CreatedAt":"Discord.Rpc.RpcUser.yml","Discord.Rpc.RpcUser.Discriminator":"Discord.Rpc.RpcUser.yml","Discord.Rpc.RpcUser.Mention":"Discord.Rpc.RpcUser.yml","Discord.Rpc.RpcUser.Game":"Discord.Rpc.RpcUser.yml","Discord.Rpc.RpcUser.Status":"Discord.Rpc.RpcUser.yml","Discord.Rpc.RpcUser.CreateDMChannelAsync(RequestOptions)":"Discord.Rpc.RpcUser.yml","Discord.Rpc.RpcUser.ToString":"Discord.Rpc.RpcUser.yml","Discord.Rpc.RpcVoiceState":"Discord.Rpc.RpcVoiceState.yml","Discord.Rpc.RpcVoiceState.User":"Discord.Rpc.RpcVoiceState.yml","Discord.Rpc.RpcVoiceState.Nickname":"Discord.Rpc.RpcVoiceState.yml","Discord.Rpc.RpcVoiceState.Volume":"Discord.Rpc.RpcVoiceState.yml","Discord.Rpc.RpcVoiceState.IsMuted2":"Discord.Rpc.RpcVoiceState.yml","Discord.Rpc.RpcVoiceState.Pan":"Discord.Rpc.RpcVoiceState.yml","Discord.Rpc.RpcVoiceState.IsMuted":"Discord.Rpc.RpcVoiceState.yml","Discord.Rpc.RpcVoiceState.IsDeafened":"Discord.Rpc.RpcVoiceState.yml","Discord.Rpc.RpcVoiceState.IsSuppressed":"Discord.Rpc.RpcVoiceState.yml","Discord.Rpc.RpcVoiceState.IsSelfMuted":"Discord.Rpc.RpcVoiceState.yml","Discord.Rpc.RpcVoiceState.IsSelfDeafened":"Discord.Rpc.RpcVoiceState.yml","Discord.Rpc.RpcVoiceState.ToString":"Discord.Rpc.RpcVoiceState.yml","Discord.Commands":"Discord.Commands.yml","Discord.Commands.RpcCommandContext":"Discord.Commands.RpcCommandContext.yml","Discord.Commands.RpcCommandContext.Client":"Discord.Commands.RpcCommandContext.yml","Discord.Commands.RpcCommandContext.Channel":"Discord.Commands.RpcCommandContext.yml","Discord.Commands.RpcCommandContext.User":"Discord.Commands.RpcCommandContext.yml","Discord.Commands.RpcCommandContext.Message":"Discord.Commands.RpcCommandContext.yml","Discord.Commands.RpcCommandContext.IsPrivate":"Discord.Commands.RpcCommandContext.yml","Discord.Commands.RpcCommandContext.#ctor(Discord.Rpc.DiscordRpcClient,Discord.Rpc.RpcUserMessage)":"Discord.Commands.RpcCommandContext.yml","Discord.Commands.ShardedCommandContext":"Discord.Commands.ShardedCommandContext.yml","Discord.Commands.ShardedCommandContext.Client":"Discord.Commands.ShardedCommandContext.yml","Discord.Commands.ShardedCommandContext.Guild":"Discord.Commands.ShardedCommandContext.yml","Discord.Commands.ShardedCommandContext.Channel":"Discord.Commands.ShardedCommandContext.yml","Discord.Commands.ShardedCommandContext.User":"Discord.Commands.ShardedCommandContext.yml","Discord.Commands.ShardedCommandContext.Message":"Discord.Commands.ShardedCommandContext.yml","Discord.Commands.ShardedCommandContext.IsPrivate":"Discord.Commands.ShardedCommandContext.yml","Discord.Commands.ShardedCommandContext.#ctor(Discord.WebSocket.DiscordShardedClient,Discord.WebSocket.SocketUserMessage)":"Discord.Commands.ShardedCommandContext.yml","Discord.Commands.SocketCommandContext":"Discord.Commands.SocketCommandContext.yml","Discord.Commands.SocketCommandContext.Client":"Discord.Commands.SocketCommandContext.yml","Discord.Commands.SocketCommandContext.Guild":"Discord.Commands.SocketCommandContext.yml","Discord.Commands.SocketCommandContext.Channel":"Discord.Commands.SocketCommandContext.yml","Discord.Commands.SocketCommandContext.User":"Discord.Commands.SocketCommandContext.yml","Discord.Commands.SocketCommandContext.Message":"Discord.Commands.SocketCommandContext.yml","Discord.Commands.SocketCommandContext.IsPrivate":"Discord.Commands.SocketCommandContext.yml","Discord.Commands.SocketCommandContext.#ctor(Discord.WebSocket.DiscordSocketClient,Discord.WebSocket.SocketUserMessage)":"Discord.Commands.SocketCommandContext.yml","Discord.Commands.CommandContext":"Discord.Commands.CommandContext.yml","Discord.Commands.CommandContext.Client":"Discord.Commands.CommandContext.yml","Discord.Commands.CommandContext.Guild":"Discord.Commands.CommandContext.yml","Discord.Commands.CommandContext.Channel":"Discord.Commands.CommandContext.yml","Discord.Commands.CommandContext.User":"Discord.Commands.CommandContext.yml","Discord.Commands.CommandContext.Message":"Discord.Commands.CommandContext.yml","Discord.Commands.CommandContext.IsPrivate":"Discord.Commands.CommandContext.yml","Discord.Commands.CommandContext.#ctor(IDiscordClient,IUserMessage)":"Discord.Commands.CommandContext.yml","Discord.Commands.CommandError":"Discord.Commands.CommandError.yml","Discord.Commands.CommandError.UnknownCommand":"Discord.Commands.CommandError.yml","Discord.Commands.CommandError.ParseFailed":"Discord.Commands.CommandError.yml","Discord.Commands.CommandError.BadArgCount":"Discord.Commands.CommandError.yml","Discord.Commands.CommandError.ObjectNotFound":"Discord.Commands.CommandError.yml","Discord.Commands.CommandError.MultipleMatches":"Discord.Commands.CommandError.yml","Discord.Commands.CommandError.UnmetPrecondition":"Discord.Commands.CommandError.yml","Discord.Commands.CommandError.Exception":"Discord.Commands.CommandError.yml","Discord.Commands.CommandMatch":"Discord.Commands.CommandMatch.yml","Discord.Commands.CommandMatch.Command":"Discord.Commands.CommandMatch.yml","Discord.Commands.CommandMatch.Alias":"Discord.Commands.CommandMatch.yml","Discord.Commands.CommandMatch.#ctor(Discord.Commands.CommandInfo,System.String)":"Discord.Commands.CommandMatch.yml","Discord.Commands.CommandMatch.CheckPreconditionsAsync(ICommandContext,Discord.Commands.IDependencyMap)":"Discord.Commands.CommandMatch.yml","Discord.Commands.CommandMatch.ParseAsync(ICommandContext,Discord.Commands.SearchResult,System.Nullable{Discord.Commands.PreconditionResult})":"Discord.Commands.CommandMatch.yml","Discord.Commands.CommandMatch.ExecuteAsync(ICommandContext,IEnumerable{System.Object},IEnumerable{System.Object},Discord.Commands.IDependencyMap)":"Discord.Commands.CommandMatch.yml","Discord.Commands.CommandMatch.ExecuteAsync(ICommandContext,Discord.Commands.ParseResult,Discord.Commands.IDependencyMap)":"Discord.Commands.CommandMatch.yml","Discord.Commands.CommandService":"Discord.Commands.CommandService.yml","Discord.Commands.CommandService.Modules":"Discord.Commands.CommandService.yml","Discord.Commands.CommandService.Commands":"Discord.Commands.CommandService.yml","Discord.Commands.CommandService.TypeReaders":"Discord.Commands.CommandService.yml","Discord.Commands.CommandService.#ctor":"Discord.Commands.CommandService.yml","Discord.Commands.CommandService.#ctor(Discord.Commands.CommandServiceConfig)":"Discord.Commands.CommandService.yml","Discord.Commands.CommandService.CreateModuleAsync(System.String,Action{Discord.Commands.Builders.ModuleBuilder})":"Discord.Commands.CommandService.yml","Discord.Commands.CommandService.AddModuleAsync``1":"Discord.Commands.CommandService.yml","Discord.Commands.CommandService.AddModulesAsync(Assembly)":"Discord.Commands.CommandService.yml","Discord.Commands.CommandService.RemoveModuleAsync(Discord.Commands.ModuleInfo)":"Discord.Commands.CommandService.yml","Discord.Commands.CommandService.RemoveModuleAsync``1":"Discord.Commands.CommandService.yml","Discord.Commands.CommandService.AddTypeReader``1(Discord.Commands.TypeReader)":"Discord.Commands.CommandService.yml","Discord.Commands.CommandService.AddTypeReader(Type,Discord.Commands.TypeReader)":"Discord.Commands.CommandService.yml","Discord.Commands.CommandService.Search(ICommandContext,System.Int32)":"Discord.Commands.CommandService.yml","Discord.Commands.CommandService.Search(ICommandContext,System.String)":"Discord.Commands.CommandService.yml","Discord.Commands.CommandService.ExecuteAsync(ICommandContext,System.Int32,Discord.Commands.IDependencyMap,Discord.Commands.MultiMatchHandling)":"Discord.Commands.CommandService.yml","Discord.Commands.CommandService.ExecuteAsync(ICommandContext,System.String,Discord.Commands.IDependencyMap,Discord.Commands.MultiMatchHandling)":"Discord.Commands.CommandService.yml","Discord.Commands.CommandServiceConfig":"Discord.Commands.CommandServiceConfig.yml","Discord.Commands.CommandServiceConfig.DefaultRunMode":"Discord.Commands.CommandServiceConfig.yml","Discord.Commands.CommandServiceConfig.SeparatorChar":"Discord.Commands.CommandServiceConfig.yml","Discord.Commands.CommandServiceConfig.CaseSensitiveCommands":"Discord.Commands.CommandServiceConfig.yml","Discord.Commands.ModuleBase":"Discord.Commands.ModuleBase.yml","Discord.Commands.ModuleBase`1":"Discord.Commands.ModuleBase-1.yml","Discord.Commands.ModuleBase`1.Context":"Discord.Commands.ModuleBase-1.yml","Discord.Commands.ModuleBase`1.ReplyAsync(System.String,System.Boolean,Embed,RequestOptions)":"Discord.Commands.ModuleBase-1.yml","Discord.Commands.MultiMatchHandling":"Discord.Commands.MultiMatchHandling.yml","Discord.Commands.MultiMatchHandling.Exception":"Discord.Commands.MultiMatchHandling.yml","Discord.Commands.MultiMatchHandling.Best":"Discord.Commands.MultiMatchHandling.yml","Discord.Commands.RunMode":"Discord.Commands.RunMode.yml","Discord.Commands.RunMode.Default":"Discord.Commands.RunMode.yml","Discord.Commands.RunMode.Sync":"Discord.Commands.RunMode.yml","Discord.Commands.RunMode.Mixed":"Discord.Commands.RunMode.yml","Discord.Commands.RunMode.Async":"Discord.Commands.RunMode.yml","Discord.Commands.AliasAttribute":"Discord.Commands.AliasAttribute.yml","Discord.Commands.AliasAttribute.Aliases":"Discord.Commands.AliasAttribute.yml","Discord.Commands.AliasAttribute.#ctor(System.String[])":"Discord.Commands.AliasAttribute.yml","Discord.Commands.CommandAttribute":"Discord.Commands.CommandAttribute.yml","Discord.Commands.CommandAttribute.Text":"Discord.Commands.CommandAttribute.yml","Discord.Commands.CommandAttribute.RunMode":"Discord.Commands.CommandAttribute.yml","Discord.Commands.CommandAttribute.#ctor":"Discord.Commands.CommandAttribute.yml","Discord.Commands.CommandAttribute.#ctor(System.String)":"Discord.Commands.CommandAttribute.yml","Discord.Commands.DontAutoLoadAttribute":"Discord.Commands.DontAutoLoadAttribute.yml","Discord.Commands.GroupAttribute":"Discord.Commands.GroupAttribute.yml","Discord.Commands.GroupAttribute.Prefix":"Discord.Commands.GroupAttribute.yml","Discord.Commands.GroupAttribute.#ctor":"Discord.Commands.GroupAttribute.yml","Discord.Commands.GroupAttribute.#ctor(System.String)":"Discord.Commands.GroupAttribute.yml","Discord.Commands.NameAttribute":"Discord.Commands.NameAttribute.yml","Discord.Commands.NameAttribute.Text":"Discord.Commands.NameAttribute.yml","Discord.Commands.NameAttribute.#ctor(System.String)":"Discord.Commands.NameAttribute.yml","Discord.Commands.OverrideTypeReaderAttribute":"Discord.Commands.OverrideTypeReaderAttribute.yml","Discord.Commands.OverrideTypeReaderAttribute.TypeReader":"Discord.Commands.OverrideTypeReaderAttribute.yml","Discord.Commands.OverrideTypeReaderAttribute.#ctor(Type)":"Discord.Commands.OverrideTypeReaderAttribute.yml","Discord.Commands.ParameterPreconditionAttribute":"Discord.Commands.ParameterPreconditionAttribute.yml","Discord.Commands.ParameterPreconditionAttribute.CheckPermissions(ICommandContext,Discord.Commands.ParameterInfo,System.Object,Discord.Commands.IDependencyMap)":"Discord.Commands.ParameterPreconditionAttribute.yml","Discord.Commands.PreconditionAttribute":"Discord.Commands.PreconditionAttribute.yml","Discord.Commands.PreconditionAttribute.CheckPermissions(ICommandContext,Discord.Commands.CommandInfo,Discord.Commands.IDependencyMap)":"Discord.Commands.PreconditionAttribute.yml","Discord.Commands.PriorityAttribute":"Discord.Commands.PriorityAttribute.yml","Discord.Commands.PriorityAttribute.Priority":"Discord.Commands.PriorityAttribute.yml","Discord.Commands.PriorityAttribute.#ctor(System.Int32)":"Discord.Commands.PriorityAttribute.yml","Discord.Commands.RemainderAttribute":"Discord.Commands.RemainderAttribute.yml","Discord.Commands.RemarksAttribute":"Discord.Commands.RemarksAttribute.yml","Discord.Commands.RemarksAttribute.Text":"Discord.Commands.RemarksAttribute.yml","Discord.Commands.RemarksAttribute.#ctor(System.String)":"Discord.Commands.RemarksAttribute.yml","Discord.Commands.SummaryAttribute":"Discord.Commands.SummaryAttribute.yml","Discord.Commands.SummaryAttribute.Text":"Discord.Commands.SummaryAttribute.yml","Discord.Commands.SummaryAttribute.#ctor(System.String)":"Discord.Commands.SummaryAttribute.yml","Discord.Commands.RequireBotPermissionAttribute":"Discord.Commands.RequireBotPermissionAttribute.yml","Discord.Commands.RequireBotPermissionAttribute.GuildPermission":"Discord.Commands.RequireBotPermissionAttribute.yml","Discord.Commands.RequireBotPermissionAttribute.ChannelPermission":"Discord.Commands.RequireBotPermissionAttribute.yml","Discord.Commands.RequireBotPermissionAttribute.#ctor(GuildPermission)":"Discord.Commands.RequireBotPermissionAttribute.yml","Discord.Commands.RequireBotPermissionAttribute.#ctor(ChannelPermission)":"Discord.Commands.RequireBotPermissionAttribute.yml","Discord.Commands.RequireBotPermissionAttribute.CheckPermissions(ICommandContext,Discord.Commands.CommandInfo,Discord.Commands.IDependencyMap)":"Discord.Commands.RequireBotPermissionAttribute.yml","Discord.Commands.ContextType":"Discord.Commands.ContextType.yml","Discord.Commands.ContextType.Guild":"Discord.Commands.ContextType.yml","Discord.Commands.ContextType.DM":"Discord.Commands.ContextType.yml","Discord.Commands.ContextType.Group":"Discord.Commands.ContextType.yml","Discord.Commands.RequireContextAttribute":"Discord.Commands.RequireContextAttribute.yml","Discord.Commands.RequireContextAttribute.Contexts":"Discord.Commands.RequireContextAttribute.yml","Discord.Commands.RequireContextAttribute.#ctor(Discord.Commands.ContextType)":"Discord.Commands.RequireContextAttribute.yml","Discord.Commands.RequireContextAttribute.CheckPermissions(ICommandContext,Discord.Commands.CommandInfo,Discord.Commands.IDependencyMap)":"Discord.Commands.RequireContextAttribute.yml","Discord.Commands.RequireOwnerAttribute":"Discord.Commands.RequireOwnerAttribute.yml","Discord.Commands.RequireOwnerAttribute.CheckPermissions(ICommandContext,Discord.Commands.CommandInfo,Discord.Commands.IDependencyMap)":"Discord.Commands.RequireOwnerAttribute.yml","Discord.Commands.RequireUserPermissionAttribute":"Discord.Commands.RequireUserPermissionAttribute.yml","Discord.Commands.RequireUserPermissionAttribute.GuildPermission":"Discord.Commands.RequireUserPermissionAttribute.yml","Discord.Commands.RequireUserPermissionAttribute.ChannelPermission":"Discord.Commands.RequireUserPermissionAttribute.yml","Discord.Commands.RequireUserPermissionAttribute.#ctor(GuildPermission)":"Discord.Commands.RequireUserPermissionAttribute.yml","Discord.Commands.RequireUserPermissionAttribute.#ctor(ChannelPermission)":"Discord.Commands.RequireUserPermissionAttribute.yml","Discord.Commands.RequireUserPermissionAttribute.CheckPermissions(ICommandContext,Discord.Commands.CommandInfo,Discord.Commands.IDependencyMap)":"Discord.Commands.RequireUserPermissionAttribute.yml","Discord.Commands.DependencyMap":"Discord.Commands.DependencyMap.yml","Discord.Commands.DependencyMap.Empty":"Discord.Commands.DependencyMap.yml","Discord.Commands.DependencyMap.#ctor":"Discord.Commands.DependencyMap.yml","Discord.Commands.DependencyMap.Add``1(``0)":"Discord.Commands.DependencyMap.yml","Discord.Commands.DependencyMap.Get``1":"Discord.Commands.DependencyMap.yml","Discord.Commands.DependencyMap.Get(Type)":"Discord.Commands.DependencyMap.yml","Discord.Commands.DependencyMap.TryGet``1(``0@)":"Discord.Commands.DependencyMap.yml","Discord.Commands.DependencyMap.TryGet(Type,System.Object@)":"Discord.Commands.DependencyMap.yml","Discord.Commands.IDependencyMap":"Discord.Commands.IDependencyMap.yml","Discord.Commands.IDependencyMap.Add``1(``0)":"Discord.Commands.IDependencyMap.yml","Discord.Commands.IDependencyMap.Get``1":"Discord.Commands.IDependencyMap.yml","Discord.Commands.IDependencyMap.TryGet``1(``0@)":"Discord.Commands.IDependencyMap.yml","Discord.Commands.IDependencyMap.Get(Type)":"Discord.Commands.IDependencyMap.yml","Discord.Commands.IDependencyMap.TryGet(Type,System.Object@)":"Discord.Commands.IDependencyMap.yml","Discord.Commands.IEnumerableExtensions":"Discord.Commands.IEnumerableExtensions.yml","Discord.Commands.IEnumerableExtensions.Permutate``3(IEnumerable{``0},IEnumerable{``1},Func{``0,``1,``2})":"Discord.Commands.IEnumerableExtensions.yml","Discord.Commands.MessageExtensions":"Discord.Commands.MessageExtensions.yml","Discord.Commands.MessageExtensions.HasCharPrefix(IUserMessage,System.Char,System.Int32@)":"Discord.Commands.MessageExtensions.yml","Discord.Commands.MessageExtensions.HasStringPrefix(IUserMessage,System.String,System.Int32@)":"Discord.Commands.MessageExtensions.yml","Discord.Commands.MessageExtensions.HasMentionPrefix(IUserMessage,IUser,System.Int32@)":"Discord.Commands.MessageExtensions.yml","Discord.Commands.CommandInfo":"Discord.Commands.CommandInfo.yml","Discord.Commands.CommandInfo.Module":"Discord.Commands.CommandInfo.yml","Discord.Commands.CommandInfo.Name":"Discord.Commands.CommandInfo.yml","Discord.Commands.CommandInfo.Summary":"Discord.Commands.CommandInfo.yml","Discord.Commands.CommandInfo.Remarks":"Discord.Commands.CommandInfo.yml","Discord.Commands.CommandInfo.Priority":"Discord.Commands.CommandInfo.yml","Discord.Commands.CommandInfo.HasVarArgs":"Discord.Commands.CommandInfo.yml","Discord.Commands.CommandInfo.RunMode":"Discord.Commands.CommandInfo.yml","Discord.Commands.CommandInfo.Aliases":"Discord.Commands.CommandInfo.yml","Discord.Commands.CommandInfo.Parameters":"Discord.Commands.CommandInfo.yml","Discord.Commands.CommandInfo.Preconditions":"Discord.Commands.CommandInfo.yml","Discord.Commands.CommandInfo.CheckPreconditionsAsync(ICommandContext,Discord.Commands.IDependencyMap)":"Discord.Commands.CommandInfo.yml","Discord.Commands.CommandInfo.ParseAsync(ICommandContext,System.Int32,Discord.Commands.SearchResult,System.Nullable{Discord.Commands.PreconditionResult})":"Discord.Commands.CommandInfo.yml","Discord.Commands.CommandInfo.ExecuteAsync(ICommandContext,Discord.Commands.ParseResult,Discord.Commands.IDependencyMap)":"Discord.Commands.CommandInfo.yml","Discord.Commands.CommandInfo.ExecuteAsync(ICommandContext,IEnumerable{System.Object},IEnumerable{System.Object},Discord.Commands.IDependencyMap)":"Discord.Commands.CommandInfo.yml","Discord.Commands.ModuleInfo":"Discord.Commands.ModuleInfo.yml","Discord.Commands.ModuleInfo.Service":"Discord.Commands.ModuleInfo.yml","Discord.Commands.ModuleInfo.Name":"Discord.Commands.ModuleInfo.yml","Discord.Commands.ModuleInfo.Summary":"Discord.Commands.ModuleInfo.yml","Discord.Commands.ModuleInfo.Remarks":"Discord.Commands.ModuleInfo.yml","Discord.Commands.ModuleInfo.Aliases":"Discord.Commands.ModuleInfo.yml","Discord.Commands.ModuleInfo.Commands":"Discord.Commands.ModuleInfo.yml","Discord.Commands.ModuleInfo.Preconditions":"Discord.Commands.ModuleInfo.yml","Discord.Commands.ModuleInfo.Submodules":"Discord.Commands.ModuleInfo.yml","Discord.Commands.ModuleInfo.Parent":"Discord.Commands.ModuleInfo.yml","Discord.Commands.ModuleInfo.IsSubmodule":"Discord.Commands.ModuleInfo.yml","Discord.Commands.ParameterInfo":"Discord.Commands.ParameterInfo.yml","Discord.Commands.ParameterInfo.Command":"Discord.Commands.ParameterInfo.yml","Discord.Commands.ParameterInfo.Name":"Discord.Commands.ParameterInfo.yml","Discord.Commands.ParameterInfo.Summary":"Discord.Commands.ParameterInfo.yml","Discord.Commands.ParameterInfo.IsOptional":"Discord.Commands.ParameterInfo.yml","Discord.Commands.ParameterInfo.IsRemainder":"Discord.Commands.ParameterInfo.yml","Discord.Commands.ParameterInfo.IsMultiple":"Discord.Commands.ParameterInfo.yml","Discord.Commands.ParameterInfo.Type":"Discord.Commands.ParameterInfo.yml","Discord.Commands.ParameterInfo.DefaultValue":"Discord.Commands.ParameterInfo.yml","Discord.Commands.ParameterInfo.Preconditions":"Discord.Commands.ParameterInfo.yml","Discord.Commands.ParameterInfo.CheckPreconditionsAsync(ICommandContext,System.Object[],Discord.Commands.IDependencyMap)":"Discord.Commands.ParameterInfo.yml","Discord.Commands.ParameterInfo.Parse(ICommandContext,System.String)":"Discord.Commands.ParameterInfo.yml","Discord.Commands.ParameterInfo.ToString":"Discord.Commands.ParameterInfo.yml","Discord.Commands.TypeReader":"Discord.Commands.TypeReader.yml","Discord.Commands.TypeReader.Read(ICommandContext,System.String)":"Discord.Commands.TypeReader.yml","Discord.Commands.ExecuteResult":"Discord.Commands.ExecuteResult.yml","Discord.Commands.ExecuteResult.Exception":"Discord.Commands.ExecuteResult.yml","Discord.Commands.ExecuteResult.Error":"Discord.Commands.ExecuteResult.yml","Discord.Commands.ExecuteResult.ErrorReason":"Discord.Commands.ExecuteResult.yml","Discord.Commands.ExecuteResult.IsSuccess":"Discord.Commands.ExecuteResult.yml","Discord.Commands.ExecuteResult.FromSuccess":"Discord.Commands.ExecuteResult.yml","Discord.Commands.ExecuteResult.FromError(Discord.Commands.CommandError,System.String)":"Discord.Commands.ExecuteResult.yml","Discord.Commands.ExecuteResult.FromError(Exception)":"Discord.Commands.ExecuteResult.yml","Discord.Commands.ExecuteResult.FromError(Discord.Commands.IResult)":"Discord.Commands.ExecuteResult.yml","Discord.Commands.ExecuteResult.ToString":"Discord.Commands.ExecuteResult.yml","Discord.Commands.IResult":"Discord.Commands.IResult.yml","Discord.Commands.IResult.Error":"Discord.Commands.IResult.yml","Discord.Commands.IResult.ErrorReason":"Discord.Commands.IResult.yml","Discord.Commands.IResult.IsSuccess":"Discord.Commands.IResult.yml","Discord.Commands.ParseResult":"Discord.Commands.ParseResult.yml","Discord.Commands.ParseResult.ArgValues":"Discord.Commands.ParseResult.yml","Discord.Commands.ParseResult.ParamValues":"Discord.Commands.ParseResult.yml","Discord.Commands.ParseResult.Error":"Discord.Commands.ParseResult.yml","Discord.Commands.ParseResult.ErrorReason":"Discord.Commands.ParseResult.yml","Discord.Commands.ParseResult.IsSuccess":"Discord.Commands.ParseResult.yml","Discord.Commands.ParseResult.FromSuccess(IReadOnlyList{Discord.Commands.TypeReaderResult},IReadOnlyList{Discord.Commands.TypeReaderResult})":"Discord.Commands.ParseResult.yml","Discord.Commands.ParseResult.FromSuccess(IReadOnlyList{Discord.Commands.TypeReaderValue},IReadOnlyList{Discord.Commands.TypeReaderValue})":"Discord.Commands.ParseResult.yml","Discord.Commands.ParseResult.FromError(Discord.Commands.CommandError,System.String)":"Discord.Commands.ParseResult.yml","Discord.Commands.ParseResult.FromError(Discord.Commands.IResult)":"Discord.Commands.ParseResult.yml","Discord.Commands.ParseResult.ToString":"Discord.Commands.ParseResult.yml","Discord.Commands.PreconditionResult":"Discord.Commands.PreconditionResult.yml","Discord.Commands.PreconditionResult.Error":"Discord.Commands.PreconditionResult.yml","Discord.Commands.PreconditionResult.ErrorReason":"Discord.Commands.PreconditionResult.yml","Discord.Commands.PreconditionResult.IsSuccess":"Discord.Commands.PreconditionResult.yml","Discord.Commands.PreconditionResult.FromSuccess":"Discord.Commands.PreconditionResult.yml","Discord.Commands.PreconditionResult.FromError(System.String)":"Discord.Commands.PreconditionResult.yml","Discord.Commands.PreconditionResult.FromError(Discord.Commands.IResult)":"Discord.Commands.PreconditionResult.yml","Discord.Commands.PreconditionResult.ToString":"Discord.Commands.PreconditionResult.yml","Discord.Commands.SearchResult":"Discord.Commands.SearchResult.yml","Discord.Commands.SearchResult.Text":"Discord.Commands.SearchResult.yml","Discord.Commands.SearchResult.Commands":"Discord.Commands.SearchResult.yml","Discord.Commands.SearchResult.Error":"Discord.Commands.SearchResult.yml","Discord.Commands.SearchResult.ErrorReason":"Discord.Commands.SearchResult.yml","Discord.Commands.SearchResult.IsSuccess":"Discord.Commands.SearchResult.yml","Discord.Commands.SearchResult.FromSuccess(System.String,IReadOnlyList{Discord.Commands.CommandMatch})":"Discord.Commands.SearchResult.yml","Discord.Commands.SearchResult.FromError(Discord.Commands.CommandError,System.String)":"Discord.Commands.SearchResult.yml","Discord.Commands.SearchResult.FromError(Discord.Commands.IResult)":"Discord.Commands.SearchResult.yml","Discord.Commands.SearchResult.ToString":"Discord.Commands.SearchResult.yml","Discord.Commands.TypeReaderValue":"Discord.Commands.TypeReaderValue.yml","Discord.Commands.TypeReaderValue.Value":"Discord.Commands.TypeReaderValue.yml","Discord.Commands.TypeReaderValue.Score":"Discord.Commands.TypeReaderValue.yml","Discord.Commands.TypeReaderValue.#ctor(System.Object,System.Single)":"Discord.Commands.TypeReaderValue.yml","Discord.Commands.TypeReaderValue.ToString":"Discord.Commands.TypeReaderValue.yml","Discord.Commands.TypeReaderResult":"Discord.Commands.TypeReaderResult.yml","Discord.Commands.TypeReaderResult.Values":"Discord.Commands.TypeReaderResult.yml","Discord.Commands.TypeReaderResult.Error":"Discord.Commands.TypeReaderResult.yml","Discord.Commands.TypeReaderResult.ErrorReason":"Discord.Commands.TypeReaderResult.yml","Discord.Commands.TypeReaderResult.IsSuccess":"Discord.Commands.TypeReaderResult.yml","Discord.Commands.TypeReaderResult.FromSuccess(System.Object)":"Discord.Commands.TypeReaderResult.yml","Discord.Commands.TypeReaderResult.FromSuccess(Discord.Commands.TypeReaderValue)":"Discord.Commands.TypeReaderResult.yml","Discord.Commands.TypeReaderResult.FromSuccess(IReadOnlyCollection{Discord.Commands.TypeReaderValue})":"Discord.Commands.TypeReaderResult.yml","Discord.Commands.TypeReaderResult.FromError(Discord.Commands.CommandError,System.String)":"Discord.Commands.TypeReaderResult.yml","Discord.Commands.TypeReaderResult.FromError(Discord.Commands.IResult)":"Discord.Commands.TypeReaderResult.yml","Discord.Commands.TypeReaderResult.ToString":"Discord.Commands.TypeReaderResult.yml","Discord.Commands.ICommandContext":"Discord.Commands.ICommandContext.yml","Discord.Commands.ICommandContext.Client":"Discord.Commands.ICommandContext.yml","Discord.Commands.ICommandContext.Guild":"Discord.Commands.ICommandContext.yml","Discord.Commands.ICommandContext.Channel":"Discord.Commands.ICommandContext.yml","Discord.Commands.ICommandContext.User":"Discord.Commands.ICommandContext.yml","Discord.Commands.ICommandContext.Message":"Discord.Commands.ICommandContext.yml","Discord.WebSocket":"Discord.WebSocket.yml","Discord.WebSocket.DiscordShardedClient":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.Latency":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.CurrentUser":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.Guilds":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.PrivateChannels":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.Shards":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.VoiceRegions":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.#ctor":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.#ctor(Discord.WebSocket.DiscordSocketConfig)":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.#ctor(System.Int32[])":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.#ctor(System.Int32[],Discord.WebSocket.DiscordSocketConfig)":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.OnLoginAsync(TokenType,System.String)":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.OnLogoutAsync":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.ConnectAsync(System.Boolean)":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.DisconnectAsync":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.GetShard(System.Int32)":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.GetApplicationInfoAsync":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.GetGuild(System.UInt64)":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.CreateGuildAsync(System.String,IVoiceRegion,Stream)":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.GetChannel(System.UInt64)":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.GetConnectionsAsync":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.GetInviteAsync(System.String)":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.GetUser(System.UInt64)":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.GetUser(System.String,System.String)":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.GetVoiceRegion(System.String)":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.DownloadAllUsersAsync":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.DownloadUsersAsync(IEnumerable{Discord.WebSocket.SocketGuild})":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.SetStatusAsync(UserStatus)":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.SetGameAsync(System.String,System.String,StreamType)":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.ChannelCreated":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.ChannelDestroyed":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.ChannelUpdated":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.MessageReceived":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.MessageDeleted":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.MessageUpdated":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.ReactionAdded":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.ReactionRemoved":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.ReactionsCleared":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.RoleCreated":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.RoleDeleted":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.RoleUpdated":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.JoinedGuild":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.LeftGuild":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.GuildAvailable":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.GuildUnavailable":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.GuildMembersDownloaded":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.GuildUpdated":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.UserJoined":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.UserLeft":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.UserBanned":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.UserUnbanned":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.UserUpdated":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.GuildMemberUpdated":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.UserPresenceUpdated":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.UserVoiceStateUpdated":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.CurrentUserUpdated":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.UserIsTyping":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.RecipientAdded":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordShardedClient.RecipientRemoved":"Discord.WebSocket.DiscordShardedClient.yml","Discord.WebSocket.DiscordSocketClient":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.ShardId":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.ConnectionState":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.Latency":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.CurrentUser":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.Guilds":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.PrivateChannels":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.VoiceRegions":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.#ctor":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.#ctor(Discord.WebSocket.DiscordSocketConfig)":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.OnLoginAsync(TokenType,System.String)":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.OnLogoutAsync":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.ConnectAsync(System.Boolean)":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.DisconnectAsync":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.GetApplicationInfoAsync":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.GetGuild(System.UInt64)":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.CreateGuildAsync(System.String,IVoiceRegion,Stream)":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.GetChannel(System.UInt64)":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.GetConnectionsAsync":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.GetInviteAsync(System.String)":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.GetUser(System.UInt64)":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.GetUser(System.String,System.String)":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.GetVoiceRegion(System.String)":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.DownloadAllUsersAsync":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.DownloadUsersAsync(IEnumerable{Discord.WebSocket.SocketGuild})":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.SetStatusAsync(UserStatus)":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.SetGameAsync(System.String,System.String,StreamType)":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.Connected":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.Disconnected":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.Ready":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.LatencyUpdated":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.ChannelCreated":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.ChannelDestroyed":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.ChannelUpdated":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.MessageReceived":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.MessageDeleted":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.MessageUpdated":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.ReactionAdded":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.ReactionRemoved":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.ReactionsCleared":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.RoleCreated":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.RoleDeleted":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.RoleUpdated":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.JoinedGuild":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.LeftGuild":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.GuildAvailable":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.GuildUnavailable":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.GuildMembersDownloaded":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.GuildUpdated":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.UserJoined":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.UserLeft":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.UserBanned":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.UserUnbanned":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.UserUpdated":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.GuildMemberUpdated":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.UserPresenceUpdated":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.UserVoiceStateUpdated":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.CurrentUserUpdated":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.UserIsTyping":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.RecipientAdded":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketClient.RecipientRemoved":"Discord.WebSocket.DiscordSocketClient.yml","Discord.WebSocket.DiscordSocketConfig":"Discord.WebSocket.DiscordSocketConfig.yml","Discord.WebSocket.DiscordSocketConfig.GatewayEncoding":"Discord.WebSocket.DiscordSocketConfig.yml","Discord.WebSocket.DiscordSocketConfig.ConnectionTimeout":"Discord.WebSocket.DiscordSocketConfig.yml","Discord.WebSocket.DiscordSocketConfig.ShardId":"Discord.WebSocket.DiscordSocketConfig.yml","Discord.WebSocket.DiscordSocketConfig.TotalShards":"Discord.WebSocket.DiscordSocketConfig.yml","Discord.WebSocket.DiscordSocketConfig.MessageCacheSize":"Discord.WebSocket.DiscordSocketConfig.yml","Discord.WebSocket.DiscordSocketConfig.LargeThreshold":"Discord.WebSocket.DiscordSocketConfig.yml","Discord.WebSocket.DiscordSocketConfig.AudioMode":"Discord.WebSocket.DiscordSocketConfig.yml","Discord.WebSocket.DiscordSocketConfig.WebSocketProvider":"Discord.WebSocket.DiscordSocketConfig.yml","Discord.WebSocket.DiscordSocketConfig.UdpSocketProvider":"Discord.WebSocket.DiscordSocketConfig.yml","Discord.WebSocket.DiscordSocketConfig.DownloadUsersOnGuildAvailable":"Discord.WebSocket.DiscordSocketConfig.yml","Discord.WebSocket.DiscordSocketConfig.#ctor":"Discord.WebSocket.DiscordSocketConfig.yml","Discord.WebSocket.SocketEntity`1":"Discord.WebSocket.SocketEntity-1.yml","Discord.WebSocket.SocketEntity`1.Discord":"Discord.WebSocket.SocketEntity-1.yml","Discord.WebSocket.SocketEntity`1.Id":"Discord.WebSocket.SocketEntity-1.yml","Discord.WebSocket.ISocketAudioChannel":"Discord.WebSocket.ISocketAudioChannel.yml","Discord.WebSocket.ISocketAudioChannel.ConnectAsync":"Discord.WebSocket.ISocketAudioChannel.yml","Discord.WebSocket.ISocketMessageChannel":"Discord.WebSocket.ISocketMessageChannel.yml","Discord.WebSocket.ISocketMessageChannel.CachedMessages":"Discord.WebSocket.ISocketMessageChannel.yml","Discord.WebSocket.ISocketMessageChannel.SendMessageAsync(System.String,System.Boolean,Embed,RequestOptions)":"Discord.WebSocket.ISocketMessageChannel.yml","Discord.WebSocket.ISocketMessageChannel.SendFileAsync(Stream,System.String,System.String,System.Boolean,RequestOptions)":"Discord.WebSocket.ISocketMessageChannel.yml","Discord.WebSocket.ISocketMessageChannel.GetCachedMessage(System.UInt64)":"Discord.WebSocket.ISocketMessageChannel.yml","Discord.WebSocket.ISocketMessageChannel.GetCachedMessages(System.Int32)":"Discord.WebSocket.ISocketMessageChannel.yml","Discord.WebSocket.ISocketMessageChannel.GetCachedMessages(System.UInt64,Direction,System.Int32)":"Discord.WebSocket.ISocketMessageChannel.yml","Discord.WebSocket.ISocketMessageChannel.GetCachedMessages(IMessage,Direction,System.Int32)":"Discord.WebSocket.ISocketMessageChannel.yml","Discord.WebSocket.ISocketMessageChannel.GetPinnedMessagesAsync(RequestOptions)":"Discord.WebSocket.ISocketMessageChannel.yml","Discord.WebSocket.ISocketPrivateChannel":"Discord.WebSocket.ISocketPrivateChannel.yml","Discord.WebSocket.ISocketPrivateChannel.Recipients":"Discord.WebSocket.ISocketPrivateChannel.yml","Discord.WebSocket.SocketChannel":"Discord.WebSocket.SocketChannel.yml","Discord.WebSocket.SocketChannel.CreatedAt":"Discord.WebSocket.SocketChannel.yml","Discord.WebSocket.SocketChannel.Users":"Discord.WebSocket.SocketChannel.yml","Discord.WebSocket.SocketChannel.GetUser(System.UInt64)":"Discord.WebSocket.SocketChannel.yml","Discord.WebSocket.SocketDMChannel":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketDMChannel.Recipient":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketDMChannel.CachedMessages":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketDMChannel.Users":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketDMChannel.CloseAsync(RequestOptions)":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketDMChannel.GetCachedMessage(System.UInt64)":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketDMChannel.GetMessageAsync(System.UInt64,RequestOptions)":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketDMChannel.GetMessagesAsync(System.Int32,RequestOptions)":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketDMChannel.GetMessagesAsync(System.UInt64,Direction,System.Int32,RequestOptions)":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketDMChannel.GetMessagesAsync(IMessage,Direction,System.Int32,RequestOptions)":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketDMChannel.GetCachedMessages(System.Int32)":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketDMChannel.GetCachedMessages(System.UInt64,Direction,System.Int32)":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketDMChannel.GetCachedMessages(IMessage,Direction,System.Int32)":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketDMChannel.GetPinnedMessagesAsync(RequestOptions)":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketDMChannel.SendMessageAsync(System.String,System.Boolean,Embed,RequestOptions)":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketDMChannel.SendFileAsync(Stream,System.String,System.String,System.Boolean,RequestOptions)":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketDMChannel.DeleteMessagesAsync(IEnumerable{IMessage},RequestOptions)":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketDMChannel.TriggerTypingAsync(RequestOptions)":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketDMChannel.EnterTypingState(RequestOptions)":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketDMChannel.GetUser(System.UInt64)":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketDMChannel.ToString":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketDMChannel.Discord#WebSocket#ISocketPrivateChannel#Recipients":"Discord.WebSocket.SocketDMChannel.yml","Discord.WebSocket.SocketGroupChannel":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.Name":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.CachedMessages":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.Users":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.Recipients":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.LeaveAsync(RequestOptions)":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.ConnectAsync":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.GetCachedMessage(System.UInt64)":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.GetMessageAsync(System.UInt64,RequestOptions)":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.GetMessagesAsync(System.Int32,RequestOptions)":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.GetMessagesAsync(System.UInt64,Direction,System.Int32,RequestOptions)":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.GetMessagesAsync(IMessage,Direction,System.Int32,RequestOptions)":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.GetCachedMessages(System.Int32)":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.GetCachedMessages(System.UInt64,Direction,System.Int32)":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.GetCachedMessages(IMessage,Direction,System.Int32)":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.GetPinnedMessagesAsync(RequestOptions)":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.SendMessageAsync(System.String,System.Boolean,Embed,RequestOptions)":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.SendFileAsync(Stream,System.String,System.String,System.Boolean,RequestOptions)":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.DeleteMessagesAsync(IEnumerable{IMessage},RequestOptions)":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.TriggerTypingAsync(RequestOptions)":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.EnterTypingState(RequestOptions)":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.GetUser(System.UInt64)":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.ToString":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGroupChannel.Discord#WebSocket#ISocketPrivateChannel#Recipients":"Discord.WebSocket.SocketGroupChannel.yml","Discord.WebSocket.SocketGuildChannel":"Discord.WebSocket.SocketGuildChannel.yml","Discord.WebSocket.SocketGuildChannel.Guild":"Discord.WebSocket.SocketGuildChannel.yml","Discord.WebSocket.SocketGuildChannel.Name":"Discord.WebSocket.SocketGuildChannel.yml","Discord.WebSocket.SocketGuildChannel.Position":"Discord.WebSocket.SocketGuildChannel.yml","Discord.WebSocket.SocketGuildChannel.PermissionOverwrites":"Discord.WebSocket.SocketGuildChannel.yml","Discord.WebSocket.SocketGuildChannel.Users":"Discord.WebSocket.SocketGuildChannel.yml","Discord.WebSocket.SocketGuildChannel.ModifyAsync(Action{GuildChannelProperties},RequestOptions)":"Discord.WebSocket.SocketGuildChannel.yml","Discord.WebSocket.SocketGuildChannel.DeleteAsync(RequestOptions)":"Discord.WebSocket.SocketGuildChannel.yml","Discord.WebSocket.SocketGuildChannel.GetPermissionOverwrite(IUser)":"Discord.WebSocket.SocketGuildChannel.yml","Discord.WebSocket.SocketGuildChannel.GetPermissionOverwrite(IRole)":"Discord.WebSocket.SocketGuildChannel.yml","Discord.WebSocket.SocketGuildChannel.AddPermissionOverwriteAsync(IUser,OverwritePermissions,RequestOptions)":"Discord.WebSocket.SocketGuildChannel.yml","Discord.WebSocket.SocketGuildChannel.AddPermissionOverwriteAsync(IRole,OverwritePermissions,RequestOptions)":"Discord.WebSocket.SocketGuildChannel.yml","Discord.WebSocket.SocketGuildChannel.RemovePermissionOverwriteAsync(IUser,RequestOptions)":"Discord.WebSocket.SocketGuildChannel.yml","Discord.WebSocket.SocketGuildChannel.RemovePermissionOverwriteAsync(IRole,RequestOptions)":"Discord.WebSocket.SocketGuildChannel.yml","Discord.WebSocket.SocketGuildChannel.GetInvitesAsync(RequestOptions)":"Discord.WebSocket.SocketGuildChannel.yml","Discord.WebSocket.SocketGuildChannel.CreateInviteAsync(System.Nullable{System.Int32},System.Nullable{System.Int32},System.Boolean,RequestOptions)":"Discord.WebSocket.SocketGuildChannel.yml","Discord.WebSocket.SocketGuildChannel.GetUser(System.UInt64)":"Discord.WebSocket.SocketGuildChannel.yml","Discord.WebSocket.SocketGuildChannel.ToString":"Discord.WebSocket.SocketGuildChannel.yml","Discord.WebSocket.SocketTextChannel":"Discord.WebSocket.SocketTextChannel.yml","Discord.WebSocket.SocketTextChannel.Topic":"Discord.WebSocket.SocketTextChannel.yml","Discord.WebSocket.SocketTextChannel.Mention":"Discord.WebSocket.SocketTextChannel.yml","Discord.WebSocket.SocketTextChannel.CachedMessages":"Discord.WebSocket.SocketTextChannel.yml","Discord.WebSocket.SocketTextChannel.Users":"Discord.WebSocket.SocketTextChannel.yml","Discord.WebSocket.SocketTextChannel.ModifyAsync(Action{TextChannelProperties},RequestOptions)":"Discord.WebSocket.SocketTextChannel.yml","Discord.WebSocket.SocketTextChannel.GetCachedMessage(System.UInt64)":"Discord.WebSocket.SocketTextChannel.yml","Discord.WebSocket.SocketTextChannel.GetMessageAsync(System.UInt64,RequestOptions)":"Discord.WebSocket.SocketTextChannel.yml","Discord.WebSocket.SocketTextChannel.GetMessagesAsync(System.Int32,RequestOptions)":"Discord.WebSocket.SocketTextChannel.yml","Discord.WebSocket.SocketTextChannel.GetMessagesAsync(System.UInt64,Direction,System.Int32,RequestOptions)":"Discord.WebSocket.SocketTextChannel.yml","Discord.WebSocket.SocketTextChannel.GetMessagesAsync(IMessage,Direction,System.Int32,RequestOptions)":"Discord.WebSocket.SocketTextChannel.yml","Discord.WebSocket.SocketTextChannel.GetCachedMessages(System.Int32)":"Discord.WebSocket.SocketTextChannel.yml","Discord.WebSocket.SocketTextChannel.GetCachedMessages(System.UInt64,Direction,System.Int32)":"Discord.WebSocket.SocketTextChannel.yml","Discord.WebSocket.SocketTextChannel.GetCachedMessages(IMessage,Direction,System.Int32)":"Discord.WebSocket.SocketTextChannel.yml","Discord.WebSocket.SocketTextChannel.GetPinnedMessagesAsync(RequestOptions)":"Discord.WebSocket.SocketTextChannel.yml","Discord.WebSocket.SocketTextChannel.SendMessageAsync(System.String,System.Boolean,Embed,RequestOptions)":"Discord.WebSocket.SocketTextChannel.yml","Discord.WebSocket.SocketTextChannel.SendFileAsync(Stream,System.String,System.String,System.Boolean,RequestOptions)":"Discord.WebSocket.SocketTextChannel.yml","Discord.WebSocket.SocketTextChannel.DeleteMessagesAsync(IEnumerable{IMessage},RequestOptions)":"Discord.WebSocket.SocketTextChannel.yml","Discord.WebSocket.SocketTextChannel.TriggerTypingAsync(RequestOptions)":"Discord.WebSocket.SocketTextChannel.yml","Discord.WebSocket.SocketTextChannel.EnterTypingState(RequestOptions)":"Discord.WebSocket.SocketTextChannel.yml","Discord.WebSocket.SocketTextChannel.GetUser(System.UInt64)":"Discord.WebSocket.SocketTextChannel.yml","Discord.WebSocket.SocketVoiceChannel":"Discord.WebSocket.SocketVoiceChannel.yml","Discord.WebSocket.SocketVoiceChannel.Bitrate":"Discord.WebSocket.SocketVoiceChannel.yml","Discord.WebSocket.SocketVoiceChannel.UserLimit":"Discord.WebSocket.SocketVoiceChannel.yml","Discord.WebSocket.SocketVoiceChannel.Users":"Discord.WebSocket.SocketVoiceChannel.yml","Discord.WebSocket.SocketVoiceChannel.ModifyAsync(Action{VoiceChannelProperties},RequestOptions)":"Discord.WebSocket.SocketVoiceChannel.yml","Discord.WebSocket.SocketVoiceChannel.ConnectAsync":"Discord.WebSocket.SocketVoiceChannel.yml","Discord.WebSocket.SocketVoiceChannel.GetUser(System.UInt64)":"Discord.WebSocket.SocketVoiceChannel.yml","Discord.WebSocket.SocketGuild":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.Name":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.AFKTimeout":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.IsEmbeddable":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.VerificationLevel":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.MfaLevel":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.DefaultMessageNotifications":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.MemberCount":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.DownloadedMemberCount":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.AFKChannelId":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.EmbedChannelId":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.OwnerId":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.VoiceRegionId":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.IconId":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.SplashId":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.CreatedAt":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.DefaultChannelId":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.IconUrl":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.SplashUrl":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.HasAllMembers":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.IsSynced":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.SyncPromise":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.DownloaderPromise":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.AudioClient":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.CurrentUser":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.EveryoneRole":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.Channels":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.Emojis":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.Features":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.Users":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.Roles":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.DeleteAsync(RequestOptions)":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.ModifyAsync(Action{GuildProperties},RequestOptions)":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.ModifyEmbedAsync(Action{GuildEmbedProperties},RequestOptions)":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.ModifyChannelsAsync(IEnumerable{BulkGuildChannelProperties},RequestOptions)":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.ModifyRolesAsync(IEnumerable{BulkRoleProperties},RequestOptions)":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.LeaveAsync(RequestOptions)":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.GetBansAsync(RequestOptions)":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.AddBanAsync(IUser,System.Int32,RequestOptions)":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.AddBanAsync(System.UInt64,System.Int32,RequestOptions)":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.RemoveBanAsync(IUser,RequestOptions)":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.RemoveBanAsync(System.UInt64,RequestOptions)":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.GetChannel(System.UInt64)":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.CreateTextChannelAsync(System.String,RequestOptions)":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.CreateVoiceChannelAsync(System.String,RequestOptions)":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.GetIntegrationsAsync(RequestOptions)":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.CreateIntegrationAsync(System.UInt64,System.String,RequestOptions)":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.GetInvitesAsync(RequestOptions)":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.GetRole(System.UInt64)":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.CreateRoleAsync(System.String,System.Nullable{GuildPermissions},System.Nullable{Color},System.Boolean,RequestOptions)":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.GetUser(System.UInt64)":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.PruneUsersAsync(System.Int32,System.Boolean,RequestOptions)":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.DownloadUsersAsync":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketGuild.ToString":"Discord.WebSocket.SocketGuild.yml","Discord.WebSocket.SocketMessage":"Discord.WebSocket.SocketMessage.yml","Discord.WebSocket.SocketMessage.Author":"Discord.WebSocket.SocketMessage.yml","Discord.WebSocket.SocketMessage.Channel":"Discord.WebSocket.SocketMessage.yml","Discord.WebSocket.SocketMessage.Content":"Discord.WebSocket.SocketMessage.yml","Discord.WebSocket.SocketMessage.CreatedAt":"Discord.WebSocket.SocketMessage.yml","Discord.WebSocket.SocketMessage.IsTTS":"Discord.WebSocket.SocketMessage.yml","Discord.WebSocket.SocketMessage.IsPinned":"Discord.WebSocket.SocketMessage.yml","Discord.WebSocket.SocketMessage.EditedTimestamp":"Discord.WebSocket.SocketMessage.yml","Discord.WebSocket.SocketMessage.Attachments":"Discord.WebSocket.SocketMessage.yml","Discord.WebSocket.SocketMessage.Embeds":"Discord.WebSocket.SocketMessage.yml","Discord.WebSocket.SocketMessage.MentionedChannels":"Discord.WebSocket.SocketMessage.yml","Discord.WebSocket.SocketMessage.MentionedRoles":"Discord.WebSocket.SocketMessage.yml","Discord.WebSocket.SocketMessage.MentionedUsers":"Discord.WebSocket.SocketMessage.yml","Discord.WebSocket.SocketMessage.Tags":"Discord.WebSocket.SocketMessage.yml","Discord.WebSocket.SocketMessage.WebhookId":"Discord.WebSocket.SocketMessage.yml","Discord.WebSocket.SocketMessage.IsWebhook":"Discord.WebSocket.SocketMessage.yml","Discord.WebSocket.SocketMessage.Timestamp":"Discord.WebSocket.SocketMessage.yml","Discord.WebSocket.SocketMessage.DeleteAsync(RequestOptions)":"Discord.WebSocket.SocketMessage.yml","Discord.WebSocket.SocketMessage.ToString":"Discord.WebSocket.SocketMessage.yml","Discord.WebSocket.SocketReaction":"Discord.WebSocket.SocketReaction.yml","Discord.WebSocket.SocketReaction.UserId":"Discord.WebSocket.SocketReaction.yml","Discord.WebSocket.SocketReaction.User":"Discord.WebSocket.SocketReaction.yml","Discord.WebSocket.SocketReaction.MessageId":"Discord.WebSocket.SocketReaction.yml","Discord.WebSocket.SocketReaction.Message":"Discord.WebSocket.SocketReaction.yml","Discord.WebSocket.SocketReaction.Channel":"Discord.WebSocket.SocketReaction.yml","Discord.WebSocket.SocketReaction.Emoji":"Discord.WebSocket.SocketReaction.yml","Discord.WebSocket.SocketUserMessage":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.IsTTS":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.IsPinned":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.WebhookId":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.EditedTimestamp":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.Attachments":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.Embeds":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.Tags":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.MentionedChannels":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.MentionedRoles":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.MentionedUsers":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.Reactions":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.ModifyAsync(Action{MessageProperties},RequestOptions)":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.AddReactionAsync(Emoji,RequestOptions)":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.AddReactionAsync(System.String,RequestOptions)":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.RemoveReactionAsync(Emoji,IUser,RequestOptions)":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.RemoveReactionAsync(System.String,IUser,RequestOptions)":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.RemoveAllReactionsAsync(RequestOptions)":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.GetReactionUsersAsync(System.String,System.Int32,System.Nullable{System.UInt64},RequestOptions)":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.PinAsync(RequestOptions)":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.UnpinAsync(RequestOptions)":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.Resolve(System.Int32,TagHandling,TagHandling,TagHandling,TagHandling,TagHandling)":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketUserMessage.Resolve(TagHandling,TagHandling,TagHandling,TagHandling,TagHandling)":"Discord.WebSocket.SocketUserMessage.yml","Discord.WebSocket.SocketRole":"Discord.WebSocket.SocketRole.yml","Discord.WebSocket.SocketRole.Guild":"Discord.WebSocket.SocketRole.yml","Discord.WebSocket.SocketRole.Color":"Discord.WebSocket.SocketRole.yml","Discord.WebSocket.SocketRole.IsHoisted":"Discord.WebSocket.SocketRole.yml","Discord.WebSocket.SocketRole.IsManaged":"Discord.WebSocket.SocketRole.yml","Discord.WebSocket.SocketRole.IsMentionable":"Discord.WebSocket.SocketRole.yml","Discord.WebSocket.SocketRole.Name":"Discord.WebSocket.SocketRole.yml","Discord.WebSocket.SocketRole.Permissions":"Discord.WebSocket.SocketRole.yml","Discord.WebSocket.SocketRole.Position":"Discord.WebSocket.SocketRole.yml","Discord.WebSocket.SocketRole.CreatedAt":"Discord.WebSocket.SocketRole.yml","Discord.WebSocket.SocketRole.IsEveryone":"Discord.WebSocket.SocketRole.yml","Discord.WebSocket.SocketRole.Mention":"Discord.WebSocket.SocketRole.yml","Discord.WebSocket.SocketRole.ModifyAsync(Action{RoleProperties},RequestOptions)":"Discord.WebSocket.SocketRole.yml","Discord.WebSocket.SocketRole.DeleteAsync(RequestOptions)":"Discord.WebSocket.SocketRole.yml","Discord.WebSocket.SocketRole.ToString":"Discord.WebSocket.SocketRole.yml","Discord.WebSocket.SocketRole.CompareTo(IRole)":"Discord.WebSocket.SocketRole.yml","Discord.WebSocket.SocketGroupUser":"Discord.WebSocket.SocketGroupUser.yml","Discord.WebSocket.SocketGroupUser.Channel":"Discord.WebSocket.SocketGroupUser.yml","Discord.WebSocket.SocketGroupUser.IsBot":"Discord.WebSocket.SocketGroupUser.yml","Discord.WebSocket.SocketGroupUser.Username":"Discord.WebSocket.SocketGroupUser.yml","Discord.WebSocket.SocketGroupUser.DiscriminatorValue":"Discord.WebSocket.SocketGroupUser.yml","Discord.WebSocket.SocketGroupUser.AvatarId":"Discord.WebSocket.SocketGroupUser.yml","Discord.WebSocket.SocketGuildUser":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketGuildUser.Guild":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketGuildUser.Nickname":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketGuildUser.IsBot":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketGuildUser.Username":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketGuildUser.DiscriminatorValue":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketGuildUser.AvatarId":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketGuildUser.GuildPermissions":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketGuildUser.IsSelfDeafened":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketGuildUser.IsSelfMuted":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketGuildUser.IsSuppressed":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketGuildUser.IsDeafened":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketGuildUser.IsMuted":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketGuildUser.JoinedAt":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketGuildUser.RoleIds":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketGuildUser.VoiceChannel":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketGuildUser.VoiceSessionId":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketGuildUser.VoiceState":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketGuildUser.Hierarchy":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketGuildUser.ModifyAsync(Action{GuildUserProperties},RequestOptions)":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketGuildUser.KickAsync(RequestOptions)":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketGuildUser.GetPermissions(IGuildChannel)":"Discord.WebSocket.SocketGuildUser.yml","Discord.WebSocket.SocketPresence":"Discord.WebSocket.SocketPresence.yml","Discord.WebSocket.SocketPresence.Status":"Discord.WebSocket.SocketPresence.yml","Discord.WebSocket.SocketPresence.Game":"Discord.WebSocket.SocketPresence.yml","Discord.WebSocket.SocketPresence.ToString":"Discord.WebSocket.SocketPresence.yml","Discord.WebSocket.SocketSelfUser":"Discord.WebSocket.SocketSelfUser.yml","Discord.WebSocket.SocketSelfUser.Email":"Discord.WebSocket.SocketSelfUser.yml","Discord.WebSocket.SocketSelfUser.IsVerified":"Discord.WebSocket.SocketSelfUser.yml","Discord.WebSocket.SocketSelfUser.IsMfaEnabled":"Discord.WebSocket.SocketSelfUser.yml","Discord.WebSocket.SocketSelfUser.IsBot":"Discord.WebSocket.SocketSelfUser.yml","Discord.WebSocket.SocketSelfUser.Username":"Discord.WebSocket.SocketSelfUser.yml","Discord.WebSocket.SocketSelfUser.DiscriminatorValue":"Discord.WebSocket.SocketSelfUser.yml","Discord.WebSocket.SocketSelfUser.AvatarId":"Discord.WebSocket.SocketSelfUser.yml","Discord.WebSocket.SocketSelfUser.ModifyAsync(Action{SelfUserProperties},RequestOptions)":"Discord.WebSocket.SocketSelfUser.yml","Discord.WebSocket.SocketSimpleUser":"Discord.WebSocket.SocketSimpleUser.yml","Discord.WebSocket.SocketSimpleUser.IsBot":"Discord.WebSocket.SocketSimpleUser.yml","Discord.WebSocket.SocketSimpleUser.Username":"Discord.WebSocket.SocketSimpleUser.yml","Discord.WebSocket.SocketSimpleUser.DiscriminatorValue":"Discord.WebSocket.SocketSimpleUser.yml","Discord.WebSocket.SocketSimpleUser.AvatarId":"Discord.WebSocket.SocketSimpleUser.yml","Discord.WebSocket.SocketUser":"Discord.WebSocket.SocketUser.yml","Discord.WebSocket.SocketUser.IsBot":"Discord.WebSocket.SocketUser.yml","Discord.WebSocket.SocketUser.Username":"Discord.WebSocket.SocketUser.yml","Discord.WebSocket.SocketUser.DiscriminatorValue":"Discord.WebSocket.SocketUser.yml","Discord.WebSocket.SocketUser.AvatarId":"Discord.WebSocket.SocketUser.yml","Discord.WebSocket.SocketUser.AvatarUrl":"Discord.WebSocket.SocketUser.yml","Discord.WebSocket.SocketUser.CreatedAt":"Discord.WebSocket.SocketUser.yml","Discord.WebSocket.SocketUser.Discriminator":"Discord.WebSocket.SocketUser.yml","Discord.WebSocket.SocketUser.Mention":"Discord.WebSocket.SocketUser.yml","Discord.WebSocket.SocketUser.Game":"Discord.WebSocket.SocketUser.yml","Discord.WebSocket.SocketUser.Status":"Discord.WebSocket.SocketUser.yml","Discord.WebSocket.SocketUser.CreateDMChannelAsync(RequestOptions)":"Discord.WebSocket.SocketUser.yml","Discord.WebSocket.SocketUser.ToString":"Discord.WebSocket.SocketUser.yml","Discord.WebSocket.SocketVoiceState":"Discord.WebSocket.SocketVoiceState.yml","Discord.WebSocket.SocketVoiceState.Default":"Discord.WebSocket.SocketVoiceState.yml","Discord.WebSocket.SocketVoiceState.VoiceChannel":"Discord.WebSocket.SocketVoiceState.yml","Discord.WebSocket.SocketVoiceState.VoiceSessionId":"Discord.WebSocket.SocketVoiceState.yml","Discord.WebSocket.SocketVoiceState.IsMuted":"Discord.WebSocket.SocketVoiceState.yml","Discord.WebSocket.SocketVoiceState.IsDeafened":"Discord.WebSocket.SocketVoiceState.yml","Discord.WebSocket.SocketVoiceState.IsSuppressed":"Discord.WebSocket.SocketVoiceState.yml","Discord.WebSocket.SocketVoiceState.IsSelfMuted":"Discord.WebSocket.SocketVoiceState.yml","Discord.WebSocket.SocketVoiceState.IsSelfDeafened":"Discord.WebSocket.SocketVoiceState.yml","Discord.WebSocket.SocketVoiceState.ToString":"Discord.WebSocket.SocketVoiceState.yml","Discord.Audio":"Discord.Audio.yml","Discord.Audio.AudioMode":"Discord.Audio.AudioMode.yml","Discord.Audio.AudioMode.Disabled":"Discord.Audio.AudioMode.yml","Discord.Audio.AudioMode.Outgoing":"Discord.Audio.AudioMode.yml","Discord.Audio.AudioMode.Incoming":"Discord.Audio.AudioMode.yml","Discord.Audio.AudioMode.Both":"Discord.Audio.AudioMode.yml","Discord.Audio.OpusApplication":"Discord.Audio.OpusApplication.yml","Discord.Audio.OpusApplication.Voice":"Discord.Audio.OpusApplication.yml","Discord.Audio.OpusApplication.MusicOrMixed":"Discord.Audio.OpusApplication.yml","Discord.Audio.OpusApplication.LowLatency":"Discord.Audio.OpusApplication.yml","Discord.Audio.SecretBox":"Discord.Audio.SecretBox.yml","Discord.Audio.SecretBox.Encrypt(System.Byte[],System.Int32,System.Int32,System.Byte[],System.Int32,System.Byte[],System.Byte[])":"Discord.Audio.SecretBox.yml","Discord.Audio.SecretBox.Decrypt(System.Byte[],System.Int32,System.Int32,System.Byte[],System.Int32,System.Byte[],System.Byte[])":"Discord.Audio.SecretBox.yml","Discord.Audio.AudioInStream":"Discord.Audio.AudioInStream.yml","Discord.Audio.AudioOutStream":"Discord.Audio.AudioOutStream.yml","Discord.Audio.AudioOutStream.CanRead":"Discord.Audio.AudioOutStream.yml","Discord.Audio.AudioOutStream.CanSeek":"Discord.Audio.AudioOutStream.yml","Discord.Audio.AudioOutStream.CanWrite":"Discord.Audio.AudioOutStream.yml","Discord.Audio.AudioOutStream.Clear":"Discord.Audio.AudioOutStream.yml","Discord.Audio.AudioOutStream.ClearAsync(CancellationToken)":"Discord.Audio.AudioOutStream.yml","Discord.Audio.IAudioClient":"Discord.Audio.IAudioClient.yml","Discord.Audio.IAudioClient.Connected":"Discord.Audio.IAudioClient.yml","Discord.Audio.IAudioClient.Disconnected":"Discord.Audio.IAudioClient.yml","Discord.Audio.IAudioClient.LatencyUpdated":"Discord.Audio.IAudioClient.yml","Discord.Audio.IAudioClient.ConnectionState":"Discord.Audio.IAudioClient.yml","Discord.Audio.IAudioClient.Latency":"Discord.Audio.IAudioClient.yml","Discord.Audio.IAudioClient.DisconnectAsync":"Discord.Audio.IAudioClient.yml","Discord.Audio.IAudioClient.CreateOpusStream(System.Int32,System.Int32)":"Discord.Audio.IAudioClient.yml","Discord.Audio.IAudioClient.CreateDirectOpusStream(System.Int32)":"Discord.Audio.IAudioClient.yml","Discord.Audio.IAudioClient.CreatePCMStream(System.Int32,System.Int32,System.Nullable{System.Int32},System.Int32)":"Discord.Audio.IAudioClient.yml","Discord.Audio.IAudioClient.CreateDirectPCMStream(System.Int32,System.Int32,System.Nullable{System.Int32})":"Discord.Audio.IAudioClient.yml","Discord.Commands.Builders":"Discord.Commands.Builders.yml","Discord.Commands.Builders.CommandBuilder":"Discord.Commands.Builders.CommandBuilder.yml","Discord.Commands.Builders.CommandBuilder.Module":"Discord.Commands.Builders.CommandBuilder.yml","Discord.Commands.Builders.CommandBuilder.Name":"Discord.Commands.Builders.CommandBuilder.yml","Discord.Commands.Builders.CommandBuilder.Summary":"Discord.Commands.Builders.CommandBuilder.yml","Discord.Commands.Builders.CommandBuilder.Remarks":"Discord.Commands.Builders.CommandBuilder.yml","Discord.Commands.Builders.CommandBuilder.RunMode":"Discord.Commands.Builders.CommandBuilder.yml","Discord.Commands.Builders.CommandBuilder.Priority":"Discord.Commands.Builders.CommandBuilder.yml","Discord.Commands.Builders.CommandBuilder.Preconditions":"Discord.Commands.Builders.CommandBuilder.yml","Discord.Commands.Builders.CommandBuilder.Parameters":"Discord.Commands.Builders.CommandBuilder.yml","Discord.Commands.Builders.CommandBuilder.Aliases":"Discord.Commands.Builders.CommandBuilder.yml","Discord.Commands.Builders.CommandBuilder.WithName(System.String)":"Discord.Commands.Builders.CommandBuilder.yml","Discord.Commands.Builders.CommandBuilder.WithSummary(System.String)":"Discord.Commands.Builders.CommandBuilder.yml","Discord.Commands.Builders.CommandBuilder.WithRemarks(System.String)":"Discord.Commands.Builders.CommandBuilder.yml","Discord.Commands.Builders.CommandBuilder.WithRunMode(Discord.Commands.RunMode)":"Discord.Commands.Builders.CommandBuilder.yml","Discord.Commands.Builders.CommandBuilder.WithPriority(System.Int32)":"Discord.Commands.Builders.CommandBuilder.yml","Discord.Commands.Builders.CommandBuilder.AddAliases(System.String[])":"Discord.Commands.Builders.CommandBuilder.yml","Discord.Commands.Builders.CommandBuilder.AddPrecondition(Discord.Commands.PreconditionAttribute)":"Discord.Commands.Builders.CommandBuilder.yml","Discord.Commands.Builders.CommandBuilder.AddParameter``1(System.String,Action{Discord.Commands.Builders.ParameterBuilder})":"Discord.Commands.Builders.CommandBuilder.yml","Discord.Commands.Builders.CommandBuilder.AddParameter(System.String,Type,Action{Discord.Commands.Builders.ParameterBuilder})":"Discord.Commands.Builders.CommandBuilder.yml","Discord.Commands.Builders.ModuleBuilder":"Discord.Commands.Builders.ModuleBuilder.yml","Discord.Commands.Builders.ModuleBuilder.Service":"Discord.Commands.Builders.ModuleBuilder.yml","Discord.Commands.Builders.ModuleBuilder.Parent":"Discord.Commands.Builders.ModuleBuilder.yml","Discord.Commands.Builders.ModuleBuilder.Name":"Discord.Commands.Builders.ModuleBuilder.yml","Discord.Commands.Builders.ModuleBuilder.Summary":"Discord.Commands.Builders.ModuleBuilder.yml","Discord.Commands.Builders.ModuleBuilder.Remarks":"Discord.Commands.Builders.ModuleBuilder.yml","Discord.Commands.Builders.ModuleBuilder.Commands":"Discord.Commands.Builders.ModuleBuilder.yml","Discord.Commands.Builders.ModuleBuilder.Modules":"Discord.Commands.Builders.ModuleBuilder.yml","Discord.Commands.Builders.ModuleBuilder.Preconditions":"Discord.Commands.Builders.ModuleBuilder.yml","Discord.Commands.Builders.ModuleBuilder.Aliases":"Discord.Commands.Builders.ModuleBuilder.yml","Discord.Commands.Builders.ModuleBuilder.WithName(System.String)":"Discord.Commands.Builders.ModuleBuilder.yml","Discord.Commands.Builders.ModuleBuilder.WithSummary(System.String)":"Discord.Commands.Builders.ModuleBuilder.yml","Discord.Commands.Builders.ModuleBuilder.WithRemarks(System.String)":"Discord.Commands.Builders.ModuleBuilder.yml","Discord.Commands.Builders.ModuleBuilder.AddAliases(System.String[])":"Discord.Commands.Builders.ModuleBuilder.yml","Discord.Commands.Builders.ModuleBuilder.AddPrecondition(Discord.Commands.PreconditionAttribute)":"Discord.Commands.Builders.ModuleBuilder.yml","Discord.Commands.Builders.ModuleBuilder.AddCommand(System.String,Func{ICommandContext,System.Object[],Discord.Commands.IDependencyMap,Task},Action{Discord.Commands.Builders.CommandBuilder})":"Discord.Commands.Builders.ModuleBuilder.yml","Discord.Commands.Builders.ModuleBuilder.AddModule(System.String,Action{Discord.Commands.Builders.ModuleBuilder})":"Discord.Commands.Builders.ModuleBuilder.yml","Discord.Commands.Builders.ModuleBuilder.Build(Discord.Commands.CommandService)":"Discord.Commands.Builders.ModuleBuilder.yml","Discord.Commands.Builders.ParameterBuilder":"Discord.Commands.Builders.ParameterBuilder.yml","Discord.Commands.Builders.ParameterBuilder.Command":"Discord.Commands.Builders.ParameterBuilder.yml","Discord.Commands.Builders.ParameterBuilder.Name":"Discord.Commands.Builders.ParameterBuilder.yml","Discord.Commands.Builders.ParameterBuilder.ParameterType":"Discord.Commands.Builders.ParameterBuilder.yml","Discord.Commands.Builders.ParameterBuilder.TypeReader":"Discord.Commands.Builders.ParameterBuilder.yml","Discord.Commands.Builders.ParameterBuilder.IsOptional":"Discord.Commands.Builders.ParameterBuilder.yml","Discord.Commands.Builders.ParameterBuilder.IsRemainder":"Discord.Commands.Builders.ParameterBuilder.yml","Discord.Commands.Builders.ParameterBuilder.IsMultiple":"Discord.Commands.Builders.ParameterBuilder.yml","Discord.Commands.Builders.ParameterBuilder.DefaultValue":"Discord.Commands.Builders.ParameterBuilder.yml","Discord.Commands.Builders.ParameterBuilder.Summary":"Discord.Commands.Builders.ParameterBuilder.yml","Discord.Commands.Builders.ParameterBuilder.Preconditions":"Discord.Commands.Builders.ParameterBuilder.yml","Discord.Commands.Builders.ParameterBuilder.WithSummary(System.String)":"Discord.Commands.Builders.ParameterBuilder.yml","Discord.Commands.Builders.ParameterBuilder.WithDefault(System.Object)":"Discord.Commands.Builders.ParameterBuilder.yml","Discord.Commands.Builders.ParameterBuilder.WithIsOptional(System.Boolean)":"Discord.Commands.Builders.ParameterBuilder.yml","Discord.Commands.Builders.ParameterBuilder.WithIsRemainder(System.Boolean)":"Discord.Commands.Builders.ParameterBuilder.yml","Discord.Commands.Builders.ParameterBuilder.WithIsMultiple(System.Boolean)":"Discord.Commands.Builders.ParameterBuilder.yml","Discord.Commands.Builders.ParameterBuilder.AddPrecondition(Discord.Commands.ParameterPreconditionAttribute)":"Discord.Commands.Builders.ParameterBuilder.yml","Discord":"Discord.yml","Discord.CDN":"Discord.CDN.yml","Discord.CDN.GetApplicationIconUrl(System.UInt64,System.String)":"Discord.CDN.yml","Discord.CDN.GetUserAvatarUrl(System.UInt64,System.String)":"Discord.CDN.yml","Discord.CDN.GetGuildIconUrl(System.UInt64,System.String)":"Discord.CDN.yml","Discord.CDN.GetGuildSplashUrl(System.UInt64,System.String)":"Discord.CDN.yml","Discord.CDN.GetChannelIconUrl(System.UInt64,System.String)":"Discord.CDN.yml","Discord.CDN.GetEmojiUrl(System.UInt64)":"Discord.CDN.yml","Discord.ConnectionState":"Discord.ConnectionState.yml","Discord.ConnectionState.Disconnected":"Discord.ConnectionState.yml","Discord.ConnectionState.Connecting":"Discord.ConnectionState.yml","Discord.ConnectionState.Connected":"Discord.ConnectionState.yml","Discord.ConnectionState.Disconnecting":"Discord.ConnectionState.yml","Discord.DiscordConfig":"Discord.DiscordConfig.yml","Discord.DiscordConfig.APIVersion":"Discord.DiscordConfig.yml","Discord.DiscordConfig.Version":"Discord.DiscordConfig.yml","Discord.DiscordConfig.ClientAPIUrl":"Discord.DiscordConfig.yml","Discord.DiscordConfig.CDNUrl":"Discord.DiscordConfig.yml","Discord.DiscordConfig.InviteUrl":"Discord.DiscordConfig.yml","Discord.DiscordConfig.DefaultRequestTimeout":"Discord.DiscordConfig.yml","Discord.DiscordConfig.MaxMessageSize":"Discord.DiscordConfig.yml","Discord.DiscordConfig.MaxMessagesPerBatch":"Discord.DiscordConfig.yml","Discord.DiscordConfig.MaxUsersPerBatch":"Discord.DiscordConfig.yml","Discord.DiscordConfig.DefaultRetryMode":"Discord.DiscordConfig.yml","Discord.DiscordConfig.LogLevel":"Discord.DiscordConfig.yml","Discord.Format":"Discord.Format.yml","Discord.Format.Bold(System.String)":"Discord.Format.yml","Discord.Format.Italics(System.String)":"Discord.Format.yml","Discord.Format.Underline(System.String)":"Discord.Format.yml","Discord.Format.Strikethrough(System.String)":"Discord.Format.yml","Discord.Format.Code(System.String,System.String)":"Discord.Format.yml","Discord.Format.Sanitize(System.String)":"Discord.Format.yml","Discord.IDiscordClient":"Discord.IDiscordClient.yml","Discord.IDiscordClient.ConnectionState":"Discord.IDiscordClient.yml","Discord.IDiscordClient.CurrentUser":"Discord.IDiscordClient.yml","Discord.IDiscordClient.ConnectAsync":"Discord.IDiscordClient.yml","Discord.IDiscordClient.DisconnectAsync":"Discord.IDiscordClient.yml","Discord.IDiscordClient.GetApplicationInfoAsync":"Discord.IDiscordClient.yml","Discord.IDiscordClient.GetChannelAsync(System.UInt64,Discord.CacheMode)":"Discord.IDiscordClient.yml","Discord.IDiscordClient.GetPrivateChannelsAsync(Discord.CacheMode)":"Discord.IDiscordClient.yml","Discord.IDiscordClient.GetConnectionsAsync":"Discord.IDiscordClient.yml","Discord.IDiscordClient.GetGuildAsync(System.UInt64,Discord.CacheMode)":"Discord.IDiscordClient.yml","Discord.IDiscordClient.GetGuildsAsync(Discord.CacheMode)":"Discord.IDiscordClient.yml","Discord.IDiscordClient.CreateGuildAsync(System.String,Discord.IVoiceRegion,Stream)":"Discord.IDiscordClient.yml","Discord.IDiscordClient.GetInviteAsync(System.String)":"Discord.IDiscordClient.yml","Discord.IDiscordClient.GetUserAsync(System.UInt64,Discord.CacheMode)":"Discord.IDiscordClient.yml","Discord.IDiscordClient.GetUserAsync(System.String,System.String)":"Discord.IDiscordClient.yml","Discord.IDiscordClient.GetVoiceRegionsAsync":"Discord.IDiscordClient.yml","Discord.IDiscordClient.GetVoiceRegionAsync(System.String)":"Discord.IDiscordClient.yml","Discord.LoginState":"Discord.LoginState.yml","Discord.LoginState.LoggedOut":"Discord.LoginState.yml","Discord.LoginState.LoggingIn":"Discord.LoginState.yml","Discord.LoginState.LoggedIn":"Discord.LoginState.yml","Discord.LoginState.LoggingOut":"Discord.LoginState.yml","Discord.RequestOptions":"Discord.RequestOptions.yml","Discord.RequestOptions.Default":"Discord.RequestOptions.yml","Discord.RequestOptions.Timeout":"Discord.RequestOptions.yml","Discord.RequestOptions.CancelToken":"Discord.RequestOptions.yml","Discord.RequestOptions.RetryMode":"Discord.RequestOptions.yml","Discord.RequestOptions.HeaderOnly":"Discord.RequestOptions.yml","Discord.RequestOptions.#ctor":"Discord.RequestOptions.yml","Discord.RequestOptions.Clone":"Discord.RequestOptions.yml","Discord.RetryMode":"Discord.RetryMode.yml","Discord.RetryMode.AlwaysFail":"Discord.RetryMode.yml","Discord.RetryMode.RetryTimeouts":"Discord.RetryMode.yml","Discord.RetryMode.RetryRatelimit":"Discord.RetryMode.yml","Discord.RetryMode.Retry502":"Discord.RetryMode.yml","Discord.RetryMode.AlwaysRetry":"Discord.RetryMode.yml","Discord.TokenType":"Discord.TokenType.yml","Discord.TokenType.User":"Discord.TokenType.yml","Discord.TokenType.Bearer":"Discord.TokenType.yml","Discord.TokenType.Bot":"Discord.TokenType.yml","Discord.CacheMode":"Discord.CacheMode.yml","Discord.CacheMode.AllowDownload":"Discord.CacheMode.yml","Discord.CacheMode.CacheOnly":"Discord.CacheMode.yml","Discord.IApplication":"Discord.IApplication.yml","Discord.IApplication.Name":"Discord.IApplication.yml","Discord.IApplication.Description":"Discord.IApplication.yml","Discord.IApplication.RPCOrigins":"Discord.IApplication.yml","Discord.IApplication.Flags":"Discord.IApplication.yml","Discord.IApplication.IconUrl":"Discord.IApplication.yml","Discord.IApplication.Owner":"Discord.IApplication.yml","Discord.IDeletable":"Discord.IDeletable.yml","Discord.IDeletable.DeleteAsync(Discord.RequestOptions)":"Discord.IDeletable.yml","Discord.IEntity`1":"Discord.IEntity-1.yml","Discord.IEntity`1.Id":"Discord.IEntity-1.yml","Discord.Image":"Discord.Image.yml","Discord.Image.Stream":"Discord.Image.yml","Discord.Image.#ctor(Stream)":"Discord.Image.yml","Discord.IMentionable":"Discord.IMentionable.yml","Discord.IMentionable.Mention":"Discord.IMentionable.yml","Discord.ISnowflakeEntity":"Discord.ISnowflakeEntity.yml","Discord.ISnowflakeEntity.CreatedAt":"Discord.ISnowflakeEntity.yml","Discord.IUpdateable":"Discord.IUpdateable.yml","Discord.IUpdateable.UpdateAsync(Discord.RequestOptions)":"Discord.IUpdateable.yml","Discord.BulkGuildChannelProperties":"Discord.BulkGuildChannelProperties.yml","Discord.BulkGuildChannelProperties.Id":"Discord.BulkGuildChannelProperties.yml","Discord.BulkGuildChannelProperties.Position":"Discord.BulkGuildChannelProperties.yml","Discord.BulkGuildChannelProperties.#ctor(System.UInt64,System.Int32)":"Discord.BulkGuildChannelProperties.yml","Discord.Direction":"Discord.Direction.yml","Discord.Direction.Before":"Discord.Direction.yml","Discord.Direction.After":"Discord.Direction.yml","Discord.Direction.Around":"Discord.Direction.yml","Discord.GuildChannelProperties":"Discord.GuildChannelProperties.yml","Discord.GuildChannelProperties.Name":"Discord.GuildChannelProperties.yml","Discord.GuildChannelProperties.Position":"Discord.GuildChannelProperties.yml","Discord.IAudioChannel":"Discord.IAudioChannel.yml","Discord.IChannel":"Discord.IChannel.yml","Discord.IChannel.Name":"Discord.IChannel.yml","Discord.IChannel.GetUsersAsync(Discord.CacheMode,Discord.RequestOptions)":"Discord.IChannel.yml","Discord.IChannel.GetUserAsync(System.UInt64,Discord.CacheMode,Discord.RequestOptions)":"Discord.IChannel.yml","Discord.IDMChannel":"Discord.IDMChannel.yml","Discord.IDMChannel.Recipient":"Discord.IDMChannel.yml","Discord.IDMChannel.CloseAsync(Discord.RequestOptions)":"Discord.IDMChannel.yml","Discord.IGroupChannel":"Discord.IGroupChannel.yml","Discord.IGroupChannel.LeaveAsync(Discord.RequestOptions)":"Discord.IGroupChannel.yml","Discord.IGuildChannel":"Discord.IGuildChannel.yml","Discord.IGuildChannel.Position":"Discord.IGuildChannel.yml","Discord.IGuildChannel.Guild":"Discord.IGuildChannel.yml","Discord.IGuildChannel.GuildId":"Discord.IGuildChannel.yml","Discord.IGuildChannel.PermissionOverwrites":"Discord.IGuildChannel.yml","Discord.IGuildChannel.CreateInviteAsync(System.Nullable{System.Int32},System.Nullable{System.Int32},System.Boolean,Discord.RequestOptions)":"Discord.IGuildChannel.yml","Discord.IGuildChannel.GetInvitesAsync(Discord.RequestOptions)":"Discord.IGuildChannel.yml","Discord.IGuildChannel.ModifyAsync(Action{Discord.GuildChannelProperties},Discord.RequestOptions)":"Discord.IGuildChannel.yml","Discord.IGuildChannel.GetPermissionOverwrite(Discord.IRole)":"Discord.IGuildChannel.yml","Discord.IGuildChannel.GetPermissionOverwrite(Discord.IUser)":"Discord.IGuildChannel.yml","Discord.IGuildChannel.RemovePermissionOverwriteAsync(Discord.IRole,Discord.RequestOptions)":"Discord.IGuildChannel.yml","Discord.IGuildChannel.RemovePermissionOverwriteAsync(Discord.IUser,Discord.RequestOptions)":"Discord.IGuildChannel.yml","Discord.IGuildChannel.AddPermissionOverwriteAsync(Discord.IRole,Discord.OverwritePermissions,Discord.RequestOptions)":"Discord.IGuildChannel.yml","Discord.IGuildChannel.AddPermissionOverwriteAsync(Discord.IUser,Discord.OverwritePermissions,Discord.RequestOptions)":"Discord.IGuildChannel.yml","Discord.IGuildChannel.GetUsersAsync(Discord.CacheMode,Discord.RequestOptions)":"Discord.IGuildChannel.yml","Discord.IGuildChannel.GetUserAsync(System.UInt64,Discord.CacheMode,Discord.RequestOptions)":"Discord.IGuildChannel.yml","Discord.IMessageChannel":"Discord.IMessageChannel.yml","Discord.IMessageChannel.SendMessageAsync(System.String,System.Boolean,Discord.Embed,Discord.RequestOptions)":"Discord.IMessageChannel.yml","Discord.IMessageChannel.SendFileAsync(Stream,System.String,System.String,System.Boolean,Discord.RequestOptions)":"Discord.IMessageChannel.yml","Discord.IMessageChannel.GetMessageAsync(System.UInt64,Discord.CacheMode,Discord.RequestOptions)":"Discord.IMessageChannel.yml","Discord.IMessageChannel.GetMessagesAsync(System.Int32,Discord.CacheMode,Discord.RequestOptions)":"Discord.IMessageChannel.yml","Discord.IMessageChannel.GetMessagesAsync(System.UInt64,Discord.Direction,System.Int32,Discord.CacheMode,Discord.RequestOptions)":"Discord.IMessageChannel.yml","Discord.IMessageChannel.GetMessagesAsync(Discord.IMessage,Discord.Direction,System.Int32,Discord.CacheMode,Discord.RequestOptions)":"Discord.IMessageChannel.yml","Discord.IMessageChannel.GetPinnedMessagesAsync(Discord.RequestOptions)":"Discord.IMessageChannel.yml","Discord.IMessageChannel.DeleteMessagesAsync(IEnumerable{Discord.IMessage},Discord.RequestOptions)":"Discord.IMessageChannel.yml","Discord.IMessageChannel.TriggerTypingAsync(Discord.RequestOptions)":"Discord.IMessageChannel.yml","Discord.IMessageChannel.EnterTypingState(Discord.RequestOptions)":"Discord.IMessageChannel.yml","Discord.IPrivateChannel":"Discord.IPrivateChannel.yml","Discord.IPrivateChannel.Recipients":"Discord.IPrivateChannel.yml","Discord.ITextChannel":"Discord.ITextChannel.yml","Discord.ITextChannel.Topic":"Discord.ITextChannel.yml","Discord.ITextChannel.ModifyAsync(Action{Discord.TextChannelProperties},Discord.RequestOptions)":"Discord.ITextChannel.yml","Discord.IVoiceChannel":"Discord.IVoiceChannel.yml","Discord.IVoiceChannel.Bitrate":"Discord.IVoiceChannel.yml","Discord.IVoiceChannel.UserLimit":"Discord.IVoiceChannel.yml","Discord.IVoiceChannel.ModifyAsync(Action{Discord.VoiceChannelProperties},Discord.RequestOptions)":"Discord.IVoiceChannel.yml","Discord.IVoiceChannel.ConnectAsync":"Discord.IVoiceChannel.yml","Discord.TextChannelProperties":"Discord.TextChannelProperties.yml","Discord.TextChannelProperties.Topic":"Discord.TextChannelProperties.yml","Discord.VoiceChannelProperties":"Discord.VoiceChannelProperties.yml","Discord.VoiceChannelProperties.Bitrate":"Discord.VoiceChannelProperties.yml","Discord.VoiceChannelProperties.UserLimit":"Discord.VoiceChannelProperties.yml","Discord.DefaultMessageNotifications":"Discord.DefaultMessageNotifications.yml","Discord.DefaultMessageNotifications.AllMessages":"Discord.DefaultMessageNotifications.yml","Discord.DefaultMessageNotifications.MentionsOnly":"Discord.DefaultMessageNotifications.yml","Discord.GuildEmbedProperties":"Discord.GuildEmbedProperties.yml","Discord.GuildEmbedProperties.Enabled":"Discord.GuildEmbedProperties.yml","Discord.GuildEmbedProperties.Channel":"Discord.GuildEmbedProperties.yml","Discord.GuildEmbedProperties.ChannelId":"Discord.GuildEmbedProperties.yml","Discord.GuildEmoji":"Discord.GuildEmoji.yml","Discord.GuildEmoji.Id":"Discord.GuildEmoji.yml","Discord.GuildEmoji.Name":"Discord.GuildEmoji.yml","Discord.GuildEmoji.IsManaged":"Discord.GuildEmoji.yml","Discord.GuildEmoji.RequireColons":"Discord.GuildEmoji.yml","Discord.GuildEmoji.RoleIds":"Discord.GuildEmoji.yml","Discord.GuildEmoji.ToString":"Discord.GuildEmoji.yml","Discord.GuildIntegrationProperties":"Discord.GuildIntegrationProperties.yml","Discord.GuildIntegrationProperties.ExpireBehavior":"Discord.GuildIntegrationProperties.yml","Discord.GuildIntegrationProperties.ExpireGracePeriod":"Discord.GuildIntegrationProperties.yml","Discord.GuildIntegrationProperties.EnableEmoticons":"Discord.GuildIntegrationProperties.yml","Discord.GuildProperties":"Discord.GuildProperties.yml","Discord.GuildProperties.Username":"Discord.GuildProperties.yml","Discord.GuildProperties.Name":"Discord.GuildProperties.yml","Discord.GuildProperties.Region":"Discord.GuildProperties.yml","Discord.GuildProperties.RegionId":"Discord.GuildProperties.yml","Discord.GuildProperties.VerificationLevel":"Discord.GuildProperties.yml","Discord.GuildProperties.DefaultMessageNotifications":"Discord.GuildProperties.yml","Discord.GuildProperties.AfkTimeout":"Discord.GuildProperties.yml","Discord.GuildProperties.Icon":"Discord.GuildProperties.yml","Discord.GuildProperties.Splash":"Discord.GuildProperties.yml","Discord.GuildProperties.AfkChannel":"Discord.GuildProperties.yml","Discord.GuildProperties.AfkChannelId":"Discord.GuildProperties.yml","Discord.GuildProperties.Owner":"Discord.GuildProperties.yml","Discord.GuildProperties.OwnerId":"Discord.GuildProperties.yml","Discord.IBan":"Discord.IBan.yml","Discord.IBan.User":"Discord.IBan.yml","Discord.IBan.Reason":"Discord.IBan.yml","Discord.IGuild":"Discord.IGuild.yml","Discord.IGuild.Name":"Discord.IGuild.yml","Discord.IGuild.AFKTimeout":"Discord.IGuild.yml","Discord.IGuild.IsEmbeddable":"Discord.IGuild.yml","Discord.IGuild.DefaultMessageNotifications":"Discord.IGuild.yml","Discord.IGuild.MfaLevel":"Discord.IGuild.yml","Discord.IGuild.VerificationLevel":"Discord.IGuild.yml","Discord.IGuild.IconId":"Discord.IGuild.yml","Discord.IGuild.IconUrl":"Discord.IGuild.yml","Discord.IGuild.SplashId":"Discord.IGuild.yml","Discord.IGuild.SplashUrl":"Discord.IGuild.yml","Discord.IGuild.Available":"Discord.IGuild.yml","Discord.IGuild.AFKChannelId":"Discord.IGuild.yml","Discord.IGuild.DefaultChannelId":"Discord.IGuild.yml","Discord.IGuild.EmbedChannelId":"Discord.IGuild.yml","Discord.IGuild.OwnerId":"Discord.IGuild.yml","Discord.IGuild.VoiceRegionId":"Discord.IGuild.yml","Discord.IGuild.AudioClient":"Discord.IGuild.yml","Discord.IGuild.EveryoneRole":"Discord.IGuild.yml","Discord.IGuild.Emojis":"Discord.IGuild.yml","Discord.IGuild.Features":"Discord.IGuild.yml","Discord.IGuild.Roles":"Discord.IGuild.yml","Discord.IGuild.ModifyAsync(Action{Discord.GuildProperties},Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuild.ModifyEmbedAsync(Action{Discord.GuildEmbedProperties},Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuild.ModifyChannelsAsync(IEnumerable{Discord.BulkGuildChannelProperties},Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuild.ModifyRolesAsync(IEnumerable{Discord.BulkRoleProperties},Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuild.LeaveAsync(Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuild.GetBansAsync(Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuild.AddBanAsync(Discord.IUser,System.Int32,Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuild.AddBanAsync(System.UInt64,System.Int32,Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuild.RemoveBanAsync(Discord.IUser,Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuild.RemoveBanAsync(System.UInt64,Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuild.GetChannelsAsync(Discord.CacheMode,Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuild.GetChannelAsync(System.UInt64,Discord.CacheMode,Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuild.CreateTextChannelAsync(System.String,Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuild.CreateVoiceChannelAsync(System.String,Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuild.GetIntegrationsAsync(Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuild.CreateIntegrationAsync(System.UInt64,System.String,Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuild.GetInvitesAsync(Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuild.GetRole(System.UInt64)":"Discord.IGuild.yml","Discord.IGuild.CreateRoleAsync(System.String,System.Nullable{Discord.GuildPermissions},System.Nullable{Discord.Color},System.Boolean,Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuild.GetUsersAsync(Discord.CacheMode,Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuild.GetUserAsync(System.UInt64,Discord.CacheMode,Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuild.GetCurrentUserAsync(Discord.CacheMode,Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuild.DownloadUsersAsync":"Discord.IGuild.yml","Discord.IGuild.PruneUsersAsync(System.Int32,System.Boolean,Discord.RequestOptions)":"Discord.IGuild.yml","Discord.IGuildIntegration":"Discord.IGuildIntegration.yml","Discord.IGuildIntegration.Id":"Discord.IGuildIntegration.yml","Discord.IGuildIntegration.Name":"Discord.IGuildIntegration.yml","Discord.IGuildIntegration.Type":"Discord.IGuildIntegration.yml","Discord.IGuildIntegration.IsEnabled":"Discord.IGuildIntegration.yml","Discord.IGuildIntegration.IsSyncing":"Discord.IGuildIntegration.yml","Discord.IGuildIntegration.ExpireBehavior":"Discord.IGuildIntegration.yml","Discord.IGuildIntegration.ExpireGracePeriod":"Discord.IGuildIntegration.yml","Discord.IGuildIntegration.SyncedAt":"Discord.IGuildIntegration.yml","Discord.IGuildIntegration.Account":"Discord.IGuildIntegration.yml","Discord.IGuildIntegration.Guild":"Discord.IGuildIntegration.yml","Discord.IGuildIntegration.GuildId":"Discord.IGuildIntegration.yml","Discord.IGuildIntegration.RoleId":"Discord.IGuildIntegration.yml","Discord.IGuildIntegration.User":"Discord.IGuildIntegration.yml","Discord.IntegrationAccount":"Discord.IntegrationAccount.yml","Discord.IntegrationAccount.Id":"Discord.IntegrationAccount.yml","Discord.IntegrationAccount.Name":"Discord.IntegrationAccount.yml","Discord.IntegrationAccount.ToString":"Discord.IntegrationAccount.yml","Discord.IUserGuild":"Discord.IUserGuild.yml","Discord.IUserGuild.Name":"Discord.IUserGuild.yml","Discord.IUserGuild.IconUrl":"Discord.IUserGuild.yml","Discord.IUserGuild.IsOwner":"Discord.IUserGuild.yml","Discord.IUserGuild.Permissions":"Discord.IUserGuild.yml","Discord.IVoiceRegion":"Discord.IVoiceRegion.yml","Discord.IVoiceRegion.Id":"Discord.IVoiceRegion.yml","Discord.IVoiceRegion.Name":"Discord.IVoiceRegion.yml","Discord.IVoiceRegion.IsVip":"Discord.IVoiceRegion.yml","Discord.IVoiceRegion.IsOptimal":"Discord.IVoiceRegion.yml","Discord.IVoiceRegion.SampleHostname":"Discord.IVoiceRegion.yml","Discord.IVoiceRegion.SamplePort":"Discord.IVoiceRegion.yml","Discord.MfaLevel":"Discord.MfaLevel.yml","Discord.MfaLevel.Disabled":"Discord.MfaLevel.yml","Discord.MfaLevel.Enabled":"Discord.MfaLevel.yml","Discord.PermissionTarget":"Discord.PermissionTarget.yml","Discord.PermissionTarget.Role":"Discord.PermissionTarget.yml","Discord.PermissionTarget.User":"Discord.PermissionTarget.yml","Discord.VerificationLevel":"Discord.VerificationLevel.yml","Discord.VerificationLevel.None":"Discord.VerificationLevel.yml","Discord.VerificationLevel.Low":"Discord.VerificationLevel.yml","Discord.VerificationLevel.Medium":"Discord.VerificationLevel.yml","Discord.VerificationLevel.High":"Discord.VerificationLevel.yml","Discord.IInvite":"Discord.IInvite.yml","Discord.IInvite.Code":"Discord.IInvite.yml","Discord.IInvite.Url":"Discord.IInvite.yml","Discord.IInvite.Channel":"Discord.IInvite.yml","Discord.IInvite.ChannelId":"Discord.IInvite.yml","Discord.IInvite.Guild":"Discord.IInvite.yml","Discord.IInvite.GuildId":"Discord.IInvite.yml","Discord.IInvite.AcceptAsync(Discord.RequestOptions)":"Discord.IInvite.yml","Discord.IInviteMetadata":"Discord.IInviteMetadata.yml","Discord.IInviteMetadata.Inviter":"Discord.IInviteMetadata.yml","Discord.IInviteMetadata.IsRevoked":"Discord.IInviteMetadata.yml","Discord.IInviteMetadata.IsTemporary":"Discord.IInviteMetadata.yml","Discord.IInviteMetadata.MaxAge":"Discord.IInviteMetadata.yml","Discord.IInviteMetadata.MaxUses":"Discord.IInviteMetadata.yml","Discord.IInviteMetadata.Uses":"Discord.IInviteMetadata.yml","Discord.IInviteMetadata.CreatedAt":"Discord.IInviteMetadata.yml","Discord.Embed":"Discord.Embed.yml","Discord.Embed.Type":"Discord.Embed.yml","Discord.Embed.Description":"Discord.Embed.yml","Discord.Embed.Url":"Discord.Embed.yml","Discord.Embed.Title":"Discord.Embed.yml","Discord.Embed.Timestamp":"Discord.Embed.yml","Discord.Embed.Color":"Discord.Embed.yml","Discord.Embed.Image":"Discord.Embed.yml","Discord.Embed.Video":"Discord.Embed.yml","Discord.Embed.Author":"Discord.Embed.yml","Discord.Embed.Footer":"Discord.Embed.yml","Discord.Embed.Provider":"Discord.Embed.yml","Discord.Embed.Thumbnail":"Discord.Embed.yml","Discord.Embed.Fields":"Discord.Embed.yml","Discord.Embed.ToString":"Discord.Embed.yml","Discord.EmbedAuthor":"Discord.EmbedAuthor.yml","Discord.EmbedAuthor.Name":"Discord.EmbedAuthor.yml","Discord.EmbedAuthor.Url":"Discord.EmbedAuthor.yml","Discord.EmbedAuthor.IconUrl":"Discord.EmbedAuthor.yml","Discord.EmbedAuthor.ProxyIconUrl":"Discord.EmbedAuthor.yml","Discord.EmbedAuthor.ToString":"Discord.EmbedAuthor.yml","Discord.EmbedField":"Discord.EmbedField.yml","Discord.EmbedField.Name":"Discord.EmbedField.yml","Discord.EmbedField.Value":"Discord.EmbedField.yml","Discord.EmbedField.Inline":"Discord.EmbedField.yml","Discord.EmbedField.ToString":"Discord.EmbedField.yml","Discord.EmbedFooter":"Discord.EmbedFooter.yml","Discord.EmbedFooter.Text":"Discord.EmbedFooter.yml","Discord.EmbedFooter.IconUrl":"Discord.EmbedFooter.yml","Discord.EmbedFooter.ProxyUrl":"Discord.EmbedFooter.yml","Discord.EmbedFooter.ToString":"Discord.EmbedFooter.yml","Discord.EmbedImage":"Discord.EmbedImage.yml","Discord.EmbedImage.Url":"Discord.EmbedImage.yml","Discord.EmbedImage.ProxyUrl":"Discord.EmbedImage.yml","Discord.EmbedImage.Height":"Discord.EmbedImage.yml","Discord.EmbedImage.Width":"Discord.EmbedImage.yml","Discord.EmbedImage.ToString":"Discord.EmbedImage.yml","Discord.EmbedProvider":"Discord.EmbedProvider.yml","Discord.EmbedProvider.Name":"Discord.EmbedProvider.yml","Discord.EmbedProvider.Url":"Discord.EmbedProvider.yml","Discord.EmbedProvider.ToString":"Discord.EmbedProvider.yml","Discord.EmbedThumbnail":"Discord.EmbedThumbnail.yml","Discord.EmbedThumbnail.Url":"Discord.EmbedThumbnail.yml","Discord.EmbedThumbnail.ProxyUrl":"Discord.EmbedThumbnail.yml","Discord.EmbedThumbnail.Height":"Discord.EmbedThumbnail.yml","Discord.EmbedThumbnail.Width":"Discord.EmbedThumbnail.yml","Discord.EmbedThumbnail.ToString":"Discord.EmbedThumbnail.yml","Discord.EmbedVideo":"Discord.EmbedVideo.yml","Discord.EmbedVideo.Url":"Discord.EmbedVideo.yml","Discord.EmbedVideo.Height":"Discord.EmbedVideo.yml","Discord.EmbedVideo.Width":"Discord.EmbedVideo.yml","Discord.EmbedVideo.ToString":"Discord.EmbedVideo.yml","Discord.Emoji":"Discord.Emoji.yml","Discord.Emoji.Id":"Discord.Emoji.yml","Discord.Emoji.Name":"Discord.Emoji.yml","Discord.Emoji.Url":"Discord.Emoji.yml","Discord.Emoji.Parse(System.String)":"Discord.Emoji.yml","Discord.Emoji.TryParse(System.String,Discord.Emoji@)":"Discord.Emoji.yml","Discord.Emoji.ToString":"Discord.Emoji.yml","Discord.IAttachment":"Discord.IAttachment.yml","Discord.IAttachment.Id":"Discord.IAttachment.yml","Discord.IAttachment.Filename":"Discord.IAttachment.yml","Discord.IAttachment.Url":"Discord.IAttachment.yml","Discord.IAttachment.ProxyUrl":"Discord.IAttachment.yml","Discord.IAttachment.Size":"Discord.IAttachment.yml","Discord.IAttachment.Height":"Discord.IAttachment.yml","Discord.IAttachment.Width":"Discord.IAttachment.yml","Discord.IEmbed":"Discord.IEmbed.yml","Discord.IEmbed.Url":"Discord.IEmbed.yml","Discord.IEmbed.Type":"Discord.IEmbed.yml","Discord.IEmbed.Title":"Discord.IEmbed.yml","Discord.IEmbed.Description":"Discord.IEmbed.yml","Discord.IEmbed.Timestamp":"Discord.IEmbed.yml","Discord.IEmbed.Color":"Discord.IEmbed.yml","Discord.IEmbed.Image":"Discord.IEmbed.yml","Discord.IEmbed.Video":"Discord.IEmbed.yml","Discord.IEmbed.Author":"Discord.IEmbed.yml","Discord.IEmbed.Footer":"Discord.IEmbed.yml","Discord.IEmbed.Provider":"Discord.IEmbed.yml","Discord.IEmbed.Thumbnail":"Discord.IEmbed.yml","Discord.IEmbed.Fields":"Discord.IEmbed.yml","Discord.IMessage":"Discord.IMessage.yml","Discord.IMessage.Type":"Discord.IMessage.yml","Discord.IMessage.IsTTS":"Discord.IMessage.yml","Discord.IMessage.IsPinned":"Discord.IMessage.yml","Discord.IMessage.IsWebhook":"Discord.IMessage.yml","Discord.IMessage.Content":"Discord.IMessage.yml","Discord.IMessage.Timestamp":"Discord.IMessage.yml","Discord.IMessage.EditedTimestamp":"Discord.IMessage.yml","Discord.IMessage.Channel":"Discord.IMessage.yml","Discord.IMessage.Author":"Discord.IMessage.yml","Discord.IMessage.WebhookId":"Discord.IMessage.yml","Discord.IMessage.Attachments":"Discord.IMessage.yml","Discord.IMessage.Embeds":"Discord.IMessage.yml","Discord.IMessage.Tags":"Discord.IMessage.yml","Discord.IMessage.MentionedChannelIds":"Discord.IMessage.yml","Discord.IMessage.MentionedRoleIds":"Discord.IMessage.yml","Discord.IMessage.MentionedUserIds":"Discord.IMessage.yml","Discord.IReaction":"Discord.IReaction.yml","Discord.IReaction.Emoji":"Discord.IReaction.yml","Discord.ISystemMessage":"Discord.ISystemMessage.yml","Discord.ITag":"Discord.ITag.yml","Discord.ITag.Index":"Discord.ITag.yml","Discord.ITag.Length":"Discord.ITag.yml","Discord.ITag.Type":"Discord.ITag.yml","Discord.ITag.Key":"Discord.ITag.yml","Discord.ITag.Value":"Discord.ITag.yml","Discord.IUserMessage":"Discord.IUserMessage.yml","Discord.IUserMessage.ModifyAsync(Action{Discord.MessageProperties},Discord.RequestOptions)":"Discord.IUserMessage.yml","Discord.IUserMessage.PinAsync(Discord.RequestOptions)":"Discord.IUserMessage.yml","Discord.IUserMessage.UnpinAsync(Discord.RequestOptions)":"Discord.IUserMessage.yml","Discord.IUserMessage.Reactions":"Discord.IUserMessage.yml","Discord.IUserMessage.AddReactionAsync(Discord.Emoji,Discord.RequestOptions)":"Discord.IUserMessage.yml","Discord.IUserMessage.AddReactionAsync(System.String,Discord.RequestOptions)":"Discord.IUserMessage.yml","Discord.IUserMessage.RemoveReactionAsync(Discord.Emoji,Discord.IUser,Discord.RequestOptions)":"Discord.IUserMessage.yml","Discord.IUserMessage.RemoveReactionAsync(System.String,Discord.IUser,Discord.RequestOptions)":"Discord.IUserMessage.yml","Discord.IUserMessage.RemoveAllReactionsAsync(Discord.RequestOptions)":"Discord.IUserMessage.yml","Discord.IUserMessage.GetReactionUsersAsync(System.String,System.Int32,System.Nullable{System.UInt64},Discord.RequestOptions)":"Discord.IUserMessage.yml","Discord.IUserMessage.Resolve(Discord.TagHandling,Discord.TagHandling,Discord.TagHandling,Discord.TagHandling,Discord.TagHandling)":"Discord.IUserMessage.yml","Discord.MessageProperties":"Discord.MessageProperties.yml","Discord.MessageProperties.Content":"Discord.MessageProperties.yml","Discord.MessageProperties.Embed":"Discord.MessageProperties.yml","Discord.MessageType":"Discord.MessageType.yml","Discord.MessageType.Default":"Discord.MessageType.yml","Discord.MessageType.RecipientAdd":"Discord.MessageType.yml","Discord.MessageType.RecipientRemove":"Discord.MessageType.yml","Discord.MessageType.Call":"Discord.MessageType.yml","Discord.MessageType.ChannelNameChange":"Discord.MessageType.yml","Discord.MessageType.ChannelIconChange":"Discord.MessageType.yml","Discord.MessageType.ChannelPinnedMessage":"Discord.MessageType.yml","Discord.Tag`1":"Discord.Tag-1.yml","Discord.Tag`1.Type":"Discord.Tag-1.yml","Discord.Tag`1.Index":"Discord.Tag-1.yml","Discord.Tag`1.Length":"Discord.Tag-1.yml","Discord.Tag`1.Key":"Discord.Tag-1.yml","Discord.Tag`1.Value":"Discord.Tag-1.yml","Discord.Tag`1.ToString":"Discord.Tag-1.yml","Discord.Tag`1.Discord#ITag#Value":"Discord.Tag-1.yml","Discord.TagHandling":"Discord.TagHandling.yml","Discord.TagHandling.Ignore":"Discord.TagHandling.yml","Discord.TagHandling.Remove":"Discord.TagHandling.yml","Discord.TagHandling.Name":"Discord.TagHandling.yml","Discord.TagHandling.NameNoPrefix":"Discord.TagHandling.yml","Discord.TagHandling.FullName":"Discord.TagHandling.yml","Discord.TagHandling.FullNameNoPrefix":"Discord.TagHandling.yml","Discord.TagHandling.Sanitize":"Discord.TagHandling.yml","Discord.TagType":"Discord.TagType.yml","Discord.TagType.UserMention":"Discord.TagType.yml","Discord.TagType.ChannelMention":"Discord.TagType.yml","Discord.TagType.RoleMention":"Discord.TagType.yml","Discord.TagType.EveryoneMention":"Discord.TagType.yml","Discord.TagType.HereMention":"Discord.TagType.yml","Discord.TagType.Emoji":"Discord.TagType.yml","Discord.ChannelPermission":"Discord.ChannelPermission.yml","Discord.ChannelPermission.CreateInstantInvite":"Discord.ChannelPermission.yml","Discord.ChannelPermission.ManageChannel":"Discord.ChannelPermission.yml","Discord.ChannelPermission.AddReactions":"Discord.ChannelPermission.yml","Discord.ChannelPermission.ReadMessages":"Discord.ChannelPermission.yml","Discord.ChannelPermission.SendMessages":"Discord.ChannelPermission.yml","Discord.ChannelPermission.SendTTSMessages":"Discord.ChannelPermission.yml","Discord.ChannelPermission.ManageMessages":"Discord.ChannelPermission.yml","Discord.ChannelPermission.EmbedLinks":"Discord.ChannelPermission.yml","Discord.ChannelPermission.AttachFiles":"Discord.ChannelPermission.yml","Discord.ChannelPermission.ReadMessageHistory":"Discord.ChannelPermission.yml","Discord.ChannelPermission.MentionEveryone":"Discord.ChannelPermission.yml","Discord.ChannelPermission.UseExternalEmojis":"Discord.ChannelPermission.yml","Discord.ChannelPermission.Connect":"Discord.ChannelPermission.yml","Discord.ChannelPermission.Speak":"Discord.ChannelPermission.yml","Discord.ChannelPermission.MuteMembers":"Discord.ChannelPermission.yml","Discord.ChannelPermission.DeafenMembers":"Discord.ChannelPermission.yml","Discord.ChannelPermission.MoveMembers":"Discord.ChannelPermission.yml","Discord.ChannelPermission.UseVAD":"Discord.ChannelPermission.yml","Discord.ChannelPermission.ManagePermissions":"Discord.ChannelPermission.yml","Discord.ChannelPermission.ManageWebhooks":"Discord.ChannelPermission.yml","Discord.ChannelPermissions":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.None":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.All(Discord.IChannel)":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.RawValue":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.CreateInstantInvite":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.ManageChannel":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.AddReactions":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.ReadMessages":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.SendMessages":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.SendTTSMessages":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.ManageMessages":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.EmbedLinks":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.AttachFiles":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.ReadMessageHistory":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.MentionEveryone":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.UseExternalEmojis":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.Connect":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.Speak":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.MuteMembers":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.DeafenMembers":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.MoveMembers":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.UseVAD":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.ManagePermissions":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.ManageWebhooks":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.#ctor(System.UInt64)":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.#ctor(System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean)":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.Modify(System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Boolean,System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean})":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.Has(Discord.ChannelPermission)":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.ToList":"Discord.ChannelPermissions.yml","Discord.ChannelPermissions.ToString":"Discord.ChannelPermissions.yml","Discord.GuildPermission":"Discord.GuildPermission.yml","Discord.GuildPermission.CreateInstantInvite":"Discord.GuildPermission.yml","Discord.GuildPermission.KickMembers":"Discord.GuildPermission.yml","Discord.GuildPermission.BanMembers":"Discord.GuildPermission.yml","Discord.GuildPermission.Administrator":"Discord.GuildPermission.yml","Discord.GuildPermission.ManageChannels":"Discord.GuildPermission.yml","Discord.GuildPermission.ManageGuild":"Discord.GuildPermission.yml","Discord.GuildPermission.AddReactions":"Discord.GuildPermission.yml","Discord.GuildPermission.ReadMessages":"Discord.GuildPermission.yml","Discord.GuildPermission.SendMessages":"Discord.GuildPermission.yml","Discord.GuildPermission.SendTTSMessages":"Discord.GuildPermission.yml","Discord.GuildPermission.ManageMessages":"Discord.GuildPermission.yml","Discord.GuildPermission.EmbedLinks":"Discord.GuildPermission.yml","Discord.GuildPermission.AttachFiles":"Discord.GuildPermission.yml","Discord.GuildPermission.ReadMessageHistory":"Discord.GuildPermission.yml","Discord.GuildPermission.MentionEveryone":"Discord.GuildPermission.yml","Discord.GuildPermission.UseExternalEmojis":"Discord.GuildPermission.yml","Discord.GuildPermission.Connect":"Discord.GuildPermission.yml","Discord.GuildPermission.Speak":"Discord.GuildPermission.yml","Discord.GuildPermission.MuteMembers":"Discord.GuildPermission.yml","Discord.GuildPermission.DeafenMembers":"Discord.GuildPermission.yml","Discord.GuildPermission.MoveMembers":"Discord.GuildPermission.yml","Discord.GuildPermission.UseVAD":"Discord.GuildPermission.yml","Discord.GuildPermission.ChangeNickname":"Discord.GuildPermission.yml","Discord.GuildPermission.ManageNicknames":"Discord.GuildPermission.yml","Discord.GuildPermission.ManageRoles":"Discord.GuildPermission.yml","Discord.GuildPermission.ManageWebhooks":"Discord.GuildPermission.yml","Discord.GuildPermission.ManageEmojis":"Discord.GuildPermission.yml","Discord.GuildPermissions":"Discord.GuildPermissions.yml","Discord.GuildPermissions.None":"Discord.GuildPermissions.yml","Discord.GuildPermissions.All":"Discord.GuildPermissions.yml","Discord.GuildPermissions.RawValue":"Discord.GuildPermissions.yml","Discord.GuildPermissions.CreateInstantInvite":"Discord.GuildPermissions.yml","Discord.GuildPermissions.BanMembers":"Discord.GuildPermissions.yml","Discord.GuildPermissions.KickMembers":"Discord.GuildPermissions.yml","Discord.GuildPermissions.Administrator":"Discord.GuildPermissions.yml","Discord.GuildPermissions.ManageChannels":"Discord.GuildPermissions.yml","Discord.GuildPermissions.ManageGuild":"Discord.GuildPermissions.yml","Discord.GuildPermissions.AddReactions":"Discord.GuildPermissions.yml","Discord.GuildPermissions.ReadMessages":"Discord.GuildPermissions.yml","Discord.GuildPermissions.SendMessages":"Discord.GuildPermissions.yml","Discord.GuildPermissions.SendTTSMessages":"Discord.GuildPermissions.yml","Discord.GuildPermissions.ManageMessages":"Discord.GuildPermissions.yml","Discord.GuildPermissions.EmbedLinks":"Discord.GuildPermissions.yml","Discord.GuildPermissions.AttachFiles":"Discord.GuildPermissions.yml","Discord.GuildPermissions.ReadMessageHistory":"Discord.GuildPermissions.yml","Discord.GuildPermissions.MentionEveryone":"Discord.GuildPermissions.yml","Discord.GuildPermissions.UseExternalEmojis":"Discord.GuildPermissions.yml","Discord.GuildPermissions.Connect":"Discord.GuildPermissions.yml","Discord.GuildPermissions.Speak":"Discord.GuildPermissions.yml","Discord.GuildPermissions.MuteMembers":"Discord.GuildPermissions.yml","Discord.GuildPermissions.DeafenMembers":"Discord.GuildPermissions.yml","Discord.GuildPermissions.MoveMembers":"Discord.GuildPermissions.yml","Discord.GuildPermissions.UseVAD":"Discord.GuildPermissions.yml","Discord.GuildPermissions.ChangeNickname":"Discord.GuildPermissions.yml","Discord.GuildPermissions.ManageNicknames":"Discord.GuildPermissions.yml","Discord.GuildPermissions.ManageRoles":"Discord.GuildPermissions.yml","Discord.GuildPermissions.ManageWebhooks":"Discord.GuildPermissions.yml","Discord.GuildPermissions.ManageEmojis":"Discord.GuildPermissions.yml","Discord.GuildPermissions.#ctor(System.UInt64)":"Discord.GuildPermissions.yml","Discord.GuildPermissions.#ctor(System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Boolean,System.Boolean,System.Boolean)":"Discord.GuildPermissions.yml","Discord.GuildPermissions.Modify(System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean})":"Discord.GuildPermissions.yml","Discord.GuildPermissions.Has(Discord.GuildPermission)":"Discord.GuildPermissions.yml","Discord.GuildPermissions.ToList":"Discord.GuildPermissions.yml","Discord.GuildPermissions.ToString":"Discord.GuildPermissions.yml","Discord.Overwrite":"Discord.Overwrite.yml","Discord.Overwrite.TargetId":"Discord.Overwrite.yml","Discord.Overwrite.TargetType":"Discord.Overwrite.yml","Discord.Overwrite.Permissions":"Discord.Overwrite.yml","Discord.Overwrite.#ctor(System.UInt64,Discord.PermissionTarget,Discord.OverwritePermissions)":"Discord.Overwrite.yml","Discord.OverwritePermissions":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.InheritAll":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.AllowAll(Discord.IChannel)":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.DenyAll(Discord.IChannel)":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.AllowValue":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.DenyValue":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.CreateInstantInvite":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.ManageChannel":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.AddReactions":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.ReadMessages":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.SendMessages":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.SendTTSMessages":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.ManageMessages":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.EmbedLinks":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.AttachFiles":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.ReadMessageHistory":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.MentionEveryone":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.UseExternalEmojis":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.Connect":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.Speak":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.MuteMembers":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.DeafenMembers":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.MoveMembers":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.UseVAD":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.ManagePermissions":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.ManageWebhooks":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.#ctor(System.UInt64,System.UInt64)":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.#ctor(Discord.PermValue,Discord.PermValue,Discord.PermValue,Discord.PermValue,Discord.PermValue,Discord.PermValue,Discord.PermValue,Discord.PermValue,Discord.PermValue,Discord.PermValue,Discord.PermValue,Discord.PermValue,Discord.PermValue,Discord.PermValue,Discord.PermValue,Discord.PermValue,Discord.PermValue,Discord.PermValue,Discord.PermValue,Discord.PermValue)":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.Modify(System.Nullable{Discord.PermValue},System.Nullable{Discord.PermValue},System.Nullable{Discord.PermValue},System.Nullable{Discord.PermValue},System.Nullable{Discord.PermValue},System.Nullable{Discord.PermValue},System.Nullable{Discord.PermValue},System.Nullable{Discord.PermValue},System.Nullable{Discord.PermValue},System.Nullable{Discord.PermValue},System.Nullable{Discord.PermValue},System.Nullable{Discord.PermValue},System.Nullable{Discord.PermValue},System.Nullable{Discord.PermValue},System.Nullable{Discord.PermValue},System.Nullable{Discord.PermValue},System.Nullable{Discord.PermValue},System.Nullable{Discord.PermValue},System.Nullable{Discord.PermValue},System.Nullable{Discord.PermValue})":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.ToAllowList":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.ToDenyList":"Discord.OverwritePermissions.yml","Discord.OverwritePermissions.ToString":"Discord.OverwritePermissions.yml","Discord.PermValue":"Discord.PermValue.yml","Discord.PermValue.Allow":"Discord.PermValue.yml","Discord.PermValue.Deny":"Discord.PermValue.yml","Discord.PermValue.Inherit":"Discord.PermValue.yml","Discord.BulkRoleProperties":"Discord.BulkRoleProperties.yml","Discord.BulkRoleProperties.Id":"Discord.BulkRoleProperties.yml","Discord.BulkRoleProperties.#ctor(System.UInt64)":"Discord.BulkRoleProperties.yml","Discord.Color":"Discord.Color.yml","Discord.Color.Default":"Discord.Color.yml","Discord.Color.RawValue":"Discord.Color.yml","Discord.Color.R":"Discord.Color.yml","Discord.Color.G":"Discord.Color.yml","Discord.Color.B":"Discord.Color.yml","Discord.Color.#ctor(System.UInt32)":"Discord.Color.yml","Discord.Color.#ctor(System.Byte,System.Byte,System.Byte)":"Discord.Color.yml","Discord.Color.#ctor(System.Single,System.Single,System.Single)":"Discord.Color.yml","Discord.Color.ToString":"Discord.Color.yml","Discord.IRole":"Discord.IRole.yml","Discord.IRole.Guild":"Discord.IRole.yml","Discord.IRole.Color":"Discord.IRole.yml","Discord.IRole.IsHoisted":"Discord.IRole.yml","Discord.IRole.IsManaged":"Discord.IRole.yml","Discord.IRole.IsMentionable":"Discord.IRole.yml","Discord.IRole.Name":"Discord.IRole.yml","Discord.IRole.Permissions":"Discord.IRole.yml","Discord.IRole.Position":"Discord.IRole.yml","Discord.IRole.ModifyAsync(Action{Discord.RoleProperties},Discord.RequestOptions)":"Discord.IRole.yml","Discord.RoleProperties":"Discord.RoleProperties.yml","Discord.RoleProperties.Name":"Discord.RoleProperties.yml","Discord.RoleProperties.Permissions":"Discord.RoleProperties.yml","Discord.RoleProperties.Position":"Discord.RoleProperties.yml","Discord.RoleProperties.Color":"Discord.RoleProperties.yml","Discord.RoleProperties.Hoist":"Discord.RoleProperties.yml","Discord.RoleProperties.Mentionable":"Discord.RoleProperties.yml","Discord.Game":"Discord.Game.yml","Discord.Game.Name":"Discord.Game.yml","Discord.Game.StreamUrl":"Discord.Game.yml","Discord.Game.StreamType":"Discord.Game.yml","Discord.Game.#ctor(System.String,System.String,Discord.StreamType)":"Discord.Game.yml","Discord.Game.ToString":"Discord.Game.yml","Discord.GuildUserProperties":"Discord.GuildUserProperties.yml","Discord.GuildUserProperties.Mute":"Discord.GuildUserProperties.yml","Discord.GuildUserProperties.Deaf":"Discord.GuildUserProperties.yml","Discord.GuildUserProperties.Nickname":"Discord.GuildUserProperties.yml","Discord.GuildUserProperties.Roles":"Discord.GuildUserProperties.yml","Discord.GuildUserProperties.RoleIds":"Discord.GuildUserProperties.yml","Discord.GuildUserProperties.Channel":"Discord.GuildUserProperties.yml","Discord.GuildUserProperties.ChannelId":"Discord.GuildUserProperties.yml","Discord.IConnection":"Discord.IConnection.yml","Discord.IConnection.Id":"Discord.IConnection.yml","Discord.IConnection.Type":"Discord.IConnection.yml","Discord.IConnection.Name":"Discord.IConnection.yml","Discord.IConnection.IsRevoked":"Discord.IConnection.yml","Discord.IConnection.IntegrationIds":"Discord.IConnection.yml","Discord.IGroupUser":"Discord.IGroupUser.yml","Discord.IGuildUser":"Discord.IGuildUser.yml","Discord.IGuildUser.JoinedAt":"Discord.IGuildUser.yml","Discord.IGuildUser.Nickname":"Discord.IGuildUser.yml","Discord.IGuildUser.GuildPermissions":"Discord.IGuildUser.yml","Discord.IGuildUser.Guild":"Discord.IGuildUser.yml","Discord.IGuildUser.GuildId":"Discord.IGuildUser.yml","Discord.IGuildUser.RoleIds":"Discord.IGuildUser.yml","Discord.IGuildUser.GetPermissions(Discord.IGuildChannel)":"Discord.IGuildUser.yml","Discord.IGuildUser.KickAsync(Discord.RequestOptions)":"Discord.IGuildUser.yml","Discord.IGuildUser.ModifyAsync(Action{Discord.GuildUserProperties},Discord.RequestOptions)":"Discord.IGuildUser.yml","Discord.IPresence":"Discord.IPresence.yml","Discord.IPresence.Game":"Discord.IPresence.yml","Discord.IPresence.Status":"Discord.IPresence.yml","Discord.ISelfUser":"Discord.ISelfUser.yml","Discord.ISelfUser.Email":"Discord.ISelfUser.yml","Discord.ISelfUser.IsVerified":"Discord.ISelfUser.yml","Discord.ISelfUser.IsMfaEnabled":"Discord.ISelfUser.yml","Discord.ISelfUser.ModifyAsync(Action{Discord.SelfUserProperties},Discord.RequestOptions)":"Discord.ISelfUser.yml","Discord.IUser":"Discord.IUser.yml","Discord.IUser.AvatarId":"Discord.IUser.yml","Discord.IUser.AvatarUrl":"Discord.IUser.yml","Discord.IUser.Discriminator":"Discord.IUser.yml","Discord.IUser.DiscriminatorValue":"Discord.IUser.yml","Discord.IUser.IsBot":"Discord.IUser.yml","Discord.IUser.Username":"Discord.IUser.yml","Discord.IUser.GetDMChannelAsync(Discord.CacheMode,Discord.RequestOptions)":"Discord.IUser.yml","Discord.IUser.CreateDMChannelAsync(Discord.RequestOptions)":"Discord.IUser.yml","Discord.IVoiceState":"Discord.IVoiceState.yml","Discord.IVoiceState.IsDeafened":"Discord.IVoiceState.yml","Discord.IVoiceState.IsMuted":"Discord.IVoiceState.yml","Discord.IVoiceState.IsSelfDeafened":"Discord.IVoiceState.yml","Discord.IVoiceState.IsSelfMuted":"Discord.IVoiceState.yml","Discord.IVoiceState.IsSuppressed":"Discord.IVoiceState.yml","Discord.IVoiceState.VoiceChannel":"Discord.IVoiceState.yml","Discord.IVoiceState.VoiceSessionId":"Discord.IVoiceState.yml","Discord.SelfUserProperties":"Discord.SelfUserProperties.yml","Discord.SelfUserProperties.Username":"Discord.SelfUserProperties.yml","Discord.SelfUserProperties.Avatar":"Discord.SelfUserProperties.yml","Discord.StreamType":"Discord.StreamType.yml","Discord.StreamType.NotStreaming":"Discord.StreamType.yml","Discord.StreamType.Twitch":"Discord.StreamType.yml","Discord.UserStatus":"Discord.UserStatus.yml","Discord.UserStatus.Unknown":"Discord.UserStatus.yml","Discord.UserStatus.Online":"Discord.UserStatus.yml","Discord.UserStatus.Idle":"Discord.UserStatus.yml","Discord.UserStatus.AFK":"Discord.UserStatus.yml","Discord.UserStatus.DoNotDisturb":"Discord.UserStatus.yml","Discord.UserStatus.Invisible":"Discord.UserStatus.yml","Discord.UserStatus.Offline":"Discord.UserStatus.yml","Discord.AsyncEnumerableExtensions":"Discord.AsyncEnumerableExtensions.yml","Discord.AsyncEnumerableExtensions.Flatten``1(IAsyncEnumerable{IReadOnlyCollection{``0}})":"Discord.AsyncEnumerableExtensions.yml","Discord.DiscordClientExtensions":"Discord.DiscordClientExtensions.yml","Discord.DiscordClientExtensions.GetPrivateChannelAsync(Discord.IDiscordClient,System.UInt64)":"Discord.DiscordClientExtensions.yml","Discord.DiscordClientExtensions.GetDMChannelAsync(Discord.IDiscordClient,System.UInt64)":"Discord.DiscordClientExtensions.yml","Discord.DiscordClientExtensions.GetDMChannelsAsync(Discord.IDiscordClient)":"Discord.DiscordClientExtensions.yml","Discord.DiscordClientExtensions.GetGroupChannelAsync(Discord.IDiscordClient,System.UInt64)":"Discord.DiscordClientExtensions.yml","Discord.DiscordClientExtensions.GetGroupChannelsAsync(Discord.IDiscordClient)":"Discord.DiscordClientExtensions.yml","Discord.DiscordClientExtensions.GetOptimalVoiceRegionAsync(Discord.IDiscordClient)":"Discord.DiscordClientExtensions.yml","Discord.GuildExtensions":"Discord.GuildExtensions.yml","Discord.GuildExtensions.GetTextChannelAsync(Discord.IGuild,System.UInt64)":"Discord.GuildExtensions.yml","Discord.GuildExtensions.GetTextChannelsAsync(Discord.IGuild)":"Discord.GuildExtensions.yml","Discord.GuildExtensions.GetVoiceChannelAsync(Discord.IGuild,System.UInt64)":"Discord.GuildExtensions.yml","Discord.GuildExtensions.GetVoiceChannelsAsync(Discord.IGuild)":"Discord.GuildExtensions.yml","Discord.GuildExtensions.GetAFKChannelAsync(Discord.IGuild)":"Discord.GuildExtensions.yml","Discord.GuildExtensions.GetDefaultChannelAsync(Discord.IGuild)":"Discord.GuildExtensions.yml","Discord.GuildExtensions.GetEmbedChannelAsync(Discord.IGuild)":"Discord.GuildExtensions.yml","Discord.GuildExtensions.GetOwnerAsync(Discord.IGuild)":"Discord.GuildExtensions.yml","Discord.GuildUserExtensions":"Discord.GuildUserExtensions.yml","Discord.GuildUserExtensions.AddRolesAsync(Discord.IGuildUser,Discord.IRole[])":"Discord.GuildUserExtensions.yml","Discord.GuildUserExtensions.AddRolesAsync(Discord.IGuildUser,IEnumerable{Discord.IRole})":"Discord.GuildUserExtensions.yml","Discord.GuildUserExtensions.RemoveRolesAsync(Discord.IGuildUser,Discord.IRole[])":"Discord.GuildUserExtensions.yml","Discord.GuildUserExtensions.RemoveRolesAsync(Discord.IGuildUser,IEnumerable{Discord.IRole})":"Discord.GuildUserExtensions.yml","Discord.GuildUserExtensions.ChangeRolesAsync(Discord.IGuildUser,IEnumerable{Discord.IRole},IEnumerable{Discord.IRole})":"Discord.GuildUserExtensions.yml","Discord.LogMessage":"Discord.LogMessage.yml","Discord.LogMessage.Severity":"Discord.LogMessage.yml","Discord.LogMessage.Source":"Discord.LogMessage.yml","Discord.LogMessage.Message":"Discord.LogMessage.yml","Discord.LogMessage.Exception":"Discord.LogMessage.yml","Discord.LogMessage.#ctor(Discord.LogSeverity,System.String,System.String,Exception)":"Discord.LogMessage.yml","Discord.LogMessage.ToString":"Discord.LogMessage.yml","Discord.LogMessage.ToString(StringBuilder,System.Boolean,System.Boolean,DateTimeKind,System.Nullable{System.Int32})":"Discord.LogMessage.yml","Discord.LogSeverity":"Discord.LogSeverity.yml","Discord.LogSeverity.Critical":"Discord.LogSeverity.yml","Discord.LogSeverity.Error":"Discord.LogSeverity.yml","Discord.LogSeverity.Warning":"Discord.LogSeverity.yml","Discord.LogSeverity.Info":"Discord.LogSeverity.yml","Discord.LogSeverity.Verbose":"Discord.LogSeverity.yml","Discord.LogSeverity.Debug":"Discord.LogSeverity.yml","Discord.RpcException":"Discord.RpcException.yml","Discord.RpcException.ErrorCode":"Discord.RpcException.yml","Discord.RpcException.Reason":"Discord.RpcException.yml","Discord.RpcException.#ctor(System.Int32,System.String)":"Discord.RpcException.yml","Discord.MentionUtils":"Discord.MentionUtils.yml","Discord.MentionUtils.MentionUser(System.UInt64)":"Discord.MentionUtils.yml","Discord.MentionUtils.MentionChannel(System.UInt64)":"Discord.MentionUtils.yml","Discord.MentionUtils.MentionRole(System.UInt64)":"Discord.MentionUtils.yml","Discord.MentionUtils.ParseUser(System.String)":"Discord.MentionUtils.yml","Discord.MentionUtils.TryParseUser(System.String,System.UInt64@)":"Discord.MentionUtils.yml","Discord.MentionUtils.ParseChannel(System.String)":"Discord.MentionUtils.yml","Discord.MentionUtils.TryParseChannel(System.String,System.UInt64@)":"Discord.MentionUtils.yml","Discord.MentionUtils.ParseRole(System.String)":"Discord.MentionUtils.yml","Discord.MentionUtils.TryParseRole(System.String,System.UInt64@)":"Discord.MentionUtils.yml","Discord.Optional`1":"Discord.Optional-1.yml","Discord.Optional`1.Unspecified":"Discord.Optional-1.yml","Discord.Optional`1.Value":"Discord.Optional-1.yml","Discord.Optional`1.IsSpecified":"Discord.Optional-1.yml","Discord.Optional`1.#ctor(`0)":"Discord.Optional-1.yml","Discord.Optional`1.GetValueOrDefault":"Discord.Optional-1.yml","Discord.Optional`1.GetValueOrDefault(`0)":"Discord.Optional-1.yml","Discord.Optional`1.Equals(System.Object)":"Discord.Optional-1.yml","Discord.Optional`1.GetHashCode":"Discord.Optional-1.yml","Discord.Optional`1.ToString":"Discord.Optional-1.yml","Discord.Optional`1.op_Implicit(`0)~Discord.Optional{`0}":"Discord.Optional-1.yml","Discord.Optional`1.op_Explicit(Discord.Optional{`0})~`0":"Discord.Optional-1.yml","Discord.Optional":"Discord.Optional.yml","Discord.Optional.Create``1":"Discord.Optional.yml","Discord.Optional.Create``1(``0)":"Discord.Optional.yml","Discord.ChannelType":"Discord.ChannelType.yml","Discord.ChannelType.Text":"Discord.ChannelType.yml","Discord.ChannelType.DM":"Discord.ChannelType.yml","Discord.ChannelType.Voice":"Discord.ChannelType.yml","Discord.ChannelType.Group":"Discord.ChannelType.yml","Discord.RestGuildEmbed":"Discord.RestGuildEmbed.yml","Discord.RestGuildEmbed.IsEnabled":"Discord.RestGuildEmbed.yml","Discord.RestGuildEmbed.ChannelId":"Discord.RestGuildEmbed.yml","Discord.RestGuildEmbed.ToString":"Discord.RestGuildEmbed.yml","Discord.RestVoiceRegion":"Discord.RestVoiceRegion.yml","Discord.RestVoiceRegion.Name":"Discord.RestVoiceRegion.yml","Discord.RestVoiceRegion.IsVip":"Discord.RestVoiceRegion.yml","Discord.RestVoiceRegion.IsOptimal":"Discord.RestVoiceRegion.yml","Discord.RestVoiceRegion.SampleHostname":"Discord.RestVoiceRegion.yml","Discord.RestVoiceRegion.SamplePort":"Discord.RestVoiceRegion.yml","Discord.RestVoiceRegion.ToString":"Discord.RestVoiceRegion.yml","Discord.Attachment":"Discord.Attachment.yml","Discord.Attachment.Id":"Discord.Attachment.yml","Discord.Attachment.Filename":"Discord.Attachment.yml","Discord.Attachment.Url":"Discord.Attachment.yml","Discord.Attachment.ProxyUrl":"Discord.Attachment.yml","Discord.Attachment.Size":"Discord.Attachment.yml","Discord.Attachment.Height":"Discord.Attachment.yml","Discord.Attachment.Width":"Discord.Attachment.yml","Discord.Attachment.ToString":"Discord.Attachment.yml","Discord.EmbedBuilder":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.#ctor":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.Title":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.Description":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.Url":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.ThumbnailUrl":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.ImageUrl":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.Timestamp":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.Color":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.Author":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.Footer":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.WithTitle(System.String)":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.WithDescription(System.String)":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.WithUrl(System.String)":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.WithThumbnailUrl(System.String)":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.WithImageUrl(System.String)":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.WithCurrentTimestamp":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.WithTimestamp(DateTimeOffset)":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.WithColor(Color)":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.WithAuthor(Discord.EmbedAuthorBuilder)":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.WithAuthor(Action{Discord.EmbedAuthorBuilder})":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.WithFooter(Discord.EmbedFooterBuilder)":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.WithFooter(Action{Discord.EmbedFooterBuilder})":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.AddField(Action{Discord.EmbedFieldBuilder})":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.Build":"Discord.EmbedBuilder.yml","Discord.EmbedBuilder.op_Implicit(Discord.EmbedBuilder)~Embed":"Discord.EmbedBuilder.yml","Discord.EmbedFieldBuilder":"Discord.EmbedFieldBuilder.yml","Discord.EmbedFieldBuilder.Name":"Discord.EmbedFieldBuilder.yml","Discord.EmbedFieldBuilder.Value":"Discord.EmbedFieldBuilder.yml","Discord.EmbedFieldBuilder.IsInline":"Discord.EmbedFieldBuilder.yml","Discord.EmbedFieldBuilder.#ctor":"Discord.EmbedFieldBuilder.yml","Discord.EmbedFieldBuilder.WithName(System.String)":"Discord.EmbedFieldBuilder.yml","Discord.EmbedFieldBuilder.WithValue(System.String)":"Discord.EmbedFieldBuilder.yml","Discord.EmbedFieldBuilder.WithIsInline(System.Boolean)":"Discord.EmbedFieldBuilder.yml","Discord.EmbedFieldBuilder.Build":"Discord.EmbedFieldBuilder.yml","Discord.EmbedAuthorBuilder":"Discord.EmbedAuthorBuilder.yml","Discord.EmbedAuthorBuilder.Name":"Discord.EmbedAuthorBuilder.yml","Discord.EmbedAuthorBuilder.Url":"Discord.EmbedAuthorBuilder.yml","Discord.EmbedAuthorBuilder.IconUrl":"Discord.EmbedAuthorBuilder.yml","Discord.EmbedAuthorBuilder.#ctor":"Discord.EmbedAuthorBuilder.yml","Discord.EmbedAuthorBuilder.WithName(System.String)":"Discord.EmbedAuthorBuilder.yml","Discord.EmbedAuthorBuilder.WithUrl(System.String)":"Discord.EmbedAuthorBuilder.yml","Discord.EmbedAuthorBuilder.WithIconUrl(System.String)":"Discord.EmbedAuthorBuilder.yml","Discord.EmbedAuthorBuilder.Build":"Discord.EmbedAuthorBuilder.yml","Discord.EmbedFooterBuilder":"Discord.EmbedFooterBuilder.yml","Discord.EmbedFooterBuilder.Text":"Discord.EmbedFooterBuilder.yml","Discord.EmbedFooterBuilder.IconUrl":"Discord.EmbedFooterBuilder.yml","Discord.EmbedFooterBuilder.#ctor":"Discord.EmbedFooterBuilder.yml","Discord.EmbedFooterBuilder.WithText(System.String)":"Discord.EmbedFooterBuilder.yml","Discord.EmbedFooterBuilder.WithIconUrl(System.String)":"Discord.EmbedFooterBuilder.yml","Discord.EmbedFooterBuilder.Build":"Discord.EmbedFooterBuilder.yml","Discord.RestConnection":"Discord.RestConnection.yml","Discord.RestConnection.Id":"Discord.RestConnection.yml","Discord.RestConnection.Type":"Discord.RestConnection.yml","Discord.RestConnection.Name":"Discord.RestConnection.yml","Discord.RestConnection.IsRevoked":"Discord.RestConnection.yml","Discord.RestConnection.IntegrationIds":"Discord.RestConnection.yml","Discord.RestConnection.ToString":"Discord.RestConnection.yml","Discord.Rest":"Discord.Rest.yml","Discord.Rest.BaseDiscordClient":"Discord.Rest.BaseDiscordClient.yml","Discord.Rest.BaseDiscordClient.Log":"Discord.Rest.BaseDiscordClient.yml","Discord.Rest.BaseDiscordClient.LoggedIn":"Discord.Rest.BaseDiscordClient.yml","Discord.Rest.BaseDiscordClient.LoggedOut":"Discord.Rest.BaseDiscordClient.yml","Discord.Rest.BaseDiscordClient.LoginState":"Discord.Rest.BaseDiscordClient.yml","Discord.Rest.BaseDiscordClient.CurrentUser":"Discord.Rest.BaseDiscordClient.yml","Discord.Rest.BaseDiscordClient.LoginAsync(TokenType,System.String,System.Boolean)":"Discord.Rest.BaseDiscordClient.yml","Discord.Rest.BaseDiscordClient.OnLoginAsync(TokenType,System.String)":"Discord.Rest.BaseDiscordClient.yml","Discord.Rest.BaseDiscordClient.LogoutAsync":"Discord.Rest.BaseDiscordClient.yml","Discord.Rest.BaseDiscordClient.OnLogoutAsync":"Discord.Rest.BaseDiscordClient.yml","Discord.Rest.BaseDiscordClient.Dispose":"Discord.Rest.BaseDiscordClient.yml","Discord.Rest.DiscordRestClient":"Discord.Rest.DiscordRestClient.yml","Discord.Rest.DiscordRestClient.CurrentUser":"Discord.Rest.DiscordRestClient.yml","Discord.Rest.DiscordRestClient.#ctor":"Discord.Rest.DiscordRestClient.yml","Discord.Rest.DiscordRestClient.#ctor(Discord.Rest.DiscordRestConfig)":"Discord.Rest.DiscordRestClient.yml","Discord.Rest.DiscordRestClient.OnLoginAsync(TokenType,System.String)":"Discord.Rest.DiscordRestClient.yml","Discord.Rest.DiscordRestClient.OnLogoutAsync":"Discord.Rest.DiscordRestClient.yml","Discord.Rest.DiscordRestClient.GetApplicationInfoAsync":"Discord.Rest.DiscordRestClient.yml","Discord.Rest.DiscordRestClient.GetChannelAsync(System.UInt64)":"Discord.Rest.DiscordRestClient.yml","Discord.Rest.DiscordRestClient.GetPrivateChannelsAsync":"Discord.Rest.DiscordRestClient.yml","Discord.Rest.DiscordRestClient.GetConnectionsAsync":"Discord.Rest.DiscordRestClient.yml","Discord.Rest.DiscordRestClient.GetInviteAsync(System.String)":"Discord.Rest.DiscordRestClient.yml","Discord.Rest.DiscordRestClient.GetGuildAsync(System.UInt64)":"Discord.Rest.DiscordRestClient.yml","Discord.Rest.DiscordRestClient.GetGuildEmbedAsync(System.UInt64)":"Discord.Rest.DiscordRestClient.yml","Discord.Rest.DiscordRestClient.GetGuildSummariesAsync":"Discord.Rest.DiscordRestClient.yml","Discord.Rest.DiscordRestClient.GetGuildsAsync":"Discord.Rest.DiscordRestClient.yml","Discord.Rest.DiscordRestClient.CreateGuildAsync(System.String,IVoiceRegion,Stream)":"Discord.Rest.DiscordRestClient.yml","Discord.Rest.DiscordRestClient.GetUserAsync(System.UInt64)":"Discord.Rest.DiscordRestClient.yml","Discord.Rest.DiscordRestClient.GetGuildUserAsync(System.UInt64,System.UInt64)":"Discord.Rest.DiscordRestClient.yml","Discord.Rest.DiscordRestClient.GetVoiceRegionsAsync":"Discord.Rest.DiscordRestClient.yml","Discord.Rest.DiscordRestClient.GetVoiceRegionAsync(System.String)":"Discord.Rest.DiscordRestClient.yml","Discord.Rest.DiscordRestConfig":"Discord.Rest.DiscordRestConfig.yml","Discord.Rest.DiscordRestConfig.UserAgent":"Discord.Rest.DiscordRestConfig.yml","Discord.Rest.DiscordRestConfig.RestClientProvider":"Discord.Rest.DiscordRestConfig.yml","Discord.Rest.RestApplication":"Discord.Rest.RestApplication.yml","Discord.Rest.RestApplication._iconId":"Discord.Rest.RestApplication.yml","Discord.Rest.RestApplication.Name":"Discord.Rest.RestApplication.yml","Discord.Rest.RestApplication.Description":"Discord.Rest.RestApplication.yml","Discord.Rest.RestApplication.RPCOrigins":"Discord.Rest.RestApplication.yml","Discord.Rest.RestApplication.Flags":"Discord.Rest.RestApplication.yml","Discord.Rest.RestApplication.Owner":"Discord.Rest.RestApplication.yml","Discord.Rest.RestApplication.CreatedAt":"Discord.Rest.RestApplication.yml","Discord.Rest.RestApplication.IconUrl":"Discord.Rest.RestApplication.yml","Discord.Rest.RestApplication.UpdateAsync":"Discord.Rest.RestApplication.yml","Discord.Rest.RestApplication.ToString":"Discord.Rest.RestApplication.yml","Discord.Rest.RestEntity`1":"Discord.Rest.RestEntity-1.yml","Discord.Rest.RestEntity`1.Discord":"Discord.Rest.RestEntity-1.yml","Discord.Rest.RestEntity`1.Id":"Discord.Rest.RestEntity-1.yml","Discord.Rest.IRestAudioChannel":"Discord.Rest.IRestAudioChannel.yml","Discord.Rest.IRestMessageChannel":"Discord.Rest.IRestMessageChannel.yml","Discord.Rest.IRestMessageChannel.SendMessageAsync(System.String,System.Boolean,Embed,RequestOptions)":"Discord.Rest.IRestMessageChannel.yml","Discord.Rest.IRestMessageChannel.SendFileAsync(Stream,System.String,System.String,System.Boolean,RequestOptions)":"Discord.Rest.IRestMessageChannel.yml","Discord.Rest.IRestMessageChannel.GetMessageAsync(System.UInt64,RequestOptions)":"Discord.Rest.IRestMessageChannel.yml","Discord.Rest.IRestMessageChannel.GetMessagesAsync(System.Int32,RequestOptions)":"Discord.Rest.IRestMessageChannel.yml","Discord.Rest.IRestMessageChannel.GetMessagesAsync(System.UInt64,Direction,System.Int32,RequestOptions)":"Discord.Rest.IRestMessageChannel.yml","Discord.Rest.IRestMessageChannel.GetMessagesAsync(IMessage,Direction,System.Int32,RequestOptions)":"Discord.Rest.IRestMessageChannel.yml","Discord.Rest.IRestMessageChannel.GetPinnedMessagesAsync(RequestOptions)":"Discord.Rest.IRestMessageChannel.yml","Discord.Rest.IRestPrivateChannel":"Discord.Rest.IRestPrivateChannel.yml","Discord.Rest.IRestPrivateChannel.Recipients":"Discord.Rest.IRestPrivateChannel.yml","Discord.Rest.RestChannel":"Discord.Rest.RestChannel.yml","Discord.Rest.RestChannel.CreatedAt":"Discord.Rest.RestChannel.yml","Discord.Rest.RestChannel.UpdateAsync(RequestOptions)":"Discord.Rest.RestChannel.yml","Discord.Rest.RestDMChannel":"Discord.Rest.RestDMChannel.yml","Discord.Rest.RestDMChannel.CurrentUser":"Discord.Rest.RestDMChannel.yml","Discord.Rest.RestDMChannel.Recipient":"Discord.Rest.RestDMChannel.yml","Discord.Rest.RestDMChannel.Users":"Discord.Rest.RestDMChannel.yml","Discord.Rest.RestDMChannel.UpdateAsync(RequestOptions)":"Discord.Rest.RestDMChannel.yml","Discord.Rest.RestDMChannel.CloseAsync(RequestOptions)":"Discord.Rest.RestDMChannel.yml","Discord.Rest.RestDMChannel.GetUser(System.UInt64)":"Discord.Rest.RestDMChannel.yml","Discord.Rest.RestDMChannel.GetMessageAsync(System.UInt64,RequestOptions)":"Discord.Rest.RestDMChannel.yml","Discord.Rest.RestDMChannel.GetMessagesAsync(System.Int32,RequestOptions)":"Discord.Rest.RestDMChannel.yml","Discord.Rest.RestDMChannel.GetMessagesAsync(System.UInt64,Direction,System.Int32,RequestOptions)":"Discord.Rest.RestDMChannel.yml","Discord.Rest.RestDMChannel.GetMessagesAsync(IMessage,Direction,System.Int32,RequestOptions)":"Discord.Rest.RestDMChannel.yml","Discord.Rest.RestDMChannel.GetPinnedMessagesAsync(RequestOptions)":"Discord.Rest.RestDMChannel.yml","Discord.Rest.RestDMChannel.SendMessageAsync(System.String,System.Boolean,Embed,RequestOptions)":"Discord.Rest.RestDMChannel.yml","Discord.Rest.RestDMChannel.SendFileAsync(Stream,System.String,System.String,System.Boolean,RequestOptions)":"Discord.Rest.RestDMChannel.yml","Discord.Rest.RestDMChannel.DeleteMessagesAsync(IEnumerable{IMessage},RequestOptions)":"Discord.Rest.RestDMChannel.yml","Discord.Rest.RestDMChannel.TriggerTypingAsync(RequestOptions)":"Discord.Rest.RestDMChannel.yml","Discord.Rest.RestDMChannel.EnterTypingState(RequestOptions)":"Discord.Rest.RestDMChannel.yml","Discord.Rest.RestDMChannel.ToString":"Discord.Rest.RestDMChannel.yml","Discord.Rest.RestDMChannel.Discord#Rest#IRestPrivateChannel#Recipients":"Discord.Rest.RestDMChannel.yml","Discord.Rest.RestGroupChannel":"Discord.Rest.RestGroupChannel.yml","Discord.Rest.RestGroupChannel.Name":"Discord.Rest.RestGroupChannel.yml","Discord.Rest.RestGroupChannel.Users":"Discord.Rest.RestGroupChannel.yml","Discord.Rest.RestGroupChannel.Recipients":"Discord.Rest.RestGroupChannel.yml","Discord.Rest.RestGroupChannel.UpdateAsync(RequestOptions)":"Discord.Rest.RestGroupChannel.yml","Discord.Rest.RestGroupChannel.LeaveAsync(RequestOptions)":"Discord.Rest.RestGroupChannel.yml","Discord.Rest.RestGroupChannel.GetUser(System.UInt64)":"Discord.Rest.RestGroupChannel.yml","Discord.Rest.RestGroupChannel.GetMessageAsync(System.UInt64,RequestOptions)":"Discord.Rest.RestGroupChannel.yml","Discord.Rest.RestGroupChannel.GetMessagesAsync(System.Int32,RequestOptions)":"Discord.Rest.RestGroupChannel.yml","Discord.Rest.RestGroupChannel.GetMessagesAsync(System.UInt64,Direction,System.Int32,RequestOptions)":"Discord.Rest.RestGroupChannel.yml","Discord.Rest.RestGroupChannel.GetMessagesAsync(IMessage,Direction,System.Int32,RequestOptions)":"Discord.Rest.RestGroupChannel.yml","Discord.Rest.RestGroupChannel.GetPinnedMessagesAsync(RequestOptions)":"Discord.Rest.RestGroupChannel.yml","Discord.Rest.RestGroupChannel.SendMessageAsync(System.String,System.Boolean,Embed,RequestOptions)":"Discord.Rest.RestGroupChannel.yml","Discord.Rest.RestGroupChannel.SendFileAsync(Stream,System.String,System.String,System.Boolean,RequestOptions)":"Discord.Rest.RestGroupChannel.yml","Discord.Rest.RestGroupChannel.DeleteMessagesAsync(IEnumerable{IMessage},RequestOptions)":"Discord.Rest.RestGroupChannel.yml","Discord.Rest.RestGroupChannel.TriggerTypingAsync(RequestOptions)":"Discord.Rest.RestGroupChannel.yml","Discord.Rest.RestGroupChannel.EnterTypingState(RequestOptions)":"Discord.Rest.RestGroupChannel.yml","Discord.Rest.RestGroupChannel.ToString":"Discord.Rest.RestGroupChannel.yml","Discord.Rest.RestGroupChannel.Discord#Rest#IRestPrivateChannel#Recipients":"Discord.Rest.RestGroupChannel.yml","Discord.Rest.RestGuildChannel":"Discord.Rest.RestGuildChannel.yml","Discord.Rest.RestGuildChannel.PermissionOverwrites":"Discord.Rest.RestGuildChannel.yml","Discord.Rest.RestGuildChannel.Name":"Discord.Rest.RestGuildChannel.yml","Discord.Rest.RestGuildChannel.Position":"Discord.Rest.RestGuildChannel.yml","Discord.Rest.RestGuildChannel.GuildId":"Discord.Rest.RestGuildChannel.yml","Discord.Rest.RestGuildChannel.UpdateAsync(RequestOptions)":"Discord.Rest.RestGuildChannel.yml","Discord.Rest.RestGuildChannel.ModifyAsync(Action{GuildChannelProperties},RequestOptions)":"Discord.Rest.RestGuildChannel.yml","Discord.Rest.RestGuildChannel.DeleteAsync(RequestOptions)":"Discord.Rest.RestGuildChannel.yml","Discord.Rest.RestGuildChannel.GetPermissionOverwrite(IUser)":"Discord.Rest.RestGuildChannel.yml","Discord.Rest.RestGuildChannel.GetPermissionOverwrite(IRole)":"Discord.Rest.RestGuildChannel.yml","Discord.Rest.RestGuildChannel.AddPermissionOverwriteAsync(IUser,OverwritePermissions,RequestOptions)":"Discord.Rest.RestGuildChannel.yml","Discord.Rest.RestGuildChannel.AddPermissionOverwriteAsync(IRole,OverwritePermissions,RequestOptions)":"Discord.Rest.RestGuildChannel.yml","Discord.Rest.RestGuildChannel.RemovePermissionOverwriteAsync(IUser,RequestOptions)":"Discord.Rest.RestGuildChannel.yml","Discord.Rest.RestGuildChannel.RemovePermissionOverwriteAsync(IRole,RequestOptions)":"Discord.Rest.RestGuildChannel.yml","Discord.Rest.RestGuildChannel.GetInvitesAsync(RequestOptions)":"Discord.Rest.RestGuildChannel.yml","Discord.Rest.RestGuildChannel.CreateInviteAsync(System.Nullable{System.Int32},System.Nullable{System.Int32},System.Boolean,RequestOptions)":"Discord.Rest.RestGuildChannel.yml","Discord.Rest.RestGuildChannel.ToString":"Discord.Rest.RestGuildChannel.yml","Discord.Rest.RestTextChannel":"Discord.Rest.RestTextChannel.yml","Discord.Rest.RestTextChannel.Topic":"Discord.Rest.RestTextChannel.yml","Discord.Rest.RestTextChannel.Mention":"Discord.Rest.RestTextChannel.yml","Discord.Rest.RestTextChannel.ModifyAsync(Action{TextChannelProperties},RequestOptions)":"Discord.Rest.RestTextChannel.yml","Discord.Rest.RestTextChannel.GetUserAsync(System.UInt64,RequestOptions)":"Discord.Rest.RestTextChannel.yml","Discord.Rest.RestTextChannel.GetUsersAsync(RequestOptions)":"Discord.Rest.RestTextChannel.yml","Discord.Rest.RestTextChannel.GetMessageAsync(System.UInt64,RequestOptions)":"Discord.Rest.RestTextChannel.yml","Discord.Rest.RestTextChannel.GetMessagesAsync(System.Int32,RequestOptions)":"Discord.Rest.RestTextChannel.yml","Discord.Rest.RestTextChannel.GetMessagesAsync(System.UInt64,Direction,System.Int32,RequestOptions)":"Discord.Rest.RestTextChannel.yml","Discord.Rest.RestTextChannel.GetMessagesAsync(IMessage,Direction,System.Int32,RequestOptions)":"Discord.Rest.RestTextChannel.yml","Discord.Rest.RestTextChannel.GetPinnedMessagesAsync(RequestOptions)":"Discord.Rest.RestTextChannel.yml","Discord.Rest.RestTextChannel.SendMessageAsync(System.String,System.Boolean,Embed,RequestOptions)":"Discord.Rest.RestTextChannel.yml","Discord.Rest.RestTextChannel.SendFileAsync(Stream,System.String,System.String,System.Boolean,RequestOptions)":"Discord.Rest.RestTextChannel.yml","Discord.Rest.RestTextChannel.DeleteMessagesAsync(IEnumerable{IMessage},RequestOptions)":"Discord.Rest.RestTextChannel.yml","Discord.Rest.RestTextChannel.TriggerTypingAsync(RequestOptions)":"Discord.Rest.RestTextChannel.yml","Discord.Rest.RestTextChannel.EnterTypingState(RequestOptions)":"Discord.Rest.RestTextChannel.yml","Discord.Rest.RestVoiceChannel":"Discord.Rest.RestVoiceChannel.yml","Discord.Rest.RestVoiceChannel.Bitrate":"Discord.Rest.RestVoiceChannel.yml","Discord.Rest.RestVoiceChannel.UserLimit":"Discord.Rest.RestVoiceChannel.yml","Discord.Rest.RestVoiceChannel.ModifyAsync(Action{VoiceChannelProperties},RequestOptions)":"Discord.Rest.RestVoiceChannel.yml","Discord.Rest.RestBan":"Discord.Rest.RestBan.yml","Discord.Rest.RestBan.User":"Discord.Rest.RestBan.yml","Discord.Rest.RestBan.Reason":"Discord.Rest.RestBan.yml","Discord.Rest.RestBan.ToString":"Discord.Rest.RestBan.yml","Discord.Rest.RestGuild":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.Name":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.AFKTimeout":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.IsEmbeddable":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.VerificationLevel":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.MfaLevel":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.DefaultMessageNotifications":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.AFKChannelId":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.EmbedChannelId":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.OwnerId":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.VoiceRegionId":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.IconId":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.SplashId":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.CreatedAt":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.DefaultChannelId":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.IconUrl":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.SplashUrl":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.EveryoneRole":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.Roles":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.Emojis":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.Features":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.UpdateAsync(RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.DeleteAsync(RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.ModifyAsync(Action{GuildProperties},RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.ModifyEmbedAsync(Action{GuildEmbedProperties},RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.ModifyChannelsAsync(IEnumerable{BulkGuildChannelProperties},RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.ModifyRolesAsync(IEnumerable{BulkRoleProperties},RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.LeaveAsync(RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.GetBansAsync(RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.AddBanAsync(IUser,System.Int32,RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.AddBanAsync(System.UInt64,System.Int32,RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.RemoveBanAsync(IUser,RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.RemoveBanAsync(System.UInt64,RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.GetChannelsAsync(RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.GetChannelAsync(System.UInt64,RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.CreateTextChannelAsync(System.String,RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.CreateVoiceChannelAsync(System.String,RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.GetIntegrationsAsync(RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.CreateIntegrationAsync(System.UInt64,System.String,RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.GetInvitesAsync(RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.GetRole(System.UInt64)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.CreateRoleAsync(System.String,System.Nullable{GuildPermissions},System.Nullable{Color},System.Boolean,RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.GetUsersAsync(RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.GetUserAsync(System.UInt64,RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.GetCurrentUserAsync(RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.PruneUsersAsync(System.Int32,System.Boolean,RequestOptions)":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuild.ToString":"Discord.Rest.RestGuild.yml","Discord.Rest.RestGuildIntegration":"Discord.Rest.RestGuildIntegration.yml","Discord.Rest.RestGuildIntegration.Name":"Discord.Rest.RestGuildIntegration.yml","Discord.Rest.RestGuildIntegration.Type":"Discord.Rest.RestGuildIntegration.yml","Discord.Rest.RestGuildIntegration.IsEnabled":"Discord.Rest.RestGuildIntegration.yml","Discord.Rest.RestGuildIntegration.IsSyncing":"Discord.Rest.RestGuildIntegration.yml","Discord.Rest.RestGuildIntegration.ExpireBehavior":"Discord.Rest.RestGuildIntegration.yml","Discord.Rest.RestGuildIntegration.ExpireGracePeriod":"Discord.Rest.RestGuildIntegration.yml","Discord.Rest.RestGuildIntegration.GuildId":"Discord.Rest.RestGuildIntegration.yml","Discord.Rest.RestGuildIntegration.RoleId":"Discord.Rest.RestGuildIntegration.yml","Discord.Rest.RestGuildIntegration.User":"Discord.Rest.RestGuildIntegration.yml","Discord.Rest.RestGuildIntegration.Account":"Discord.Rest.RestGuildIntegration.yml","Discord.Rest.RestGuildIntegration.SyncedAt":"Discord.Rest.RestGuildIntegration.yml","Discord.Rest.RestGuildIntegration.DeleteAsync":"Discord.Rest.RestGuildIntegration.yml","Discord.Rest.RestGuildIntegration.ModifyAsync(Action{GuildIntegrationProperties})":"Discord.Rest.RestGuildIntegration.yml","Discord.Rest.RestGuildIntegration.SyncAsync":"Discord.Rest.RestGuildIntegration.yml","Discord.Rest.RestGuildIntegration.ToString":"Discord.Rest.RestGuildIntegration.yml","Discord.Rest.RestUserGuild":"Discord.Rest.RestUserGuild.yml","Discord.Rest.RestUserGuild.Name":"Discord.Rest.RestUserGuild.yml","Discord.Rest.RestUserGuild.IsOwner":"Discord.Rest.RestUserGuild.yml","Discord.Rest.RestUserGuild.Permissions":"Discord.Rest.RestUserGuild.yml","Discord.Rest.RestUserGuild.CreatedAt":"Discord.Rest.RestUserGuild.yml","Discord.Rest.RestUserGuild.IconUrl":"Discord.Rest.RestUserGuild.yml","Discord.Rest.RestUserGuild.LeaveAsync(RequestOptions)":"Discord.Rest.RestUserGuild.yml","Discord.Rest.RestUserGuild.DeleteAsync(RequestOptions)":"Discord.Rest.RestUserGuild.yml","Discord.Rest.RestUserGuild.ToString":"Discord.Rest.RestUserGuild.yml","Discord.Rest.RestInvite":"Discord.Rest.RestInvite.yml","Discord.Rest.RestInvite.ChannelName":"Discord.Rest.RestInvite.yml","Discord.Rest.RestInvite.GuildName":"Discord.Rest.RestInvite.yml","Discord.Rest.RestInvite.ChannelId":"Discord.Rest.RestInvite.yml","Discord.Rest.RestInvite.GuildId":"Discord.Rest.RestInvite.yml","Discord.Rest.RestInvite.Code":"Discord.Rest.RestInvite.yml","Discord.Rest.RestInvite.Url":"Discord.Rest.RestInvite.yml","Discord.Rest.RestInvite.UpdateAsync(RequestOptions)":"Discord.Rest.RestInvite.yml","Discord.Rest.RestInvite.DeleteAsync(RequestOptions)":"Discord.Rest.RestInvite.yml","Discord.Rest.RestInvite.AcceptAsync(RequestOptions)":"Discord.Rest.RestInvite.yml","Discord.Rest.RestInvite.ToString":"Discord.Rest.RestInvite.yml","Discord.Rest.RestInviteMetadata":"Discord.Rest.RestInviteMetadata.yml","Discord.Rest.RestInviteMetadata.IsRevoked":"Discord.Rest.RestInviteMetadata.yml","Discord.Rest.RestInviteMetadata.IsTemporary":"Discord.Rest.RestInviteMetadata.yml","Discord.Rest.RestInviteMetadata.MaxAge":"Discord.Rest.RestInviteMetadata.yml","Discord.Rest.RestInviteMetadata.MaxUses":"Discord.Rest.RestInviteMetadata.yml","Discord.Rest.RestInviteMetadata.Uses":"Discord.Rest.RestInviteMetadata.yml","Discord.Rest.RestInviteMetadata.Inviter":"Discord.Rest.RestInviteMetadata.yml","Discord.Rest.RestInviteMetadata.CreatedAt":"Discord.Rest.RestInviteMetadata.yml","Discord.Rest.RestMessage":"Discord.Rest.RestMessage.yml","Discord.Rest.RestMessage.Channel":"Discord.Rest.RestMessage.yml","Discord.Rest.RestMessage.Author":"Discord.Rest.RestMessage.yml","Discord.Rest.RestMessage.Content":"Discord.Rest.RestMessage.yml","Discord.Rest.RestMessage.CreatedAt":"Discord.Rest.RestMessage.yml","Discord.Rest.RestMessage.IsTTS":"Discord.Rest.RestMessage.yml","Discord.Rest.RestMessage.IsPinned":"Discord.Rest.RestMessage.yml","Discord.Rest.RestMessage.EditedTimestamp":"Discord.Rest.RestMessage.yml","Discord.Rest.RestMessage.Attachments":"Discord.Rest.RestMessage.yml","Discord.Rest.RestMessage.Embeds":"Discord.Rest.RestMessage.yml","Discord.Rest.RestMessage.MentionedChannelIds":"Discord.Rest.RestMessage.yml","Discord.Rest.RestMessage.MentionedRoleIds":"Discord.Rest.RestMessage.yml","Discord.Rest.RestMessage.MentionedUsers":"Discord.Rest.RestMessage.yml","Discord.Rest.RestMessage.Tags":"Discord.Rest.RestMessage.yml","Discord.Rest.RestMessage.WebhookId":"Discord.Rest.RestMessage.yml","Discord.Rest.RestMessage.IsWebhook":"Discord.Rest.RestMessage.yml","Discord.Rest.RestMessage.Timestamp":"Discord.Rest.RestMessage.yml","Discord.Rest.RestMessage.UpdateAsync(RequestOptions)":"Discord.Rest.RestMessage.yml","Discord.Rest.RestMessage.DeleteAsync(RequestOptions)":"Discord.Rest.RestMessage.yml","Discord.Rest.RestMessage.ToString":"Discord.Rest.RestMessage.yml","Discord.Rest.RestReaction":"Discord.Rest.RestReaction.yml","Discord.Rest.RestReaction.Emoji":"Discord.Rest.RestReaction.yml","Discord.Rest.RestReaction.Count":"Discord.Rest.RestReaction.yml","Discord.Rest.RestReaction.Me":"Discord.Rest.RestReaction.yml","Discord.Rest.RestSystemMessage":"Discord.Rest.RestSystemMessage.yml","Discord.Rest.RestSystemMessage.Type":"Discord.Rest.RestSystemMessage.yml","Discord.Rest.RestUserMessage":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.IsTTS":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.IsPinned":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.WebhookId":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.EditedTimestamp":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.Attachments":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.Embeds":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.MentionedChannelIds":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.MentionedRoleIds":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.MentionedUsers":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.Tags":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.Reactions":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.ModifyAsync(Action{MessageProperties},RequestOptions)":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.AddReactionAsync(Emoji,RequestOptions)":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.AddReactionAsync(System.String,RequestOptions)":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.RemoveReactionAsync(Emoji,IUser,RequestOptions)":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.RemoveReactionAsync(System.String,IUser,RequestOptions)":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.RemoveAllReactionsAsync(RequestOptions)":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.GetReactionUsersAsync(System.String,System.Int32,System.Nullable{System.UInt64},RequestOptions)":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.PinAsync(RequestOptions)":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.UnpinAsync(RequestOptions)":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.Resolve(System.Int32,TagHandling,TagHandling,TagHandling,TagHandling,TagHandling)":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestUserMessage.Resolve(TagHandling,TagHandling,TagHandling,TagHandling,TagHandling)":"Discord.Rest.RestUserMessage.yml","Discord.Rest.RestRole":"Discord.Rest.RestRole.yml","Discord.Rest.RestRole.Color":"Discord.Rest.RestRole.yml","Discord.Rest.RestRole.IsHoisted":"Discord.Rest.RestRole.yml","Discord.Rest.RestRole.IsManaged":"Discord.Rest.RestRole.yml","Discord.Rest.RestRole.IsMentionable":"Discord.Rest.RestRole.yml","Discord.Rest.RestRole.Name":"Discord.Rest.RestRole.yml","Discord.Rest.RestRole.Permissions":"Discord.Rest.RestRole.yml","Discord.Rest.RestRole.Position":"Discord.Rest.RestRole.yml","Discord.Rest.RestRole.CreatedAt":"Discord.Rest.RestRole.yml","Discord.Rest.RestRole.IsEveryone":"Discord.Rest.RestRole.yml","Discord.Rest.RestRole.Mention":"Discord.Rest.RestRole.yml","Discord.Rest.RestRole.ModifyAsync(Action{RoleProperties},RequestOptions)":"Discord.Rest.RestRole.yml","Discord.Rest.RestRole.DeleteAsync(RequestOptions)":"Discord.Rest.RestRole.yml","Discord.Rest.RestRole.CompareTo(IRole)":"Discord.Rest.RestRole.yml","Discord.Rest.RestRole.ToString":"Discord.Rest.RestRole.yml","Discord.Rest.RestGroupUser":"Discord.Rest.RestGroupUser.yml","Discord.Rest.RestGuildUser":"Discord.Rest.RestGuildUser.yml","Discord.Rest.RestGuildUser.Nickname":"Discord.Rest.RestGuildUser.yml","Discord.Rest.RestGuildUser.IsDeafened":"Discord.Rest.RestGuildUser.yml","Discord.Rest.RestGuildUser.IsMuted":"Discord.Rest.RestGuildUser.yml","Discord.Rest.RestGuildUser.GuildId":"Discord.Rest.RestGuildUser.yml","Discord.Rest.RestGuildUser.GuildPermissions":"Discord.Rest.RestGuildUser.yml","Discord.Rest.RestGuildUser.RoleIds":"Discord.Rest.RestGuildUser.yml","Discord.Rest.RestGuildUser.JoinedAt":"Discord.Rest.RestGuildUser.yml","Discord.Rest.RestGuildUser.UpdateAsync(RequestOptions)":"Discord.Rest.RestGuildUser.yml","Discord.Rest.RestGuildUser.ModifyAsync(Action{GuildUserProperties},RequestOptions)":"Discord.Rest.RestGuildUser.yml","Discord.Rest.RestGuildUser.KickAsync(RequestOptions)":"Discord.Rest.RestGuildUser.yml","Discord.Rest.RestGuildUser.GetPermissions(IGuildChannel)":"Discord.Rest.RestGuildUser.yml","Discord.Rest.RestSelfUser":"Discord.Rest.RestSelfUser.yml","Discord.Rest.RestSelfUser.Email":"Discord.Rest.RestSelfUser.yml","Discord.Rest.RestSelfUser.IsVerified":"Discord.Rest.RestSelfUser.yml","Discord.Rest.RestSelfUser.IsMfaEnabled":"Discord.Rest.RestSelfUser.yml","Discord.Rest.RestSelfUser.UpdateAsync(RequestOptions)":"Discord.Rest.RestSelfUser.yml","Discord.Rest.RestSelfUser.ModifyAsync(Action{SelfUserProperties},RequestOptions)":"Discord.Rest.RestSelfUser.yml","Discord.Rest.RestUser":"Discord.Rest.RestUser.yml","Discord.Rest.RestUser.IsBot":"Discord.Rest.RestUser.yml","Discord.Rest.RestUser.Username":"Discord.Rest.RestUser.yml","Discord.Rest.RestUser.DiscriminatorValue":"Discord.Rest.RestUser.yml","Discord.Rest.RestUser.AvatarId":"Discord.Rest.RestUser.yml","Discord.Rest.RestUser.AvatarUrl":"Discord.Rest.RestUser.yml","Discord.Rest.RestUser.CreatedAt":"Discord.Rest.RestUser.yml","Discord.Rest.RestUser.Discriminator":"Discord.Rest.RestUser.yml","Discord.Rest.RestUser.Mention":"Discord.Rest.RestUser.yml","Discord.Rest.RestUser.Game":"Discord.Rest.RestUser.yml","Discord.Rest.RestUser.Status":"Discord.Rest.RestUser.yml","Discord.Rest.RestUser.UpdateAsync(RequestOptions)":"Discord.Rest.RestUser.yml","Discord.Rest.RestUser.CreateDMChannelAsync(RequestOptions)":"Discord.Rest.RestUser.yml","Discord.Rest.RestUser.ToString":"Discord.Rest.RestUser.yml"}
\ No newline at end of file
diff --git a/docs/docfx.json b/docs/docfx.json
index e0b5514cd..3c0b0611e 100644
--- a/docs/docfx.json
+++ b/docs/docfx.json
@@ -5,7 +5,7 @@
{
"src": "..",
"files": [
- "src/**project.json"
+ "src/**/*.cs"
],
"exclude": [
"**/obj/**",
@@ -42,7 +42,8 @@
"resource": [
{
"files": [
- "images/**"
+ "**/images/**",
+ "**/samples/**"
],
"exclude": [
"obj/**",
@@ -66,7 +67,7 @@
"default"
],
"globalMetadata": {
- "_appFooter": "Discord.Net (c) 2015-2016"
+ "_appFooter": "Discord.Net (c) 2015-2017"
},
"noLangKeyword": false
}
diff --git a/docs/filterConfig.yml b/docs/filterConfig.yml
index 79ea54ae0..715b39606 100644
--- a/docs/filterConfig.yml
+++ b/docs/filterConfig.yml
@@ -6,4 +6,6 @@ apiRules:
- exclude:
uidRegex: ^Discord\.Net\.Converters$
- exclude:
- uidRegex: ^Discord\.Net.*$
\ No newline at end of file
+ uidRegex: ^Discord\.Net.*$
+- exclude:
+ uidRegex: ^RegexAnalyzer$
\ No newline at end of file
diff --git a/docs/guides/commands.md b/docs/guides/commands/commands.md
similarity index 93%
rename from docs/guides/commands.md
rename to docs/guides/commands/commands.md
index 8f1a34db9..e021b1eb3 100644
--- a/docs/guides/commands.md
+++ b/docs/guides/commands/commands.md
@@ -1,5 +1,9 @@
# The Command Service
+>[!WARNING]
+>This article is out of date, and has not been rewritten yet.
+Information is not guaranteed to be accurate.
+
[Discord.Commands](xref:Discord.Commands) provides an Attribute-based
Command Parser.
@@ -41,7 +45,7 @@ Discord.Net's implementation of Modules is influenced heavily from
ASP.Net Core's Controller pattern. This means that the lifetime of a
module instance is only as long as the command being invoked.
-**Avoid using long-running code** in your modules whereever possible.
+**Avoid using long-running code** in your modules wherever possible.
You should **not** be implementing very much logic into your modules;
outsource to a service for that.
@@ -163,8 +167,8 @@ a dependency map.
Modules are constructed using Dependency Injection. Any parameters
that are placed in the constructor must be injected into an
-@Discord.Commands.IDependencyMap. Alternatively, you may accept an
-IDependencyMap as an argument and extract services yourself.
+@System.IServiceProvider. Alternatively, you may accept an
+IServiceProvider as an argument and extract services yourself.
### Module Properties
@@ -201,21 +205,20 @@ you use DI when writing your modules.
### Setup
-First, you need to create an @Discord.Commands.IDependencyMap.
-The library includes @Discord.Commands.DependencyMap to help with
-this, however you may create your own IDependencyMap if you wish.
+First, you need to create an @System.IServiceProvider
+You may create your own IServiceProvider if you wish.
Next, add the dependencies your modules will use to the map.
Finally, pass the map into the `LoadAssembly` method.
Your modules will automatically be loaded with this dependency map.
-[!code-csharp[DependencyMap Setup](samples/dependency_map_setup.cs)]
+[!code-csharp[IServiceProvider Setup](samples/dependency_map_setup.cs)]
### Usage in Modules
In the constructor of your module, any parameters will be filled in by
-the @Discord.Commands.IDependencyMap you pass into `LoadAssembly`.
+the @System.IServiceProvider you pass into `LoadAssembly`.
Any publicly settable properties will also be filled in the same manner.
@@ -224,12 +227,12 @@ Any publicly settable properties will also be filled in the same manner.
being injected.
>[!NOTE]
->If you accept `CommandService` or `IDependencyMap` as a parameter in
+>If you accept `CommandService` or `IServiceProvider` as a parameter in
your constructor or as an injectable property, these entries will be filled
-by the CommandService the module was loaded from, and the DependencyMap passed
+by the CommandService the module was loaded from, and the ServiceProvider passed
into it, respectively.
-[!code-csharp[DependencyMap in Modules](samples/dependency_module.cs)]
+[!code-csharp[ServiceProvider in Modules](samples/dependency_module.cs)]
# Preconditions
diff --git a/docs/guides/samples/command_handler.cs b/docs/guides/commands/samples/command_handler.cs
similarity index 69%
rename from docs/guides/samples/command_handler.cs
rename to docs/guides/commands/samples/command_handler.cs
index 71869415b..6b5d4ad2b 100644
--- a/docs/guides/samples/command_handler.cs
+++ b/docs/guides/commands/samples/command_handler.cs
@@ -1,14 +1,16 @@
+using System;
using System.Threading.Tasks;
using System.Reflection;
using Discord;
using Discord.WebSocket;
using Discord.Commands;
+using Microsoft.Extensions.DependencyInjection;
public class Program
{
private CommandService commands;
private DiscordSocketClient client;
- private DependencyMap map;
+ private IServiceProvider services;
static void Main(string[] args) => new Program().Start().GetAwaiter().GetResult();
@@ -19,38 +21,40 @@ public class Program
string token = "bot token here";
- map = new DependencyMap();
+ services = new ServiceCollection()
+ .BuildServiceProvider();
await InstallCommands();
await client.LoginAsync(TokenType.Bot, token);
- await client.ConnectAsync();
+ await client.StartAsync();
await Task.Delay(-1);
}
+
public async Task InstallCommands()
{
// Hook the MessageReceived Event into our Command Handler
client.MessageReceived += HandleCommand;
- // Discover all of the commands in this assembly and load them.
+ // Discover all of the commands in this assembly and load them.
await commands.AddModulesAsync(Assembly.GetEntryAssembly());
}
+
public async Task HandleCommand(SocketMessage messageParam)
- {
+ {
// Don't process the command if it was a System Message
var message = messageParam as SocketUserMessage;
if (message == null) return;
- // Create a number to track where the prefix ends and the command begins
- int argPos = 0;
- // Determine if the message is a command, based on if it starts with '!' or a mention prefix
- if (!(message.HasCharPrefix('!', ref argPos) || message.HasMentionPrefix(client.CurrentUser, ref argPos))) return;
+ // Create a number to track where the prefix ends and the command begins
+ int argPos = 0;
+ // Determine if the message is a command, based on if it starts with '!' or a mention prefix
+ if (!(message.HasCharPrefix('!', ref argPos) || message.HasMentionPrefix(client.CurrentUser, ref argPos))) return;
// Create a Command Context
var context = new CommandContext(client, message);
// Execute the command. (result does not indicate a return value,
- // rather an object stating if the command executed succesfully)
- var result = await commands.ExecuteAsync(context, argPos, map);
+ // rather an object stating if the command executed successfully)
+ var result = await commands.ExecuteAsync(context, argPos, service);
if (!result.IsSuccess)
await context.Channel.SendMessageAsync(result.ErrorReason);
- }
-
+ }
}
diff --git a/docs/guides/samples/dependency_map_setup.cs b/docs/guides/commands/samples/dependency_map_setup.cs
similarity index 57%
rename from docs/guides/samples/dependency_map_setup.cs
rename to docs/guides/commands/samples/dependency_map_setup.cs
index aa39150e7..e205d891d 100644
--- a/docs/guides/samples/dependency_map_setup.cs
+++ b/docs/guides/commands/samples/dependency_map_setup.cs
@@ -7,12 +7,11 @@ public class Commands
{
public async Task Install(DiscordSocketClient client)
{
- // Here, we will inject the Dependency Map with
+ // Here, we will inject the ServiceProvider with
// all of the services our client will use.
- _map.Add(client);
- _map.Add(commands);
- _map.Add(new NotificationService(_map));
- _map.Add(new DatabaseService(_map));
+ _serviceCollection.AddSingleton(client)
+ _serviceCollection.AddSingleton(new NotificationService())
+ _serviceCollection.AddSingleton(new DatabaseService())
// ...
await _commands.AddModulesAsync(Assembly.GetEntryAssembly());
}
diff --git a/docs/guides/samples/dependency_module.cs b/docs/guides/commands/samples/dependency_module.cs
similarity index 100%
rename from docs/guides/samples/dependency_module.cs
rename to docs/guides/commands/samples/dependency_module.cs
diff --git a/docs/guides/samples/empty-module.cs b/docs/guides/commands/samples/empty-module.cs
similarity index 100%
rename from docs/guides/samples/empty-module.cs
rename to docs/guides/commands/samples/empty-module.cs
diff --git a/docs/guides/samples/groups.cs b/docs/guides/commands/samples/groups.cs
similarity index 100%
rename from docs/guides/samples/groups.cs
rename to docs/guides/commands/samples/groups.cs
diff --git a/docs/guides/samples/module.cs b/docs/guides/commands/samples/module.cs
similarity index 100%
rename from docs/guides/samples/module.cs
rename to docs/guides/commands/samples/module.cs
diff --git a/docs/guides/samples/require_owner.cs b/docs/guides/commands/samples/require_owner.cs
similarity index 68%
rename from docs/guides/samples/require_owner.cs
rename to docs/guides/commands/samples/require_owner.cs
index 567b3d2af..3611afab8 100644
--- a/docs/guides/samples/require_owner.cs
+++ b/docs/guides/commands/samples/require_owner.cs
@@ -1,13 +1,19 @@
// (Note: This precondition is obsolete, it is recommended to use the RequireOwnerAttribute that is bundled with Discord.Commands)
+using Discord.Commands;
+using Discord.WebSocket;
+using Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Threading.Tasks;
+
// Inherit from PreconditionAttribute
public class RequireOwnerAttribute : PreconditionAttribute
{
// Override the CheckPermissions method
- public async override Task CheckPermissions(CommandContext context, CommandInfo command, IDependencyMap map)
+ public async override Task CheckPermissions(ICommandContext context, CommandInfo command, IServiceProvider services)
{
// Get the ID of the bot's owner
- var ownerId = (await map.Get().GetApplicationInfoAsync()).Owner.Id;
+ var ownerId = (await services.GetService().GetApplicationInfoAsync()).Owner.Id;
// If this command was executed by that user, return a success
if (context.User.Id == ownerId)
return PreconditionResult.FromSuccess();
diff --git a/docs/guides/samples/typereader.cs b/docs/guides/commands/samples/typereader.cs
similarity index 100%
rename from docs/guides/samples/typereader.cs
rename to docs/guides/commands/samples/typereader.cs
diff --git a/docs/guides/concepts/connections.md b/docs/guides/concepts/connections.md
new file mode 100644
index 000000000..30e5e55cd
--- /dev/null
+++ b/docs/guides/concepts/connections.md
@@ -0,0 +1,58 @@
+---
+title: Managing Connections
+---
+
+In Discord.Net, once a client has been started, it will automatically
+maintain a connection to Discord's gateway, until it is manually
+stopped.
+
+### Usage
+
+To start a connection, invoke the `StartAsync` method on a client that
+supports a WebSocket connection.
+
+These clients include the [DiscordSocketClient] and
+[DiscordRpcClient], as well as Audio clients.
+
+To end a connection, invoke the `StopAsync` method. This will
+gracefully close any open WebSocket or UdpSocket connections.
+
+Since the Start/Stop methods only signal to an underlying connection
+manager that a connection needs to be started, **they return before a
+connection is actually made.**
+
+As a result, you will need to hook into one of the connection-state
+based events to have an accurate representation of when a client is
+ready for use.
+
+All clients provide a `Connected` and `Disconnected` event, which is
+raised respectively when a connection opens or closes. In the case of
+the DiscordSocketClient, this does **not** mean that the client is
+ready to be used.
+
+A separate event, `Ready`, is provided on DiscordSocketClient, which
+is raised only when the client has finished guild stream or guild
+sync, and has a complete guild cache.
+
+[DiscordSocketClient]: xref:Discord.WebSocket.DiscordSocketClient
+[DiscordRpcClient]: xref:Discord.Rpc.DiscordRpcClient
+
+### Samples
+
+[!code-csharp[Connection Sample](samples/events.cs)]
+
+### Tips
+
+Avoid running long-running code on the gateway! If you deadlock the
+gateway (as explained in [events]), the connection manager will be
+unable to recover and reconnect.
+
+Assuming the client disconnected because of a fault on Discord's end,
+and not a deadlock on your end, we will always attempt to reconnect
+and resume a connection.
+
+Don't worry about trying to maintain your own connections, the
+connection manager is designed to be bulletproof and never fail - if
+your client doesn't manage to reconnect, you've found a bug!
+
+[events]: events.md
\ No newline at end of file
diff --git a/docs/guides/concepts/entities.md b/docs/guides/concepts/entities.md
new file mode 100644
index 000000000..a38651829
--- /dev/null
+++ b/docs/guides/concepts/entities.md
@@ -0,0 +1,68 @@
+---
+title: Entities
+---
+
+>[!NOTE]
+This article is written with the Socket variants of entities in mind,
+not the general interfaces or Rest/Rpc entities.
+
+Discord.Net provides a versatile entity system for navigating the
+Discord API.
+
+### Inheritance
+
+Due to the nature of the Discord API, some entities are designed with
+multiple variants, for example, `SocketUser` and `SocketGuildUser`.
+
+All models will contain the most detailed version of an entity
+possible, even if the type is less detailed.
+
+For example, in the case of the `MessageReceived` event, a
+`SocketMessage` is passed in with a channel property of type
+`SocketMessageChannel`. All messages come from channels capable of
+messaging, so this is the only variant of a channel that can cover
+every single case.
+
+But that doesn't mean a message _can't_ come from a
+`SocketTextChannel`, which is a message channel in a guild. To
+retrieve information about a guild from a message entity, you will
+need to cast its channel object to a `SocketTextChannel`.
+
+### Navigation
+
+All socket entities have navigation properties on them, which allow
+you to easily navigate to an entity's parent or children. As explained
+above, you will sometimes need to cast to a more detailed version of
+an entity to navigate to its parent.
+
+### Accessing Entities
+
+The most basic forms of entities, `SocketGuild`, `SocketUser`, and
+`SocketChannel` can be pulled from the DiscordSocketClient's global
+cache, and can be retrieved using the respective `GetXXX` method on
+DiscordSocketClient.
+
+>[!TIP]
+It is **vital** that you use the proper IDs for an entity when using
+a GetXXX method. It is recommended that you enable Discord's
+_developer mode_ to allow easy access to entity IDs, found in
+Settings > Appearance > Advanced
+
+More detailed versions of entities can be pulled from the basic
+entities, e.g. `SocketGuild.GetUser`, which returns a
+`SocketGuildUser`, or `SocketGuild.GetChannel`, which returns a
+`SocketGuildChannel`. Again, you may need to cast these objects to get
+a variant of the type that you need.
+
+### Samples
+
+[!code-csharp[Entity Sample](samples/entities.cs)]
+
+### Tips
+
+Avoid using boxing-casts to coerce entities into a variant, use the
+`as` keyword, and a null-conditional operator.
+
+This allows you to write safer code, and avoid InvalidCastExceptions.
+
+For example, `(message.Author as SocketGuildUser)?.Nickname`.
\ No newline at end of file
diff --git a/docs/guides/concepts/events.md b/docs/guides/concepts/events.md
new file mode 100644
index 000000000..f2dfb00f0
--- /dev/null
+++ b/docs/guides/concepts/events.md
@@ -0,0 +1,84 @@
+---
+title: Working with Events
+---
+
+Events in Discord.Net are consumed in a similar manner to the standard
+convention, with the exception that every event must be of the type
+`System.Threading.Tasks.Task`, and instead of using EventArgs, the
+event's parameters are passed directly into the handler.
+
+This allows for events to be handled in an async context directly,
+instead of relying on async void.
+
+### Usage
+
+To receive data from an event, hook into it using C#'s delegate
+event pattern.
+
+You may opt either to hook an event to an anonymous function (lambda)
+or a named function.
+
+### Safety
+
+All events are designed to be thread-safe, in that events are executed
+synchronously off the gateway task, in the same context as the gateway
+task.
+
+As a side effect, this makes it possible to deadlock the gateway task,
+and kill a connection. As a general rule of thumb, any task that takes
+longer than three seconds should **not** be awaited directly in the
+context of an event, but should be wrapped in a `Task.Run` or
+offloaded to another task.
+
+This also means that you should not await a task that requests data
+from Discord's gateway in the same context of an event. Since the
+gateway will wait on all invoked event handlers to finish before
+processing any additional data from the gateway, this will create
+a deadlock that will be impossible to recover from.
+
+Exceptions in commands will be swallowed by the gateway and logged out
+through the client's log method.
+
+### Common Patterns
+
+As you may know, events in Discord.Net are only given a signature of
+`Func`. There is no room for predefined argument names,
+so you must either consult IntelliSense, or view the API documentation
+directly.
+
+That being said, there are a variety of common patterns that allow you
+to infer what the parameters in an event mean.
+
+#### Entity, Entity
+
+An event handler with a signature of `Func`
+typically means that the first object will be a clone of the entity
+_before_ a change was made, and the latter object will be an attached
+model of the entity _after_ the change was made.
+
+This pattern is typically only found on `EntityUpdated` events.
+
+#### Cacheable
+
+An event handler with a signature of `Func`
+means that the `before` state of the entity was not provided by the
+API, so it can either be pulled from the client's cache, or
+downloaded from the API.
+
+See the documentation for [Cacheable] for more information on this
+object.
+
+[Cacheable]: xref:Discord.Cacheable`2
+
+### Samples
+
+[!code-csharp[Event Sample](samples/events.cs)]
+
+### Tips
+
+Many events relating to a Message entity, e.g. `MessageUpdated`
+and `ReactionAdded` rely on the client's message cache, which is
+**not** enabled by default. Set the `MessageCacheSize` flag in
+[DiscordSocketConfig] to enable it.
+
+[DiscordSocketConfig]: xref:Discord.WebSocket.DiscordSocketConfig
\ No newline at end of file
diff --git a/docs/guides/concepts/logging.md b/docs/guides/concepts/logging.md
new file mode 100644
index 000000000..1592dfc72
--- /dev/null
+++ b/docs/guides/concepts/logging.md
@@ -0,0 +1,42 @@
+---
+title: Logging
+---
+
+Discord.Net's clients provide a [Log] event that all messages will be
+disbatched over.
+
+For more information about events in Discord.Net, see the [Events]
+section.
+
+[Log]: xref:Discord.Rest.BaseDiscordClient#Discord_Rest_BaseDiscordClient_Log
+[Events]: events.md
+
+### Usage
+
+To receive log events, simply hook the discord client's log method
+to a Task with a single parameter of type [LogMessage]
+
+It is recommended that you use an established function instead of a
+lambda for handling logs, because most [addons] accept a reference
+to a logging function to write their own messages.
+
+### Usage in Commands
+
+Discord.Net's [CommandService] also provides a log event, identical
+in signature to other log events.
+
+Data logged through this event is typically coupled with a
+[CommandException], where information about the command's context
+and error can be found and handled.
+
+#### Samples
+
+[!code-csharp[Logging Sample](samples/logging.cs)]
+
+#### Tips
+
+Due to the nature of Discord.Net's event system, all log event
+handlers will be executed synchronously on the gateway thread. If your
+log output will be dumped to a Web API (e.g. Sentry), you are advised
+to wrap your output in a `Task.Run` so the gateway thread does not
+become blocked while waiting for logging data to be written.
\ No newline at end of file
diff --git a/docs/guides/concepts/samples/connections.cs b/docs/guides/concepts/samples/connections.cs
new file mode 100644
index 000000000..f96251a39
--- /dev/null
+++ b/docs/guides/concepts/samples/connections.cs
@@ -0,0 +1,23 @@
+using Discord;
+using Discord.WebSocket;
+
+public class Program
+{
+ private DiscordSocketClient _client;
+ static void Main(string[] args) => new Program().MainAsync().GetAwaiter().GetResult();
+
+ public async Task MainAsync()
+ {
+ _client = new DiscordSocketClient();
+
+ await _client.LoginAsync(TokenType.Bot, "bot token");
+ await _client.StartAsync();
+
+ Console.WriteLine("Press any key to exit...");
+ Console.ReadKey();
+
+ await _client.StopAsync();
+ // Wait a little for the client to finish disconnecting before allowing the program to return
+ await Task.Delay(500);
+ }
+}
\ No newline at end of file
diff --git a/docs/guides/concepts/samples/entities.cs b/docs/guides/concepts/samples/entities.cs
new file mode 100644
index 000000000..7655c44e9
--- /dev/null
+++ b/docs/guides/concepts/samples/entities.cs
@@ -0,0 +1,13 @@
+public string GetChannelTopic(ulong id)
+{
+ var channel = client.GetChannel(81384956881809408) as SocketTextChannel;
+ if (channel == null) return "";
+ return channel.Topic;
+}
+
+public string GuildOwner(SocketChannel channel)
+{
+ var guild = (channel as SocketGuildChannel)?.Guild;
+ if (guild == null) return "";
+ return Context.Guild.Owner.Username;
+}
\ No newline at end of file
diff --git a/docs/guides/concepts/samples/events.cs b/docs/guides/concepts/samples/events.cs
new file mode 100644
index 000000000..cf0492cb5
--- /dev/null
+++ b/docs/guides/concepts/samples/events.cs
@@ -0,0 +1,36 @@
+using Discord;
+using Discord.WebSocket;
+
+public class Program
+{
+ private DiscordSocketClient _client;
+ static void Main(string[] args) => new Program().MainAsync().GetAwaiter().GetResult();
+
+ public async Task MainAsync()
+ {
+ // When working with events that have Cacheable parameters,
+ // you must enable the message cache in your config settings if you plan to
+ // use the cached message entity.
+ var _config = new DiscordSocketConfig { MessageCacheSize = 100 };
+ _client = new DiscordSocketClient(_config);
+
+ await _client.LoginAsync(TokenType.Bot, "bot token");
+ await _client.StartAsync();
+
+ _client.MessageUpdated += MessageUpdated;
+ _client.Ready += () =>
+ {
+ Console.WriteLine("Bot is connected!");
+ return Task.CompletedTask;
+ }
+
+ await Task.Delay(-1);
+ }
+
+ private async Task MessageUpdated(Cacheable before, SocketMessage after, ISocketMessageChannel channel)
+ {
+ // If the message was not in the cache, downloading it will result in getting a copy of `after`.
+ var message = await before.GetOrDownloadAsync();
+ Console.WriteLine($"{message} -> {after}");
+ }
+}
diff --git a/docs/guides/concepts/samples/logging.cs b/docs/guides/concepts/samples/logging.cs
new file mode 100644
index 000000000..a2ddf7b90
--- /dev/null
+++ b/docs/guides/concepts/samples/logging.cs
@@ -0,0 +1,29 @@
+using Discord;
+using Discord.WebSocket;
+
+public class Program
+{
+ private DiscordSocketClient _client;
+ static void Main(string[] args) => new Program().MainAsync().GetAwaiter().GetResult();
+
+ public async Task MainAsync()
+ {
+ _client = new DiscordSocketClient(new DiscordSocketConfig
+ {
+ LogLevel = LogSeverity.Info
+ });
+
+ _client.Log += Log;
+
+ await _client.LoginAsync(TokenType.Bot, "bot token");
+ await _client.StartAsync();
+
+ await Task.Delay(-1);
+ }
+
+ private Task Log(LogMessage message)
+ {
+ Console.WriteLine(message.ToString());
+ return Task.CompletedTask;
+ }
+}
\ No newline at end of file
diff --git a/docs/guides/events.md b/docs/guides/events.md
deleted file mode 100644
index b10dc7648..000000000
--- a/docs/guides/events.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-title: Events
----
-
-# Events
-
-Messages from Discord are exposed via events, and follow a pattern of `Func<[event params], Task>`, which allows you to easily create either async or sync event handlers.
-
-To hook into events, you must be using the @Discord.WebSocket.DiscordSocketClient, which provides WebSocket capabilities, necessary for receiving events.
-
->[!NOTE]
->The gateway will wait for all registered handlers of an event to finish before raising the next event. As a result of this, it is reccomended that if you need to perform any heavy work in an event handler, it is done on its own thread or Task.
-
-**For further documentation of all events**, it is reccomended to look at the [Events Section](xref:Discord.WebSocket.DiscordSocketClient#events) on the API documentation of @Discord.WebSocket.DiscordSocketClient
-
-## Connection State
-
-Connection Events will be raised when the Connection State of your client changes.
-
-[DiscordSocketClient.Connected](xref:Discord.WebSocket.DiscordSocketClient#Discord_WebSocket_DiscordSocketClient_Connected) and [Disconnected](xref:Discord.WebSocket.DiscordSocketClient#Discord_WebSocket_DiscordSocketClient_Disconnected) are raised when the Gateway Socket connects or disconnects, respectively.
-
->[!WARNING]
->You should not use DiscordClient.Connected to run code when your client first connects to Discord. The client has not received and parsed the READY event and guild stream yet, and will have an incomplete or empty cache.
-
-[DiscordSocketClient.Ready](xref:Discord.WebSocket.DiscordSocketClient#Discord_WebSocket_DiscordSocketClient_Ready) is raised when the `READY` packet is parsed and received from Discord.
-
->[!NOTE]
->The [DiscordSocketClient.ConnectAsync](xref:Discord.WebSocket.DiscordSocketClient#Discord_WebSocket_DiscordSocketClient_ConnectAsync_System_Boolean_) method will not return until the READY packet has been processed. By default, it also will not return until the guild stream has finished. This means it is safe to run bot code directly after awaiting the ConnectAsync method.
\ No newline at end of file
diff --git a/docs/guides/getting_started/images/install-rider-add.png b/docs/guides/getting_started/images/install-rider-add.png
new file mode 100644
index 000000000..3f0dc729e
Binary files /dev/null and b/docs/guides/getting_started/images/install-rider-add.png differ
diff --git a/docs/guides/getting_started/images/install-rider-nuget-manager.png b/docs/guides/getting_started/images/install-rider-nuget-manager.png
new file mode 100644
index 000000000..884b32d6b
Binary files /dev/null and b/docs/guides/getting_started/images/install-rider-nuget-manager.png differ
diff --git a/docs/guides/getting_started/images/install-rider-search.png b/docs/guides/getting_started/images/install-rider-search.png
new file mode 100644
index 000000000..32f2f9722
Binary files /dev/null and b/docs/guides/getting_started/images/install-rider-search.png differ
diff --git a/docs/guides/getting_started/images/install-vs-deps.png b/docs/guides/getting_started/images/install-vs-deps.png
new file mode 100644
index 000000000..ab10bd1bd
Binary files /dev/null and b/docs/guides/getting_started/images/install-vs-deps.png differ
diff --git a/docs/guides/getting_started/images/install-vs-nuget.png b/docs/guides/getting_started/images/install-vs-nuget.png
new file mode 100644
index 000000000..64da79a9f
Binary files /dev/null and b/docs/guides/getting_started/images/install-vs-nuget.png differ
diff --git a/docs/guides/getting_started/images/intro-add-bot.png b/docs/guides/getting_started/images/intro-add-bot.png
new file mode 100644
index 000000000..e40997ed3
Binary files /dev/null and b/docs/guides/getting_started/images/intro-add-bot.png differ
diff --git a/docs/guides/getting_started/images/intro-client-id.png b/docs/guides/getting_started/images/intro-client-id.png
new file mode 100644
index 000000000..e370aa2ec
Binary files /dev/null and b/docs/guides/getting_started/images/intro-client-id.png differ
diff --git a/docs/guides/getting_started/images/intro-create-app.png b/docs/guides/getting_started/images/intro-create-app.png
new file mode 100644
index 000000000..7aceb84b4
Binary files /dev/null and b/docs/guides/getting_started/images/intro-create-app.png differ
diff --git a/docs/guides/getting_started/images/intro-create-bot.png b/docs/guides/getting_started/images/intro-create-bot.png
new file mode 100644
index 000000000..0522358cf
Binary files /dev/null and b/docs/guides/getting_started/images/intro-create-bot.png differ
diff --git a/docs/guides/getting_started/images/intro-token.png b/docs/guides/getting_started/images/intro-token.png
new file mode 100644
index 000000000..8617cb76f
Binary files /dev/null and b/docs/guides/getting_started/images/intro-token.png differ
diff --git a/docs/guides/getting_started/installing.md b/docs/guides/getting_started/installing.md
new file mode 100644
index 000000000..82d242647
--- /dev/null
+++ b/docs/guides/getting_started/installing.md
@@ -0,0 +1,141 @@
+---
+title: Installing Discord.Net
+---
+
+Discord.Net is distributed through the NuGet package manager, and it is
+recommended to use NuGet to get started.
+
+Optionally, you may compile from source and install yourself.
+
+# Supported Platforms
+
+Currently, Discord.Net targets [.NET Standard] 1.3, and offers support for
+.NET Standard 1.1. If your application will be targeting .NET Standard 1.1,
+please see the [additional steps](#installing-on-net-standard-11).
+
+Since Discord.Net is built on the .NET Standard, it is also recommended to
+create applications using [.NET Core], though you are not required to. When
+using .NET Framework, it is suggested to target `.NET 4.6.1` or higher.
+
+[.NET Standard]: https://docs.microsoft.com/en-us/dotnet/articles/standard/library
+[.NET Core]: https://docs.microsoft.com/en-us/dotnet/articles/core/
+
+# Installing with NuGet
+
+Release builds of Discord.Net 1.0 will be published to the
+[official NuGet feed].
+
+Development builds of Discord.Net 1.0, as well as [addons](TODO) are published
+to our development [MyGet feed].
+
+Direct feed link: `https://www.myget.org/F/discord-net/api/v3/index.json`
+
+Not sure how to add a direct feed? See how [with Visual Studio]
+or [without Visual Studio](#configuring-nuget-without-visual-studio)
+
+[official NuGet feed]: https://nuget.org
+[MyGet feed]: https://www.myget.org/feed/Packages/discord-net
+[with Visual Studio]: https://docs.microsoft.com/en-us/nuget/tools/package-manager-ui#package-sources
+
+
+## Using Visual Studio
+
+1. Create a solution for your bot
+2. In Solution Explorer, find the 'Dependencies' element under your bot's
+project
+3. Right click on 'Dependencies', and select 'Manage NuGet packages'
+
+4. In the 'browse' tab, search for 'Discord.Net'
+
+> [!TIP]
+Don't forget to change your package source if you're installing from the
+developer feed.
+Also make sure to check 'Enable Prereleases' if installing a dev build!
+
+5. Install the 'Discord.Net' package
+
+
+
+## Using JetBrains Rider
+
+1. Create a new solution for your bot
+2. Open the NuGet window (Tools > NuGet > Manage NuGet packages for Solution)
+
+3. In the 'Packages' tab, search for 'Discord.Net'
+
+
+> [!TIP]
+Make sure to check the 'Prerelease' box if installing a dev build!
+
+4. Install by adding the package to your project
+
+
+## Using Visual Studio Code
+
+1. Create a new project for your bot
+2. Add Discord.Net to your .csproj
+
+[!code-xml[Sample .csproj](samples/project.csproj)]
+
+> [!TIP]
+Don't forget to add the package source to a [NuGet.Config file](#configuring-nuget-without-visual-studio) if you're installing from the
+developer feed.
+
+# Compiling from Source
+
+In order to compile Discord.Net, you require the following:
+
+### Using Visual Studio
+
+- [Visual Studio 2017](https://www.visualstudio.com/)
+- [.NET Core SDK 1.0](https://www.microsoft.com/net/download/core#/sdk)
+
+The .NET Core and Docker (Preview) workload is required during Visual Studio
+installation.
+
+### Using Command Line
+
+- [.NET Core SDK 1.0](https://www.microsoft.com/net/download/core#/sdk)
+
+# Additional Information
+
+## Installing on .NET Standard 1.1
+
+For applications targeting a runtime corresponding with .NET Standard 1.1 or 1.2,
+the builtin WebSocket and UDP provider will not work. For applications which
+utilize a WebSocket connection to Discord (WebSocket or RPC), third-party
+provider packages will need to be installed and configured.
+
+First, install the following packages through NuGet, or compile yourself, if
+you prefer:
+
+- Discord.Net.Providers.WS4Net
+- Discord.Net.Providers.UDPClient
+
+Note that `Discord.Net.Providers.UDPClient` is _only_ required if your bot will
+be utilizing voice chat.
+
+Next, you will need to configure your [DiscordSocketClient] to use these custom
+providers over the default ones.
+
+To do this, set the `WebSocketProvider` and optionally `UdpSocketProvider`
+properties on the [DiscordSocketConfig] that you are passing into your
+client.
+
+[!code-csharp[NET Standard 1.1 Example](samples/netstd11.cs)]
+
+[DiscordSocketClient]: xref:Discord.WebSocket.DiscordSocketClient
+[DiscordSocketConfig]: xref:Discord.WebSocket.DiscordSocketConfig
+
+## Configuring NuGet without Visual Studio
+
+If you plan on deploying your bot or developing outside of Visual Studio, you
+will need to create a local NuGet configuration file for your project.
+
+To do this, create a file named `nuget.config` alongside the root of your
+application, where the project solution is located.
+
+Paste the following snippets into this configuration file, adding any additional
+feeds as necessary.
+
+[!code-xml[NuGet Configuration](samples/nuget.config)]
diff --git a/docs/guides/getting_started/intro.md b/docs/guides/getting_started/intro.md
new file mode 100644
index 000000000..837814511
--- /dev/null
+++ b/docs/guides/getting_started/intro.md
@@ -0,0 +1,227 @@
+---
+title: Getting Started
+---
+
+# Making a Ping-Pong bot
+
+One of the first steps to getting started with the Discord API is to
+write a basic ping-pong bot. We will expand on this to create more
+diverse commands later, but for now, it is a good starting point.
+
+## Creating a Discord Bot
+
+Before you can begin writing your bot, it is necessary to create a bot
+account on Discord.
+
+1. Visit the [Discord Applications Portal]
+2. Create a New Application
+3. Give the application a name (this will be the bot's initial
+username).
+4. Create the Application
+
+5. In the application review page, click **Create a Bot User**
+
+6. Confirm the popup
+7. If this bot will be public, check 'Public Bot'.
+**Do not tick any other options!**
+
+[Discord Applications Portal]: https://discordapp.com/developers/applications/me
+
+## Adding your bot to a server
+
+Bots **can not** use invite links, they must be explicitly invited
+through the OAuth2 flow.
+
+1. Open your bot's application on the [Discord Applications Portal]
+2. Retrieve the app's **Client ID**.
+
+
+
+3. Create an OAuth2 authorization URL
+`https://discordapp.com/oauth2/authorize?client_id=&scope=bot`
+4. Open the authorization URL in your browser
+5. Select a server
+
+>[!NOTE]
+Only servers where you have the `MANAGE_SERVER` permission will be
+present in this list.
+
+6. Click authorize
+
+
+
+## Connecting to Discord
+
+If you have not already created a project and installed Discord.Net,
+do that now. (see the [Installing](installing.md) section)
+
+### Async
+
+Discord.Net uses .NET's Task-based Asynchronous Pattern ([TAP])
+extensively - nearly every operation is asynchronous.
+
+It is highly recommended that these operations be awaited in a
+properly established async context whenever possible. Establishing an
+async context can be problematic, but not hard.
+
+To do so, we will be creating an async main in your console
+application, and rewriting the static main method to invoke the new
+async main.
+
+[!code-csharp[Async Context](samples/intro/async-context.cs)]
+
+As a result of this, your program will now start, and immidiately
+jump into an async context. This will allow us later on to create a
+connection to Discord, without needing to worry about setting up the
+correct async implementation.
+
+>[!TIP]
+If your application throws any exceptions within an async context,
+they will be thrown all the way back up to the first non-async method.
+Since our first non-async method is the program's Main method, this
+means that **all** unhandled exceptions will be thrown up there, which
+will crash your application. Discord.Net will prevent exceptions in
+event handlers from crashing your program, but any exceptions in your
+async main **will** cause the application to crash.
+
+### Creating a logging method
+
+Before we create and configure a Discord client, we will add a method
+to handle Discord.Net's log events.
+
+To allow agnostic support of as many log providers as possible, we
+log information through a Log event, with a proprietary LogMessage
+parameter. See the [API Documentation] for this event.
+
+If you are using your own logging framework, this is where you would
+invoke it. For the sake of simplicity, we will only be logging to
+the Console.
+
+[!code-csharp[Async Context](samples/intro/logging.cs)]
+
+### Creating a Discord Client
+
+Finally, we can create a connection to Discord. Since we are writing
+a bot, we will be using a [DiscordSocketClient], along with socket
+entities. See the [terminology](terminology.md) if you're unsure of
+the differences.
+
+To do so, create an instance of [DiscordSocketClient] in your async
+main, passing in a configuration object only if necessary. For most
+users, the default will work fine.
+
+Before connecting, we should hook the client's log event to the
+log handler that was just created. Events in Discord.Net work
+similarly to other events in C#, so hook this event the way that
+you typically would.
+
+Next, you will need to 'login to Discord' with the `LoginAsync` method.
+
+You may create a variable to hold your bot's token (this can be found
+on your bot's application page on the [Discord Applications Portal]).
+
+
+>[!IMPORTANT]
+Your bot's token can be used to gain total access to your bot, so
+**do __NOT__ share this token with anyone!** It may behoove you to
+store this token in an external file if you plan on distributing the
+source code for your bot.
+
+We may now invoke the client's `StartAsync` method, which will
+start connection/reconnection logic. It is important to note that
+**this method returns as soon as connection logic has been started!**
+
+Any methods that rely on the client's state should go in an event
+handler.
+
+>[!NOTE]
+Connection logic is incomplete as of the current build. Events will
+soon be added to indicate when the client's state is ready for use;
+(rewrite this section when possible)
+
+Finally, we will want to block the async main method from returning
+until after the application is exited. To do this, we can await an
+infinite delay, or any other blocking method, such as reading from
+the console.
+
+The following lines can now be added:
+
+[!code-csharp[Create client](samples/intro/client.cs)]
+
+At this point, feel free to start your program and see your bot come
+online in Discord.
+
+>[!TIP]
+Encountering a `PlatformNotSupportedException` when starting your bot?
+This means that you are targeting a platform where .NET's default
+WebSocket client is not supported. Refer to the [installing guide]
+for how to fix this.
+
+[TAP]: https://docs.microsoft.com/en-us/dotnet/articles/csharp/async
+[API Documentation]: xref:Discord.Rest.BaseDiscordClient#Discord_Rest_BaseDiscordClient_Log
+[DiscordSocketClient]: xref:Discord.WebSocket.DiscordSocketClient
+[installing guide]: installing.md#installing-on-net-standard-11
+
+### Handling a 'ping'
+
+Now that we have learned how to open a connection to Discord, we can
+begin handling messages that users are sending.
+
+To start out, our bot will listen for any message where the content
+is equal to `!ping`, and respond back with `Pong!`.
+
+Since we want to listen for new messages, the event to hook in to
+is [MessageReceived].
+
+In your program, add a method that matches the signature of the
+MessageReceived event - it must be a method (`Func`) that returns the
+type `Task`, and takes a single parameter, a [SocketMessage]. Also,
+since we will be sending data to Discord in this method, we will flag
+it as `async`.
+
+In this method, we will add an `if` block, to determine if the message
+content fits the rules of our scenario - recall that it must be equal
+to `!ping`.
+
+Inside the branch of this condition, we will want to send a message
+back to the channel from which the message came - `Pong!`. To find the
+channel, look for the `Channel` property on the message parameter.
+
+Next, we will want to send a message to this channel. Since the
+channel object is of type [SocketMessageChannel], we can invoke the
+`SendMessageAsync` instance method. For the message content, send back
+a string containing 'Pong!'.
+
+You should have now added the following lines:
+
+[!code-csharp[Message](samples/intro/message.cs)]
+
+Now, your first bot is complete. You may continue to add on to this
+if you desire, but for any bot that will be carrying out multiple
+commands, it is strongly encouraged to use the command framework, as
+shown below.
+
+For your reference, you may view the [completed program].
+
+[MessageReceived]: xref:Discord.WebSocket.DiscordSocketClient#Discord_WebSocket_DiscordSocketClient_MessageReceived
+[SocketMessage]: xref:Discord.WebSocket.SocketMessage
+[SocketMessageChannel]: xref:Discord.WebSocket.ISocketMessageChannel
+[completed program]: samples/intro/complete.cs
+
+# Building a bot with commands
+
+This section will show you how to write a program that is ready for
+[commands](commands/commands.md). Note that this will not be explaining _how_
+to write commands or services, it will only be covering the general
+structure.
+
+For reference, view an [annotated example] of this structure.
+
+[annotated example]: samples/intro/structure.cs
+
+It is important to know that the recommended design pattern of bots
+should be to separate the program (initialization and command handler),
+the modules (handle commands), and the services (persistent storage,
+pure functions, data manipulation).
+
+**todo:** diagram of bot structure
diff --git a/docs/guides/getting_started/samples/intro/async-context.cs b/docs/guides/getting_started/samples/intro/async-context.cs
new file mode 100644
index 000000000..c01ddec55
--- /dev/null
+++ b/docs/guides/getting_started/samples/intro/async-context.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Threading.Tasks;
+
+namespace MyBot
+{
+ public class Program
+ {
+ public static void Main(string[] args)
+ => new Program().MainAsync().GetAwaiter().GetResult();
+
+ public async Task MainAsync()
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/docs/guides/getting_started/samples/intro/client.cs b/docs/guides/getting_started/samples/intro/client.cs
new file mode 100644
index 000000000..ea7c91932
--- /dev/null
+++ b/docs/guides/getting_started/samples/intro/client.cs
@@ -0,0 +1,16 @@
+// Program.cs
+using Discord.WebSocket;
+// ...
+public async Task MainAsync()
+{
+ var client = new DiscordSocketClient();
+
+ client.Log += Log;
+
+ string token = "abcdefg..."; // Remember to keep this private!
+ await client.LoginAsync(TokenType.Bot, token);
+ await client.StartAsync();
+
+ // Block this task until the program is closed.
+ await Task.Delay(-1);
+}
\ No newline at end of file
diff --git a/docs/guides/getting_started/samples/intro/complete.cs b/docs/guides/getting_started/samples/intro/complete.cs
new file mode 100644
index 000000000..b59b6b4d9
--- /dev/null
+++ b/docs/guides/getting_started/samples/intro/complete.cs
@@ -0,0 +1,42 @@
+using Discord;
+using Discord.WebSocket;
+using System;
+using System.Threading.Tasks;
+
+namespace MyBot
+{
+ public class Program
+ {
+ public static void Main(string[] args)
+ => new Program().MainAsync().GetAwaiter().GetResult();
+
+ public async Task MainAsync()
+ {
+ var client = new DiscordSocketClient();
+
+ client.Log += Log;
+ client.MessageReceived += MessageReceived;
+
+ string token = "abcdefg..."; // Remember to keep this private!
+ await client.LoginAsync(TokenType.Bot, token);
+ await client.StartAsync();
+
+ // Block this task until the program is closed.
+ await Task.Delay(-1);
+ }
+
+ private async Task MessageReceived(SocketMessage message)
+ {
+ if (message.Content == "!ping")
+ {
+ await message.Channel.SendMessageAsync("Pong!");
+ }
+ }
+
+ private Task Log(LogMessage msg)
+ {
+ Console.WriteLine(msg.ToString());
+ return Task.CompletedTask;
+ }
+ }
+}
\ No newline at end of file
diff --git a/docs/guides/getting_started/samples/intro/logging.cs b/docs/guides/getting_started/samples/intro/logging.cs
new file mode 100644
index 000000000..4fb85a063
--- /dev/null
+++ b/docs/guides/getting_started/samples/intro/logging.cs
@@ -0,0 +1,22 @@
+using Discord;
+using System;
+using System.Threading.Tasks;
+
+namespace MyBot
+{
+ public class Program
+ {
+ public static void Main(string[] args)
+ => new Program().MainAsync().GetAwaiter().GetResult();
+
+ public async Task MainAsync()
+ {
+ }
+
+ private Task Log(LogMessage msg)
+ {
+ Console.WriteLine(msg.ToString());
+ return Task.CompletedTask;
+ }
+ }
+}
\ No newline at end of file
diff --git a/docs/guides/getting_started/samples/intro/message.cs b/docs/guides/getting_started/samples/intro/message.cs
new file mode 100644
index 000000000..d3cda46e5
--- /dev/null
+++ b/docs/guides/getting_started/samples/intro/message.cs
@@ -0,0 +1,14 @@
+public async Task MainAsync()
+{
+ // client.Log ...
+ client.MessageReceived += MessageReceived;
+ // ...
+}
+
+private async Task MessageReceived(SocketMessage message)
+{
+ if (message.Content == "!ping")
+ {
+ await message.Channel.SendMessageAsync("Pong!");
+ }
+}
\ No newline at end of file
diff --git a/docs/guides/samples/first-steps.cs b/docs/guides/getting_started/samples/intro/structure.cs
similarity index 71%
rename from docs/guides/samples/first-steps.cs
rename to docs/guides/getting_started/samples/intro/structure.cs
index 3f1377ed7..706d0a38d 100644
--- a/docs/guides/samples/first-steps.cs
+++ b/docs/guides/getting_started/samples/intro/structure.cs
@@ -1,6 +1,7 @@
using System;
using System.Reflection;
using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
using Discord;
using Discord.Commands;
using Discord.WebSocket;
@@ -9,8 +10,8 @@ class Program
{
private readonly DiscordSocketClient _client;
- // Keep the CommandService and IDependencyMap around for use with commands.
- private readonly IDependencyMap _map = new DependencyMap();
+ // Keep the CommandService and IServiceCollection around for use with commands.
+ private readonly IServiceCollection _map = new ServiceCollection();
private readonly CommandService _commands = new CommandService();
// Program entry point
@@ -29,8 +30,8 @@ class Program
LogLevel = LogSeverity.Info,
// If you or another service needs to do anything with messages
- // (eg. checking Reactions), you should probably
- // set the MessageCacheSize here.
+ // (eg. checking Reactions, checking the content of edited/deleted messages),
+ // you must set the MessageCacheSize. You may adjust the number as needed.
//MessageCacheSize = 50,
// If your platform doesn't have native websockets,
@@ -40,7 +41,7 @@ class Program
});
}
- // Create a named logging handler, so it can be re-used by addons
+ // Example of a logging handler. This can be re-used by addons
// that ask for a Func.
private static Task Logger(LogMessage message)
{
@@ -64,6 +65,13 @@ class Program
}
Console.WriteLine($"{DateTime.Now,-19} [{message.Severity,8}] {message.Source}: {message.Message}");
Console.ForegroundColor = cc;
+
+ // If you get an error saying 'CompletedTask' doesn't exist,
+ // your project is targeting .NET 4.5.2 or lower. You'll need
+ // to adjust your project's target framework to 4.6 or higher
+ // (instructions for this are easily Googled).
+ // If you *need* to run on .NET 4.5 for compat/other reasons,
+ // the alternative is to 'return Task.Delay(0);' instead.
return Task.CompletedTask;
}
@@ -77,28 +85,36 @@ class Program
// Login and connect.
await _client.LoginAsync(TokenType.Bot, /* */);
- await _client.ConnectAsync();
-
+ await _client.StartAsync();
+
// Wait infinitely so your bot actually stays connected.
await Task.Delay(-1);
}
+ private IServiceProvider _services;
+
private async Task InitCommands()
{
// Repeat this for all the service classes
// and other dependencies that your commands might need.
- _map.Add(new SomeServiceClass());
+ _map.AddSingleton(new SomeServiceClass());
+
+ // When all your required services are in the collection, build the container.
+ // Tip: There's an overload taking in a 'validateScopes' bool to make sure
+ // you haven't made any mistakes in your dependency graph.
+ _services = _map.BuildServiceProvider();
- // Either search the program and add all Module classes that can be found:
+ // Either search the program and add all Module classes that can be found.
+ // Module classes *must* be marked 'public' or they will be ignored.
await _commands.AddModulesAsync(Assembly.GetEntryAssembly());
// Or add Modules manually if you prefer to be a little more explicit:
await _commands.AddModuleAsync();
// Subscribe a handler to see if a message invokes a command.
- _client.MessageReceived += CmdHandler;
+ _client.MessageReceived += HandleCommandAsync;
}
- private async Task CmdHandler(SocketMessage arg)
+ private async Task HandleCommandAsync(SocketMessage arg)
{
// Bail out if it's a System Message.
var msg = arg as SocketUserMessage;
@@ -110,14 +126,14 @@ class Program
// you want to prefix your commands with.
// Uncomment the second half if you also want
// commands to be invoked by mentioning the bot instead.
- if (msg.HasCharPrefix('!', ref pos) /* || msg.HasMentionPrefix(msg.Discord.CurrentUser, ref pos) */)
+ if (msg.HasCharPrefix('!', ref pos) /* || msg.HasMentionPrefix(_client.CurrentUser, ref pos) */)
{
- // Create a Command Context
- var context = new SocketCommandContext(msg.Discord, msg);
+ // Create a Command Context.
+ var context = new SocketCommandContext(_client, msg);
// Execute the command. (result does not indicate a return value,
// rather an object stating if the command executed succesfully).
- var result = await _commands.ExecuteAsync(context, pos, _map);
+ var result = await _commands.ExecuteAsync(context, pos, _services);
// Uncomment the following lines if you want the bot
// to send a message if it failed (not advised for most situations).
@@ -125,4 +141,4 @@ class Program
// await msg.Channel.SendMessageAsync(result.ErrorReason);
}
}
-}
\ No newline at end of file
+}
diff --git a/docs/guides/getting_started/samples/netstd11.cs b/docs/guides/getting_started/samples/netstd11.cs
new file mode 100644
index 000000000..a8573696a
--- /dev/null
+++ b/docs/guides/getting_started/samples/netstd11.cs
@@ -0,0 +1,9 @@
+using Discord.Providers.WS4Net;
+using Discord.Providers.UDPClient;
+using Discord.WebSocket;
+// ...
+var client = new DiscordSocketClient(new DiscordSocketConfig
+{
+ WebSocketProvider = WS4NetProvider.Instance,
+ UdpSocketProvider = UDPClientProvider.Instance,
+});
\ No newline at end of file
diff --git a/docs/guides/getting_started/samples/nuget.config b/docs/guides/getting_started/samples/nuget.config
new file mode 100644
index 000000000..bf706a08b
--- /dev/null
+++ b/docs/guides/getting_started/samples/nuget.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/guides/getting_started/samples/project.csproj b/docs/guides/getting_started/samples/project.csproj
new file mode 100644
index 000000000..8daf71877
--- /dev/null
+++ b/docs/guides/getting_started/samples/project.csproj
@@ -0,0 +1,13 @@
+
+
+
+ Exe
+ netcoreapp1.1
+ true
+
+
+
+
+
+
+
diff --git a/docs/guides/terminology.md b/docs/guides/getting_started/terminology.md
similarity index 100%
rename from docs/guides/terminology.md
rename to docs/guides/getting_started/terminology.md
diff --git a/docs/guides/intro.md b/docs/guides/intro.md
deleted file mode 100644
index f16bc9883..000000000
--- a/docs/guides/intro.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: Getting Started
----
-
-# Getting Started
-
-## Requirements
-
-Discord.Net supports logging in with all variations of Discord Accounts, however the Discord API reccomends using a `Bot Account`.
-
-You may [register a bot account here](https://discordapp.com/developers/applications/me).
-
-Bot accounts must be added to a server, you must use the [OAuth 2 Flow](https://discordapp.com/developers/docs/topics/oauth2#adding-bots-to-guilds) to add them to servers.
-
-## Installation
-
-You can install Discord.Net 1.0 from our [MyGet Feed](https://www.myget.org/feed/Packages/discord-net).
-
-**For most users writing bots, install only `Discord.Net.WebSocket`.**
-
-You may add the MyGet feed to Visual Studio directly from `https://www.myget.org/F/discord-net/api/v3/index.json`.
-
-You can also pull the latest source from [GitHub](https://github.com/RogueException/Discord.Net).
-
->[!WARNING]
->The versions of Discord.Net on NuGet are behind the versions this
->documentation is written for.
->You MUST install from MyGet or Source!
-
-## Async
-
-Discord.Net uses C# tasks extensiely - nearly all operations return
-one.
-
-It is highly reccomended these tasks be awaited whenever possible.
-To do so requires the calling method to be marked as async, which
-can be problematic in a console application. An example of how to
-get around this is provided below.
-
-For more information, go to [MSDN's Async-Await section.](https://msdn.microsoft.com/en-us/library/hh191443.aspx)
-
-## First Steps
-
-[!code-csharp[Main](samples/first-steps.cs)]
-
->[!NOTE]
->In previous versions of Discord.Net, you had to hook into the `Ready` and `GuildAvailable` events to determine when your client was ready for use.
->In 1.0, the [ConnectAsync] method will automatically wait for the Ready event, and for all guilds to stream. To avoid this, pass `false` into `ConnectAsync`.
-
-[ConnectAsync]: xref:Discord.WebSocket.DiscordSocketClient#Discord_WebSocket_DiscordSocketClient_ConnectAsync_System_Boolean_
\ No newline at end of file
diff --git a/docs/guides/logging.md b/docs/guides/logging.md
deleted file mode 100644
index 97fed3a52..000000000
--- a/docs/guides/logging.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Using the Logger
-
-Discord.Net will automatically output log messages through the [Log](xref:Discord.DiscordClient#Discord_DiscordClient_Log) event.
-
-## Usage
-
-To handle Log Messages through Discord.Net's Logger, hook into the [Log](xref:Discord.DiscordClient#Discord_DiscordClient_Log) event.
-
-The @Discord.LogMessage object has a custom `ToString` method attached to it, when outputting log messages, it is reccomended you use this, instead of building your own output message.
-
-[!code-csharp[](samples/logging.cs)]
\ No newline at end of file
diff --git a/docs/migrating.md b/docs/guides/migrating/migrating.md
similarity index 94%
rename from docs/migrating.md
rename to docs/guides/migrating/migrating.md
index 8f96dff98..bc628a5f8 100644
--- a/docs/migrating.md
+++ b/docs/guides/migrating/migrating.md
@@ -42,7 +42,7 @@ events are delegates, but are still registered the same.
For example, let's look at [DiscordSocketClient.MessageReceived](xref:Discord.WebSocket.DiscordSocketClient#Discord_WebSocket_DiscordSocketClient_MessageReceived)
To hook an event into MessageReceived, we now use the following code:
-[!code-csharp[Event Registration](guides/samples/migrating/event.cs)]
+[!code-csharp[Event Registration](samples/event.cs)]
> **All Event Handlers in 1.0 MUST return Task!**
@@ -50,7 +50,7 @@ If your event handler is marked as `async`, it will automatically return `Task`.
if you do not need to execute asynchronus code, do _not_ mark your handler as `async`, and instead,
stick a `return Task.CompletedTask` at the bottom.
-[!code-csharp[Sync Event Registration](guides/samples/migrating/sync_event.cs)]
+[!code-csharp[Sync Event Registration](samples/sync_event.cs)]
**Event handlers no longer require a sender.** The only arguments your event handler needs to accept
are the parameters used by the event. It is recommended to look at the event in IntelliSense or on the
diff --git a/docs/guides/samples/migrating/event.cs b/docs/guides/migrating/samples/event.cs
similarity index 100%
rename from docs/guides/samples/migrating/event.cs
rename to docs/guides/migrating/samples/event.cs
diff --git a/docs/guides/samples/migrating/sync_event.cs b/docs/guides/migrating/samples/sync_event.cs
similarity index 100%
rename from docs/guides/samples/migrating/sync_event.cs
rename to docs/guides/migrating/samples/sync_event.cs
diff --git a/docs/guides/samples.md b/docs/guides/samples.md
deleted file mode 100644
index 4406f2f1e..000000000
--- a/docs/guides/samples.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: Samples
----
-
-# Samples
-
->[!NOTE]
->All of these samples assume you have `_client` defined as a `DiscordSocketClient`.
-
-#### Changing the bot's avatar
-
-[!code-csharp[Bot Avatar](samples/faq/avatar.cs)]
-
-#### Changing the bot's status
-
-[!code-csharp[Bot Status](samples/faq/status.cs)]
-
-#### Sending a message to a channel
-
-[!code-csharp[Message to Channel](samples/faq/send_message.cs)]
diff --git a/docs/guides/samples/faq/avatar.cs b/docs/guides/samples/faq/avatar.cs
deleted file mode 100644
index d3995cf0c..000000000
--- a/docs/guides/samples/faq/avatar.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-public async Task ChangeAvatar()
-{
- var fileStream = new FileStream("./newAvatar.png", FileMode.Open);
- await _client.CurrentUser.ModifyAsync(x => x.Avatar = fileStream);
-}
\ No newline at end of file
diff --git a/docs/guides/samples/faq/send_message.cs b/docs/guides/samples/faq/send_message.cs
deleted file mode 100644
index d7ecf5131..000000000
--- a/docs/guides/samples/faq/send_message.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-public async Task SendMessageToChannel(ulong ChannelId)
-{
- var channel = _client.GetChannel(ChannelId) as SocketMessageChannel;
- await channel?.SendMessageAsync("aaaaaaaaahhh!!!")
- /* ^ This question mark is used to indicate that 'channel' may sometimes be null, and in cases that it is null, we will do nothing here. */
-}
\ No newline at end of file
diff --git a/docs/guides/samples/faq/status.cs b/docs/guides/samples/faq/status.cs
deleted file mode 100644
index 18906c53b..000000000
--- a/docs/guides/samples/faq/status.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-public async Task ModifyStatus()
-{
- await _client.SetStatusAsync(UserStatus.Idle);
- await _client.SetGameAsync("Type !help for help");
-}
diff --git a/docs/guides/samples/logging.cs b/docs/guides/samples/logging.cs
deleted file mode 100644
index fd72daf2b..000000000
--- a/docs/guides/samples/logging.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using Discord;
-using Discord.Rest;
-
-public class Program
-{
- private DiscordSocketClient _client;
- static void Main(string[] args) => new Program().Start().GetAwaiter().GetResult();
-
- public async Task Start()
- {
- _client = new DiscordSocketClient(new DiscordSocketConfig() {
- LogLevel = LogSeverity.Info
- });
-
- _client.Log += Log;
-
- await _client.LoginAsync(TokenType.Bot, "bot token");
- await _client.ConnectAsync();
-
- await Task.Delay(-1);
- }
-
- private Task Log(LogMessage message)
- {
- Console.WriteLine(message.ToString());
- return Task.CompletedTask;
- }
-}
diff --git a/docs/guides/toc.yml b/docs/guides/toc.yml
index a420e4a1c..2e3a61e19 100644
--- a/docs/guides/toc.yml
+++ b/docs/guides/toc.yml
@@ -1,15 +1,27 @@
-
- name: Getting Started
- href: intro.md
-- name: Terminology
- href: terminology.md
-- name: Logging
- href: logging.md
-- name: Commands
- href: commands.md
+ items:
+ - name: Installation
+ href: getting_started/installing.md
+ - name: Your First Bot
+ href: getting_started/intro.md
+ - name: Terminology
+ href: getting_started/terminology.md
+- name: Basic Concepts
+ items:
+ - name: Logging Data
+ href: concepts/logging.md
+ - name: Working with Events
+ href: concepts/events.md
+ - name: Managing Connections
+ href: concepts/connections.md
+ - name: Entities
+ href: concepts/entities.md
+- name: The Command Service
+ items:
+ - name: Command Guide
+ href: commands/commands.md
- name: Voice
- href: voice.md
-- name: Events
- href: events.md
-- name: Code Samples
- href: samples.md
\ No newline at end of file
+ items:
+ - name: Voice Guide
+ href: voice/sending-voice.md
+- name: Migrating from 0.9
\ No newline at end of file
diff --git a/docs/guides/samples/audio_create_ffmpeg.cs b/docs/guides/voice/samples/audio_create_ffmpeg.cs
similarity index 100%
rename from docs/guides/samples/audio_create_ffmpeg.cs
rename to docs/guides/voice/samples/audio_create_ffmpeg.cs
diff --git a/docs/guides/samples/audio_ffmpeg.cs b/docs/guides/voice/samples/audio_ffmpeg.cs
similarity index 80%
rename from docs/guides/samples/audio_ffmpeg.cs
rename to docs/guides/voice/samples/audio_ffmpeg.cs
index 877050caf..b9430ac11 100644
--- a/docs/guides/samples/audio_ffmpeg.cs
+++ b/docs/guides/voice/samples/audio_ffmpeg.cs
@@ -3,7 +3,7 @@ private async Task SendAsync(IAudioClient client, string path)
// Create FFmpeg using the previous example
var ffmpeg = CreateStream(path);
var output = ffmpeg.StandardOutput.BaseStream;
- var discord = client.CreatePCMStream(1920);
+ var discord = client.CreatePCMStream(AudioApplication.Mixed);
await output.CopyToAsync(discord);
await discord.FlushAsync();
-}
\ No newline at end of file
+}
diff --git a/docs/guides/samples/joining_audio.cs b/docs/guides/voice/samples/joining_audio.cs
similarity index 100%
rename from docs/guides/samples/joining_audio.cs
rename to docs/guides/voice/samples/joining_audio.cs
diff --git a/docs/guides/voice.md b/docs/guides/voice/sending-voice.md
similarity index 86%
rename from docs/guides/voice.md
rename to docs/guides/voice/sending-voice.md
index 1f09069f5..c3ec8d9d7 100644
--- a/docs/guides/voice.md
+++ b/docs/guides/voice/sending-voice.md
@@ -1,24 +1,14 @@
-# Voice
+---
+title: Sending Voice
+---
**Information on this page is subject to change!**
>[!WARNING]
->Audio in 1.0 is incomplete. Most of the below documentation is untested.
+>This article is out of date, and has not been rewritten yet.
+Information is not guaranteed to be accurate.
-## Installation
-
-To use Audio, you must first configure your [DiscordSocketClient]
-with Audio support.
-
-In your [DiscordSocketConfig], set `AudioMode` to the appropriate
-[AudioMode] for your bot. For most bots, you will only need to use
-`AudioMode.Outgoing`.
-
-[DiscordSocketClient]: xref:Discord.WebSocket.DiscordSocketClient
-[DiscordSocketConfig]: xref:Discord.WebSocket.DiscordSocketConfig
-[AudioMode]: xref:Discord.Audio.AudioMode
-
-### Dependencies
+## Installing
Audio requires two native libraries, `libsodium` and `opus`.
Both of these libraries must be placed in the runtime directory of your
diff --git a/docs/index.md b/docs/index.md
index 3f0393d4f..ef9ecdfdd 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -3,7 +3,7 @@
Discord.Net is an asynchronous, multiplatform .NET Library used to interface with the [Discord API](https://discordapp.com/).
-If this is your first time using Discord.Net, you should refer to the [Intro](guides/intro.md) for tutorials.
+If this is your first time using Discord.Net, you should refer to the [Intro](guides/getting_started/intro.md) for tutorials.
More experienced users might refer to the [API Documentation](api/index.md) for a breakdown of the individuals objects in the library.
For additional resources:
diff --git a/docs/toc.yml b/docs/toc.yml
index 47a8a22c1..c08e708bf 100644
--- a/docs/toc.yml
+++ b/docs/toc.yml
@@ -1,8 +1,6 @@
- name: Guides
href: guides/
-- name: Migrating
- href: migrating.md
- name: API Documentation
href: api/
homepage: api/index.md
diff --git a/src/Discord.Net.Analyzers/AssemblyInfo.cs b/experiment/Discord.Net.Analyzers/AssemblyInfo.cs
similarity index 100%
rename from src/Discord.Net.Analyzers/AssemblyInfo.cs
rename to experiment/Discord.Net.Analyzers/AssemblyInfo.cs
diff --git a/src/Discord.Net.Analyzers/ConfigureAwaitAnalyzer.cs b/experiment/Discord.Net.Analyzers/ConfigureAwaitAnalyzer.cs
similarity index 100%
rename from src/Discord.Net.Analyzers/ConfigureAwaitAnalyzer.cs
rename to experiment/Discord.Net.Analyzers/ConfigureAwaitAnalyzer.cs
diff --git a/experiment/Discord.Net.Analyzers/Discord.Net.Analyzers.csproj b/experiment/Discord.Net.Analyzers/Discord.Net.Analyzers.csproj
new file mode 100644
index 000000000..86541691d
--- /dev/null
+++ b/experiment/Discord.Net.Analyzers/Discord.Net.Analyzers.csproj
@@ -0,0 +1,18 @@
+
+
+
+ Discord.Net.Analyzers
+ Discord.Analyzers
+ A Discord.Net extension adding compile-time analysis.
+ netstandard1.3
+ $(PackageTargetFallback);portable-net45+win81
+
+
+
+
+
+
+ all
+
+
+
\ No newline at end of file
diff --git a/src/Discord.Net.Relay/ApplicationBuilderExtensions.cs b/experiment/Discord.Net.Relay/ApplicationBuilderExtensions.cs
similarity index 100%
rename from src/Discord.Net.Relay/ApplicationBuilderExtensions.cs
rename to experiment/Discord.Net.Relay/ApplicationBuilderExtensions.cs
diff --git a/src/Discord.Net.Relay/AssemblyInfo.cs b/experiment/Discord.Net.Relay/AssemblyInfo.cs
similarity index 100%
rename from src/Discord.Net.Relay/AssemblyInfo.cs
rename to experiment/Discord.Net.Relay/AssemblyInfo.cs
diff --git a/experiment/Discord.Net.Relay/Discord.Net.Relay.csproj b/experiment/Discord.Net.Relay/Discord.Net.Relay.csproj
new file mode 100644
index 000000000..2e9101600
--- /dev/null
+++ b/experiment/Discord.Net.Relay/Discord.Net.Relay.csproj
@@ -0,0 +1,18 @@
+
+
+
+ Discord.Net.Relay
+ Discord.Relay
+ A core Discord.Net library containing the Relay server.
+ netstandard1.3
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Discord.Net.Relay/RelayConnection.cs b/experiment/Discord.Net.Relay/RelayConnection.cs
similarity index 100%
rename from src/Discord.Net.Relay/RelayConnection.cs
rename to experiment/Discord.Net.Relay/RelayConnection.cs
diff --git a/src/Discord.Net.Relay/RelayServer.cs b/experiment/Discord.Net.Relay/RelayServer.cs
similarity index 100%
rename from src/Discord.Net.Relay/RelayServer.cs
rename to experiment/Discord.Net.Relay/RelayServer.cs
diff --git a/pack.ps1 b/pack.ps1
deleted file mode 100644
index 0f84ea309..000000000
--- a/pack.ps1
+++ /dev/null
@@ -1,17 +0,0 @@
-dotnet pack "src\Discord.Net.Core\Discord.Net.Core.csproj" -c "Release" -o "../../artifacts" --no-build /p:BuildNumber="$Env:BUILD"
-if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
-dotnet pack "src\Discord.Net.Rest\Discord.Net.Rest.csproj" -c "Release" -o "../../artifacts" --no-build /p:BuildNumber="$Env:BUILD"
-if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
-dotnet pack "src\Discord.Net.WebSocket\Discord.Net.WebSocket.csproj" -c "Release" -o "../../artifacts" --no-build /p:BuildNumber="$Env:BUILD"
-if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
-dotnet pack "src\Discord.Net.Rpc\Discord.Net.Rpc.csproj" -c "Release" -o "../../artifacts" --no-build /p:BuildNumber="$Env:BUILD"
-if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
-dotnet pack "src\Discord.Net.Commands\Discord.Net.Commands.csproj" -c "Release" -o "../../artifacts" --no-build /p:BuildNumber="$Env:BUILD"
-if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
-dotnet pack "src\Discord.Net.Providers.WS4Net\Discord.Net.Providers.WS4Net.csproj" -c "Release" -o "../../artifacts" --no-build /p:BuildNumber="$Env:BUILD"
-if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
-dotnet pack "src\Discord.Net.Providers.UdpClient\Discord.Net.Providers.UdpClient.csproj" -c "Release" -o "../../artifacts" --no-build /p:BuildNumber="$Env:BUILD"
-if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
-
-nuget pack src\Discord.Net\Discord.Net.nuspec -OutputDirectory "artifacts" -properties build="$Env:BUILD"
-if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
\ No newline at end of file
diff --git a/src/Discord.Net.Analyzers/Discord.Net.Analyzers.csproj b/src/Discord.Net.Analyzers/Discord.Net.Analyzers.csproj
deleted file mode 100644
index 0612e423f..000000000
--- a/src/Discord.Net.Analyzers/Discord.Net.Analyzers.csproj
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
- 1.0.0
- rc-dev
- rc-$(BuildNumber)
- netstandard1.3
- Discord.Net.Analyzers
- RogueException
- A Discord.Net extension adding compile-time analysis.
- discord;discordapp
- https://github.com/RogueException/Discord.Net
- http://opensource.org/licenses/MIT
- git
- git://github.com/RogueException/Discord.Net
- Discord.Analyzers
- portable-net45+win81
- true
-
-
-
-
-
-
- all
-
-
-
- $(NoWarn);CS1573;CS1591
- true
- true
-
-
\ No newline at end of file
diff --git a/src/Discord.Net.Commands/Attributes/ParameterPreconditionAttribute.cs b/src/Discord.Net.Commands/Attributes/ParameterPreconditionAttribute.cs
index 168d15e5f..49dae6080 100644
--- a/src/Discord.Net.Commands/Attributes/ParameterPreconditionAttribute.cs
+++ b/src/Discord.Net.Commands/Attributes/ParameterPreconditionAttribute.cs
@@ -1,11 +1,12 @@
using System;
using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
namespace Discord.Commands
{
[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = true, Inherited = true)]
public abstract class ParameterPreconditionAttribute : Attribute
{
- public abstract Task CheckPermissions(ICommandContext context, ParameterInfo parameter, object value, IDependencyMap map);
+ public abstract Task CheckPermissions(ICommandContext context, ParameterInfo parameter, object value, IServiceProvider services);
}
}
\ No newline at end of file
diff --git a/src/Discord.Net.Commands/Attributes/PreconditionAttribute.cs b/src/Discord.Net.Commands/Attributes/PreconditionAttribute.cs
index 7755d459b..3727510d9 100644
--- a/src/Discord.Net.Commands/Attributes/PreconditionAttribute.cs
+++ b/src/Discord.Net.Commands/Attributes/PreconditionAttribute.cs
@@ -6,6 +6,13 @@ namespace Discord.Commands
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
public abstract class PreconditionAttribute : Attribute
{
- public abstract Task CheckPermissions(ICommandContext context, CommandInfo command, IDependencyMap map);
+ ///
+ /// Specify a group that this precondition belongs to. Preconditions of the same group require only one
+ /// of the preconditions to pass in order to be successful (A || B). Specifying =
+ /// or not at all will require *all* preconditions to pass, just like normal (A && B).
+ ///
+ public string Group { get; set; } = null;
+
+ public abstract Task CheckPermissions(ICommandContext context, CommandInfo command, IServiceProvider services);
}
}
diff --git a/src/Discord.Net.Commands/Attributes/Preconditions/RequireBotPermissionAttribute.cs b/src/Discord.Net.Commands/Attributes/Preconditions/RequireBotPermissionAttribute.cs
index 520cfa6fd..0f865e864 100644
--- a/src/Discord.Net.Commands/Attributes/Preconditions/RequireBotPermissionAttribute.cs
+++ b/src/Discord.Net.Commands/Attributes/Preconditions/RequireBotPermissionAttribute.cs
@@ -1,5 +1,6 @@
using System;
using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
namespace Discord.Commands
{
@@ -41,16 +42,18 @@ namespace Discord.Commands
GuildPermission = null;
}
- public override async Task CheckPermissions(ICommandContext context, CommandInfo command, IDependencyMap map)
+ public override async Task CheckPermissions(ICommandContext context, CommandInfo command, IServiceProvider services)
{
- var guildUser = await context.Guild.GetCurrentUserAsync();
+ IGuildUser guildUser = null;
+ if (context.Guild != null)
+ guildUser = await context.Guild.GetCurrentUserAsync().ConfigureAwait(false);
if (GuildPermission.HasValue)
{
if (guildUser == null)
return PreconditionResult.FromError("Command must be used in a guild channel");
if (!guildUser.GuildPermissions.Has(GuildPermission.Value))
- return PreconditionResult.FromError($"Command requires guild permission {GuildPermission.Value}");
+ return PreconditionResult.FromError($"Bot requires guild permission {GuildPermission.Value}");
}
if (ChannelPermission.HasValue)
@@ -64,7 +67,7 @@ namespace Discord.Commands
perms = ChannelPermissions.All(guildChannel);
if (!perms.Has(ChannelPermission.Value))
- return PreconditionResult.FromError($"Command requires channel permission {ChannelPermission.Value}");
+ return PreconditionResult.FromError($"Bot requires channel permission {ChannelPermission.Value}");
}
return PreconditionResult.FromSuccess();
diff --git a/src/Discord.Net.Commands/Attributes/Preconditions/RequireContextAttribute.cs b/src/Discord.Net.Commands/Attributes/Preconditions/RequireContextAttribute.cs
index 42d835c30..a221eb4a9 100644
--- a/src/Discord.Net.Commands/Attributes/Preconditions/RequireContextAttribute.cs
+++ b/src/Discord.Net.Commands/Attributes/Preconditions/RequireContextAttribute.cs
@@ -1,5 +1,6 @@
using System;
using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
namespace Discord.Commands
{
@@ -37,7 +38,7 @@ namespace Discord.Commands
Contexts = contexts;
}
- public override Task CheckPermissions(ICommandContext context, CommandInfo command, IDependencyMap map)
+ public override Task CheckPermissions(ICommandContext context, CommandInfo command, IServiceProvider services)
{
bool isValid = false;
diff --git a/src/Discord.Net.Commands/Attributes/Preconditions/RequireNsfwAttribute.cs b/src/Discord.Net.Commands/Attributes/Preconditions/RequireNsfwAttribute.cs
new file mode 100644
index 000000000..94235b1ae
--- /dev/null
+++ b/src/Discord.Net.Commands/Attributes/Preconditions/RequireNsfwAttribute.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Threading.Tasks;
+
+namespace Discord.Commands
+{
+ ///
+ /// Require that the command is invoked in a channel marked NSFW
+ ///
+ [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
+ public class RequireNsfwAttribute : PreconditionAttribute
+ {
+ public override Task CheckPermissions(ICommandContext context, CommandInfo command, IServiceProvider services)
+ {
+ if (context.Channel.IsNsfw)
+ return Task.FromResult(PreconditionResult.FromSuccess());
+ else
+ return Task.FromResult(PreconditionResult.FromError("This command may only be invoked in an NSFW channel."));
+ }
+ }
+}
diff --git a/src/Discord.Net.Commands/Attributes/Preconditions/RequireOwnerAttribute.cs b/src/Discord.Net.Commands/Attributes/Preconditions/RequireOwnerAttribute.cs
index cfedcad23..0852ce39c 100644
--- a/src/Discord.Net.Commands/Attributes/Preconditions/RequireOwnerAttribute.cs
+++ b/src/Discord.Net.Commands/Attributes/Preconditions/RequireOwnerAttribute.cs
@@ -1,5 +1,6 @@
using System;
using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
namespace Discord.Commands
{
@@ -10,11 +11,22 @@ namespace Discord.Commands
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class RequireOwnerAttribute : PreconditionAttribute
{
- public override async Task CheckPermissions(ICommandContext context, CommandInfo command, IDependencyMap map)
+ public override async Task CheckPermissions(ICommandContext context, CommandInfo command, IServiceProvider services)
{
- var application = await context.Client.GetApplicationInfoAsync();
- if (context.User.Id == application.Owner.Id) return PreconditionResult.FromSuccess();
- return PreconditionResult.FromError("Command can only be run by the owner of the bot");
+ switch (context.Client.TokenType)
+ {
+ case TokenType.Bot:
+ var application = await context.Client.GetApplicationInfoAsync();
+ if (context.User.Id != application.Owner.Id)
+ return PreconditionResult.FromError("Command can only be run by the owner of the bot");
+ return PreconditionResult.FromSuccess();
+ case TokenType.User:
+ if (context.User.Id != context.Client.CurrentUser.Id)
+ return PreconditionResult.FromError("Command can only be run by the owner of the bot");
+ return PreconditionResult.FromSuccess();
+ default:
+ return PreconditionResult.FromError($"{nameof(RequireOwnerAttribute)} is not supported by this {nameof(TokenType)}.");
+ }
}
}
}
diff --git a/src/Discord.Net.Commands/Attributes/Preconditions/RequireUserPermissionAttribute.cs b/src/Discord.Net.Commands/Attributes/Preconditions/RequireUserPermissionAttribute.cs
index c5b79c5b9..b7729b0c8 100644
--- a/src/Discord.Net.Commands/Attributes/Preconditions/RequireUserPermissionAttribute.cs
+++ b/src/Discord.Net.Commands/Attributes/Preconditions/RequireUserPermissionAttribute.cs
@@ -1,5 +1,6 @@
using System;
using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
namespace Discord.Commands
{
@@ -42,7 +43,7 @@ namespace Discord.Commands
GuildPermission = null;
}
- public override Task CheckPermissions(ICommandContext context, CommandInfo command, IDependencyMap map)
+ public override Task CheckPermissions(ICommandContext context, CommandInfo command, IServiceProvider services)
{
var guildUser = context.User as IGuildUser;
@@ -51,7 +52,7 @@ namespace Discord.Commands
if (guildUser == null)
return Task.FromResult(PreconditionResult.FromError("Command must be used in a guild channel"));
if (!guildUser.GuildPermissions.Has(GuildPermission.Value))
- return Task.FromResult(PreconditionResult.FromError($"Command requires guild permission {GuildPermission.Value}"));
+ return Task.FromResult(PreconditionResult.FromError($"User requires guild permission {GuildPermission.Value}"));
}
if (ChannelPermission.HasValue)
@@ -65,7 +66,7 @@ namespace Discord.Commands
perms = ChannelPermissions.All(guildChannel);
if (!perms.Has(ChannelPermission.Value))
- return Task.FromResult(PreconditionResult.FromError($"Command requires channel permission {ChannelPermission.Value}"));
+ return Task.FromResult(PreconditionResult.FromError($"User requires channel permission {ChannelPermission.Value}"));
}
return Task.FromResult(PreconditionResult.FromSuccess());
diff --git a/src/Discord.Net.Commands/Builders/CommandBuilder.cs b/src/Discord.Net.Commands/Builders/CommandBuilder.cs
index 27f991b16..b6d002c70 100644
--- a/src/Discord.Net.Commands/Builders/CommandBuilder.cs
+++ b/src/Discord.Net.Commands/Builders/CommandBuilder.cs
@@ -2,6 +2,7 @@
using System.Linq;
using System.Threading.Tasks;
using System.Collections.Generic;
+using Microsoft.Extensions.DependencyInjection;
namespace Discord.Commands.Builders
{
@@ -9,19 +10,22 @@ namespace Discord.Commands.Builders
{
private readonly List _preconditions;
private readonly List _parameters;
+ private readonly List _attributes;
private readonly List _aliases;
public ModuleBuilder Module { get; }
- internal Func Callback { get; set; }
+ internal Func Callback { get; set; }
public string Name { get; set; }
public string Summary { get; set; }
public string Remarks { get; set; }
+ public string PrimaryAlias { get; set; }
public RunMode RunMode { get; set; }
public int Priority { get; set; }
public IReadOnlyList Preconditions => _preconditions;
public IReadOnlyList Parameters => _parameters;
+ public IReadOnlyList Attributes => _attributes;
public IReadOnlyList Aliases => _aliases;
//Automatic
@@ -31,16 +35,18 @@ namespace Discord.Commands.Builders
_preconditions = new List();
_parameters = new List();
+ _attributes = new List();
_aliases = new List();
}
//User-defined
- internal CommandBuilder(ModuleBuilder module, string primaryAlias, Func callback)
+ internal CommandBuilder(ModuleBuilder module, string primaryAlias, Func callback)
: this(module)
{
Discord.Preconditions.NotNull(primaryAlias, nameof(primaryAlias));
Discord.Preconditions.NotNull(callback, nameof(callback));
Callback = callback;
+ PrimaryAlias = primaryAlias;
_aliases.Add(primaryAlias);
}
@@ -74,12 +80,17 @@ namespace Discord.Commands.Builders
{
for (int i = 0; i < aliases.Length; i++)
{
- var alias = aliases[i] ?? "";
+ string alias = aliases[i] ?? "";
if (!_aliases.Contains(alias))
_aliases.Add(alias);
}
return this;
}
+ public CommandBuilder AddAttributes(params Attribute[] attributes)
+ {
+ _attributes.AddRange(attributes);
+ return this;
+ }
public CommandBuilder AddPrecondition(PreconditionAttribute precondition)
{
_preconditions.Add(precondition);
@@ -109,9 +120,9 @@ namespace Discord.Commands.Builders
internal CommandInfo Build(ModuleInfo info, CommandService service)
{
- //Default name to first alias
+ //Default name to primary alias
if (Name == null)
- Name = _aliases[0];
+ Name = PrimaryAlias;
if (_parameters.Count > 0)
{
@@ -119,11 +130,11 @@ namespace Discord.Commands.Builders
var firstMultipleParam = _parameters.FirstOrDefault(x => x.IsMultiple);
if ((firstMultipleParam != null) && (firstMultipleParam != lastParam))
- throw new InvalidOperationException("Only the last parameter in a command may have the Multiple flag.");
+ throw new InvalidOperationException($"Only the last parameter in a command may have the Multiple flag. Parameter: {firstMultipleParam.Name} in {PrimaryAlias}");
var firstRemainderParam = _parameters.FirstOrDefault(x => x.IsRemainder);
if ((firstRemainderParam != null) && (firstRemainderParam != lastParam))
- throw new InvalidOperationException("Only the last parameter in a command may have the Remainder flag.");
+ throw new InvalidOperationException($"Only the last parameter in a command may have the Remainder flag. Parameter: {firstRemainderParam.Name} in {PrimaryAlias}");
}
return new CommandInfo(this, info, service);
diff --git a/src/Discord.Net.Commands/Builders/ModuleBuilder.cs b/src/Discord.Net.Commands/Builders/ModuleBuilder.cs
index 45c0034f2..0a33c9e26 100644
--- a/src/Discord.Net.Commands/Builders/ModuleBuilder.cs
+++ b/src/Discord.Net.Commands/Builders/ModuleBuilder.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
namespace Discord.Commands.Builders
{
@@ -9,6 +10,7 @@ namespace Discord.Commands.Builders
private readonly List _commands;
private readonly List _submodules;
private readonly List _preconditions;
+ private readonly List _attributes;
private readonly List _aliases;
public CommandService Service { get; }
@@ -20,6 +22,7 @@ namespace Discord.Commands.Builders
public IReadOnlyList Commands => _commands;
public IReadOnlyList Modules => _submodules;
public IReadOnlyList Preconditions => _preconditions;
+ public IReadOnlyList Attributes => _attributes;
public IReadOnlyList Aliases => _aliases;
//Automatic
@@ -31,6 +34,7 @@ namespace Discord.Commands.Builders
_commands = new List();
_submodules = new List();
_preconditions = new List();
+ _attributes = new List();
_aliases = new List();
}
//User-defined
@@ -62,18 +66,23 @@ namespace Discord.Commands.Builders
{
for (int i = 0; i < aliases.Length; i++)
{
- var alias = aliases[i] ?? "";
+ string alias = aliases[i] ?? "";
if (!_aliases.Contains(alias))
_aliases.Add(alias);
}
return this;
}
+ public ModuleBuilder AddAttributes(params Attribute[] attributes)
+ {
+ _attributes.AddRange(attributes);
+ return this;
+ }
public ModuleBuilder AddPrecondition(PreconditionAttribute precondition)
{
_preconditions.Add(precondition);
return this;
}
- public ModuleBuilder AddCommand(string primaryAlias, Func callback, Action createFunc)
+ public ModuleBuilder AddCommand(string primaryAlias, Func callback, Action createFunc)
{
var builder = new CommandBuilder(this, primaryAlias, callback);
createFunc(builder);
diff --git a/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs b/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs
index 82850b091..6fae719ee 100644
--- a/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs
+++ b/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs
@@ -12,25 +12,42 @@ namespace Discord.Commands
{
private static readonly TypeInfo _moduleTypeInfo = typeof(IModuleBase).GetTypeInfo();
- public static IEnumerable Search(Assembly assembly)
+ public static async Task> SearchAsync(Assembly assembly, CommandService service)
{
- foreach (var type in assembly.ExportedTypes)
+ bool IsLoadableModule(TypeInfo info)
{
- var typeInfo = type.GetTypeInfo();
- if (IsValidModuleDefinition(typeInfo) &&
- !typeInfo.IsDefined(typeof(DontAutoLoadAttribute)))
+ return info.DeclaredMethods.Any(x => x.GetCustomAttribute() != null) &&
+ info.GetCustomAttribute() == null;
+ }
+
+ var result = new List();
+
+ foreach (var typeInfo in assembly.DefinedTypes)
+ {
+ if (typeInfo.IsPublic || typeInfo.IsNestedPublic)
{
- yield return typeInfo;
+ if (IsValidModuleDefinition(typeInfo) &&
+ !typeInfo.IsDefined(typeof(DontAutoLoadAttribute)))
+ {
+ result.Add(typeInfo);
+ }
+ }
+ else if (IsLoadableModule(typeInfo))
+ {
+ await service._cmdLogger.WarningAsync($"Class {typeInfo.FullName} is not public and cannot be loaded. To suppress this message, mark the class with {nameof(DontAutoLoadAttribute)}.");
}
}
+
+ return result;
}
- public static Dictionary Build(CommandService service, params TypeInfo[] validTypes) => Build(validTypes, service);
- public static Dictionary Build(IEnumerable validTypes, CommandService service)
+
+ public static Task> BuildAsync(CommandService service, params TypeInfo[] validTypes) => BuildAsync(validTypes, service);
+ public static async Task> BuildAsync(IEnumerable validTypes, CommandService service)
{
/*if (!validTypes.Any())
throw new InvalidOperationException("Could not find any valid modules from the given selection");*/
-
+
var topLevelGroups = validTypes.Where(x => x.DeclaringType == null);
var subGroups = validTypes.Intersect(topLevelGroups);
@@ -48,10 +65,13 @@ namespace Discord.Commands
BuildModule(module, typeInfo, service);
BuildSubTypes(module, typeInfo.DeclaredNestedTypes, builtTypes, service);
+ builtTypes.Add(typeInfo);
result[typeInfo.AsType()] = module.Build(service);
}
+ await service._cmdLogger.DebugAsync($"Successfully built {builtTypes.Count} modules.").ConfigureAwait(false);
+
return result;
}
@@ -81,23 +101,31 @@ namespace Discord.Commands
foreach (var attribute in attributes)
{
- // TODO: C#7 type switch
- if (attribute is NameAttribute)
- builder.Name = (attribute as NameAttribute).Text;
- else if (attribute is SummaryAttribute)
- builder.Summary = (attribute as SummaryAttribute).Text;
- else if (attribute is RemarksAttribute)
- builder.Remarks = (attribute as RemarksAttribute).Text;
- else if (attribute is AliasAttribute)
- builder.AddAliases((attribute as AliasAttribute).Aliases);
- else if (attribute is GroupAttribute)
+ switch (attribute)
{
- var groupAttr = attribute as GroupAttribute;
- builder.Name = builder.Name ?? groupAttr.Prefix;
- builder.AddAliases(groupAttr.Prefix);
+ case NameAttribute name:
+ builder.Name = name.Text;
+ break;
+ case SummaryAttribute summary:
+ builder.Summary = summary.Text;
+ break;
+ case RemarksAttribute remarks:
+ builder.Remarks = remarks.Text;
+ break;
+ case AliasAttribute alias:
+ builder.AddAliases(alias.Aliases);
+ break;
+ case GroupAttribute group:
+ builder.Name = builder.Name ?? group.Prefix;
+ builder.AddAliases(group.Prefix);
+ break;
+ case PreconditionAttribute precondition:
+ builder.AddPrecondition(precondition);
+ break;
+ default:
+ builder.AddAttributes(attribute);
+ break;
}
- else if (attribute is PreconditionAttribute)
- builder.AddPrecondition(attribute as PreconditionAttribute);
}
//Check for unspecified info
@@ -123,26 +151,35 @@ namespace Discord.Commands
foreach (var attribute in attributes)
{
- // TODO: C#7 type switch
- if (attribute is CommandAttribute)
+ switch (attribute)
{
- var cmdAttr = attribute as CommandAttribute;
- builder.AddAliases(cmdAttr.Text);
- builder.RunMode = cmdAttr.RunMode;
- builder.Name = builder.Name ?? cmdAttr.Text;
+ case CommandAttribute command:
+ builder.AddAliases(command.Text);
+ builder.RunMode = command.RunMode;
+ builder.Name = builder.Name ?? command.Text;
+ break;
+ case NameAttribute name:
+ builder.Name = name.Text;
+ break;
+ case PriorityAttribute priority:
+ builder.Priority = priority.Priority;
+ break;
+ case SummaryAttribute summary:
+ builder.Summary = summary.Text;
+ break;
+ case RemarksAttribute remarks:
+ builder.Remarks = remarks.Text;
+ break;
+ case AliasAttribute alias:
+ builder.AddAliases(alias.Aliases);
+ break;
+ case PreconditionAttribute precondition:
+ builder.AddPrecondition(precondition);
+ break;
+ default:
+ builder.AddAttributes(attribute);
+ break;
}
- else if (attribute is NameAttribute)
- builder.Name = (attribute as NameAttribute).Text;
- else if (attribute is PriorityAttribute)
- builder.Priority = (attribute as PriorityAttribute).Priority;
- else if (attribute is SummaryAttribute)
- builder.Summary = (attribute as SummaryAttribute).Text;
- else if (attribute is RemarksAttribute)
- builder.Remarks = (attribute as RemarksAttribute).Text;
- else if (attribute is AliasAttribute)
- builder.AddAliases((attribute as AliasAttribute).Aliases);
- else if (attribute is PreconditionAttribute)
- builder.AddPrecondition(attribute as PreconditionAttribute);
}
if (builder.Name == null)
@@ -160,21 +197,34 @@ namespace Discord.Commands
var createInstance = ReflectionUtils.CreateBuilder(typeInfo, service);
- builder.Callback = (ctx, args, map) =>
+ async Task ExecuteCallback(ICommandContext context, object[] args, IServiceProvider services, CommandInfo cmd)
{
- var instance = createInstance(map);
- instance.SetContext(ctx);
+ var instance = createInstance(services);
+ instance.SetContext(context);
+
try
{
- instance.BeforeExecute();
- return method.Invoke(instance, args) as Task ?? Task.Delay(0);
+ instance.BeforeExecute(cmd);
+
+ var task = method.Invoke(instance, args) as Task ?? Task.Delay(0);
+ if (task is Task resultTask)
+ {
+ return await resultTask.ConfigureAwait(false);
+ }
+ else
+ {
+ await task.ConfigureAwait(false);
+ return ExecuteResult.FromSuccess();
+ }
}
finally
{
- instance.AfterExecute();
+ instance.AfterExecute(cmd);
(instance as IDisposable)?.Dispose();
}
- };
+ }
+
+ builder.Callback = ExecuteCallback;
}
private static void BuildParameter(ParameterBuilder builder, System.Reflection.ParameterInfo paramInfo, int position, int count, CommandService service)
@@ -189,24 +239,30 @@ namespace Discord.Commands
foreach (var attribute in attributes)
{
- // TODO: C#7 type switch
- if (attribute is SummaryAttribute)
- builder.Summary = (attribute as SummaryAttribute).Text;
- else if (attribute is OverrideTypeReaderAttribute)
- builder.TypeReader = GetTypeReader(service, paramType, (attribute as OverrideTypeReaderAttribute).TypeReader);
- else if (attribute is ParameterPreconditionAttribute)
- builder.AddPrecondition(attribute as ParameterPreconditionAttribute);
- else if (attribute is ParamArrayAttribute)
- {
- builder.IsMultiple = true;
- paramType = paramType.GetElementType();
- }
- else if (attribute is RemainderAttribute)
+ switch (attribute)
{
- if (position != count-1)
- throw new InvalidOperationException("Remainder parameters must be the last parameter in a command.");
-
- builder.IsRemainder = true;
+ case SummaryAttribute summary:
+ builder.Summary = summary.Text;
+ break;
+ case OverrideTypeReaderAttribute typeReader:
+ builder.TypeReader = GetTypeReader(service, paramType, typeReader.TypeReader);
+ break;
+ case ParamArrayAttribute _:
+ builder.IsMultiple = true;
+ paramType = paramType.GetElementType();
+ break;
+ case ParameterPreconditionAttribute precon:
+ builder.AddPrecondition(precon);
+ break;
+ case RemainderAttribute _:
+ if (position != count - 1)
+ throw new InvalidOperationException($"Remainder parameters must be the last parameter in a command. Parameter: {paramInfo.Name} in {paramInfo.Member.DeclaringType.Name}.{paramInfo.Member.Name}");
+
+ builder.IsRemainder = true;
+ break;
+ default:
+ builder.AddAttributes(attribute);
+ break;
}
}
@@ -237,7 +293,7 @@ namespace Discord.Commands
}
//We dont have a cached type reader, create one
- reader = ReflectionUtils.CreateObject(typeReaderType.GetTypeInfo(), service, DependencyMap.Empty);
+ reader = ReflectionUtils.CreateObject(typeReaderType.GetTypeInfo(), service, EmptyServiceProvider.Instance);
service.AddTypeReader(paramType, reader);
return reader;
@@ -252,9 +308,9 @@ namespace Discord.Commands
private static bool IsValidCommandDefinition(MethodInfo methodInfo)
{
return methodInfo.IsDefined(typeof(CommandAttribute)) &&
- methodInfo.ReturnType == typeof(Task) &&
+ (methodInfo.ReturnType == typeof(Task) || methodInfo.ReturnType == typeof(Task)) &&
!methodInfo.IsStatic &&
!methodInfo.IsGenericMethod;
}
}
-}
\ No newline at end of file
+}
diff --git a/src/Discord.Net.Commands/Builders/ParameterBuilder.cs b/src/Discord.Net.Commands/Builders/ParameterBuilder.cs
index c9801f458..d1782d7ea 100644
--- a/src/Discord.Net.Commands/Builders/ParameterBuilder.cs
+++ b/src/Discord.Net.Commands/Builders/ParameterBuilder.cs
@@ -8,7 +8,8 @@ namespace Discord.Commands.Builders
{
public class ParameterBuilder
{
- private readonly List _preconditions;
+ private readonly List _preconditions;
+ private readonly List _attributes;
public CommandBuilder Command { get; }
public string Name { get; internal set; }
@@ -22,11 +23,13 @@ namespace Discord.Commands.Builders
public string Summary { get; set; }
public IReadOnlyList Preconditions => _preconditions;
+ public IReadOnlyList Attributes => _attributes;
//Automatic
internal ParameterBuilder(CommandBuilder command)
{
_preconditions = new List();
+ _attributes = new List();
Command = command;
}
@@ -49,7 +52,7 @@ namespace Discord.Commands.Builders
TypeReader = Command.Module.Service.GetDefaultTypeReader(type);
if (TypeReader == null)
- throw new InvalidOperationException($"{type} does not have a TypeReader registered for it");
+ throw new InvalidOperationException($"{type} does not have a TypeReader registered for it. Parameter: {Name} in {Command.PrimaryAlias}");
if (type.GetTypeInfo().IsValueType)
DefaultValue = Activator.CreateInstance(type);
@@ -84,6 +87,11 @@ namespace Discord.Commands.Builders
return this;
}
+ public ParameterBuilder AddAttributes(params Attribute[] attributes)
+ {
+ _attributes.AddRange(attributes);
+ return this;
+ }
public ParameterBuilder AddPrecondition(ParameterPreconditionAttribute precondition)
{
_preconditions.Add(precondition);
@@ -93,7 +101,7 @@ namespace Discord.Commands.Builders
internal ParameterInfo Build(CommandInfo info)
{
if (TypeReader == null)
- throw new InvalidOperationException($"No default TypeReader found, one must be specified");
+ throw new InvalidOperationException($"No type reader found for type {ParameterType.Name}, one must be specified");
return new ParameterInfo(this, info, Command.Module.Service);
}
diff --git a/src/Discord.Net.Commands/CommandError.cs b/src/Discord.Net.Commands/CommandError.cs
index 41b4822ad..abfc14e1d 100644
--- a/src/Discord.Net.Commands/CommandError.cs
+++ b/src/Discord.Net.Commands/CommandError.cs
@@ -18,6 +18,9 @@
UnmetPrecondition,
//Execute
- Exception
+ Exception,
+
+ //Runtime
+ Unsuccessful
}
}
diff --git a/src/Discord.Net.Commands/CommandException.cs b/src/Discord.Net.Commands/CommandException.cs
new file mode 100644
index 000000000..d5300841a
--- /dev/null
+++ b/src/Discord.Net.Commands/CommandException.cs
@@ -0,0 +1,17 @@
+using System;
+
+namespace Discord.Commands
+{
+ public class CommandException : Exception
+ {
+ public CommandInfo Command { get; }
+ public ICommandContext Context { get; }
+
+ public CommandException(CommandInfo command, ICommandContext context, Exception ex)
+ : base($"Error occurred executing {command.GetLogText(context)}.", ex)
+ {
+ Command = command;
+ Context = context;
+ }
+ }
+}
diff --git a/src/Discord.Net.Commands/CommandMatch.cs b/src/Discord.Net.Commands/CommandMatch.cs
index 6e78b8509..d922a2229 100644
--- a/src/Discord.Net.Commands/CommandMatch.cs
+++ b/src/Discord.Net.Commands/CommandMatch.cs
@@ -1,5 +1,7 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
namespace Discord.Commands
{
@@ -14,13 +16,13 @@ namespace Discord.Commands
Alias = alias;
}
- public Task CheckPreconditionsAsync(ICommandContext context, IDependencyMap map = null)
- => Command.CheckPreconditionsAsync(context, map);
- public Task ParseAsync(ICommandContext context, SearchResult searchResult, PreconditionResult? preconditionResult = null)
- => Command.ParseAsync(context, Alias.Length, searchResult, preconditionResult);
- public Task ExecuteAsync(ICommandContext context, IEnumerable