docs: September 2019 Documentation Update (#1379)
* docs: adjust wording of ActivityType.Watching enum Adjusts the xmldoc summary wording of the ActivityType.Watching enum to fix a wording issue. * Add D.NET Logo to Open Graph meta tags * Update DescriptionGenerator ...And update color to suit the logo better * Disable smooth scrolling due to user complaints * Remove unnecessary spacing in sideaffix * Update footer version * Remove featherlight plugin As it is unnecessary and can break image tags * Adjust wordings regarding safe-handling of secrets * Fix formatting for first bot token sample * Add badges to homepage * Minor wording fixes on terminal * Update to higher quality PNG * Add Discord.Net.Example in sln for build validation * Clarify all instances of IAsnycEnumerable * Clarify overridden props in SocketNewsChannel * Add returns and params docs for SyncPermissionsAsync * Remove/fix invalid XMLdoc strings * Remove AppVeyor and add GitHub badge
This commit is contained in:
@@ -36,7 +36,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Tests.Integrati
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{C7CF5621-7D36-433B-B337-5A2E3C101A71}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{C7CF5621-7D36-433B-B337-5A2E3C101A71}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Net.Analyzers.Tests", "test\Discord.Net.Analyzers.Tests\Discord.Net.Analyzers.Tests.csproj", "{FC67057C-E92F-4E1C-98BE-46F839C8AD71}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Analyzers.Tests", "test\Discord.Net.Analyzers.Tests\Discord.Net.Analyzers.Tests.csproj", "{FC67057C-E92F-4E1C-98BE-46F839C8AD71}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Examples", "src\Discord.Net.Examples\Discord.Net.Examples.csproj", "{47820065-3CFB-401C-ACEA-862BD564A404}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
@@ -204,6 +206,18 @@ Global
|
|||||||
{FC67057C-E92F-4E1C-98BE-46F839C8AD71}.Release|x64.Build.0 = Release|Any CPU
|
{FC67057C-E92F-4E1C-98BE-46F839C8AD71}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{FC67057C-E92F-4E1C-98BE-46F839C8AD71}.Release|x86.ActiveCfg = Release|Any CPU
|
{FC67057C-E92F-4E1C-98BE-46F839C8AD71}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{FC67057C-E92F-4E1C-98BE-46F839C8AD71}.Release|x86.Build.0 = Release|Any CPU
|
{FC67057C-E92F-4E1C-98BE-46F839C8AD71}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{47820065-3CFB-401C-ACEA-862BD564A404}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{47820065-3CFB-401C-ACEA-862BD564A404}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{47820065-3CFB-401C-ACEA-862BD564A404}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{47820065-3CFB-401C-ACEA-862BD564A404}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{47820065-3CFB-401C-ACEA-862BD564A404}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{47820065-3CFB-401C-ACEA-862BD564A404}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{47820065-3CFB-401C-ACEA-862BD564A404}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{47820065-3CFB-401C-ACEA-862BD564A404}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{47820065-3CFB-401C-ACEA-862BD564A404}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{47820065-3CFB-401C-ACEA-862BD564A404}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{47820065-3CFB-401C-ACEA-862BD564A404}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{47820065-3CFB-401C-ACEA-862BD564A404}.Release|x86.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
@@ -221,6 +235,7 @@ Global
|
|||||||
{DBF8B16E-5967-4480-8EDE-15D98A0DF0C4} = {C7CF5621-7D36-433B-B337-5A2E3C101A71}
|
{DBF8B16E-5967-4480-8EDE-15D98A0DF0C4} = {C7CF5621-7D36-433B-B337-5A2E3C101A71}
|
||||||
{E169E15A-E82C-45BF-8C24-C2CADB7093AA} = {C7CF5621-7D36-433B-B337-5A2E3C101A71}
|
{E169E15A-E82C-45BF-8C24-C2CADB7093AA} = {C7CF5621-7D36-433B-B337-5A2E3C101A71}
|
||||||
{FC67057C-E92F-4E1C-98BE-46F839C8AD71} = {C7CF5621-7D36-433B-B337-5A2E3C101A71}
|
{FC67057C-E92F-4E1C-98BE-46F839C8AD71} = {C7CF5621-7D36-433B-B337-5A2E3C101A71}
|
||||||
|
{47820065-3CFB-401C-ACEA-862BD564A404} = {BB59D5B5-E7B0-4BF4-8F82-D14431B2799B}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {D2404771-EEC8-45F2-9D71-F3373F6C1495}
|
SolutionGuid = {D2404771-EEC8-45F2-9D71-F3373F6C1495}
|
||||||
|
|||||||
Binary file not shown.
@@ -5,9 +5,18 @@
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
<title>{{#title}}{{title}}{{/title}}{{^title}}{{>partials/title}}{{/title}} {{#_appTitle}}| {{_appTitle}} {{/_appTitle}}</title>
|
<title>{{#title}}{{title}}{{/title}}{{^title}}{{>partials/title}}{{/title}} {{#_appTitle}}| {{_appTitle}} {{/_appTitle}}</title>
|
||||||
<meta name="viewport" content="width=device-width">
|
<meta name="viewport" content="width=device-width">
|
||||||
<meta name="title" content="{{#title}}{{title}}{{/title}}{{^title}}{{>partials/title}}{{/title}} {{#_appTitle}}| {{_appTitle}} {{/_appTitle}}">
|
<meta property="og:title" content="{{#title}}{{title}}{{/title}}{{^title}}{{>partials/title}}{{/title}} {{#_appTitle}}| {{_appTitle}} {{/_appTitle}}">
|
||||||
|
{{#_description}}<meta property="og:description" content="{{_description}}">{{/_description}}
|
||||||
|
<meta property="og:locale" content="en-us">
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:site_name" content="Discord.Net Docs">
|
||||||
|
<meta property="og:image" content="https://cdn.jsdelivr.net/gh/discord-net/Discord.Net/docs/marketing/logo/PackageLogo.png">
|
||||||
|
<meta property="og:image:alt" content="Discord.Net Logo">
|
||||||
|
<meta name="theme-color" content="#995EA7"/>
|
||||||
<meta name="generator" content="docfx {{_docfxVersion}}">
|
<meta name="generator" content="docfx {{_docfxVersion}}">
|
||||||
{{#_description}}<meta name="description" content="{{_description}}">{{/_description}}
|
<meta property="docfx:navrel" content="{{_navRel}}">
|
||||||
|
<meta property="docfx:tocrel" content="{{_tocRel}}">
|
||||||
|
<meta id="docfx-style:rel" content="{{_rel}}">
|
||||||
<link rel="preload" href="{{_rel}}styles/search-worker.js" as="script">
|
<link rel="preload" href="{{_rel}}styles/search-worker.js" as="script">
|
||||||
<link rel="preload" href="{{_rel}}fonts/glyphicons-halflings-regular.woff2" as="font" type="font/woff2" crossorigin="anonymous">
|
<link rel="preload" href="{{_rel}}fonts/glyphicons-halflings-regular.woff2" as="font" type="font/woff2" crossorigin="anonymous">
|
||||||
<link rel="shortcut icon" href="{{_rel}}{{{_appFaviconPath}}}{{^_appFaviconPath}}favicon.ico{{/_appFaviconPath}}">
|
<link rel="shortcut icon" href="{{_rel}}{{{_appFaviconPath}}}{{^_appFaviconPath}}favicon.ico{{/_appFaviconPath}}">
|
||||||
@@ -18,10 +27,6 @@
|
|||||||
<link rel="stylesheet" href="{{_rel}}styles/material.css">
|
<link rel="stylesheet" href="{{_rel}}styles/material.css">
|
||||||
<link rel="stylesheet" href="{{_rel}}styles/theme-switcher.css">
|
<link rel="stylesheet" href="{{_rel}}styles/theme-switcher.css">
|
||||||
<link href="https://cdn.rawgit.com/noelboss/featherlight/1.7.6/release/featherlight.min.css" type="text/css" rel="stylesheet" />
|
<link href="https://cdn.rawgit.com/noelboss/featherlight/1.7.6/release/featherlight.min.css" type="text/css" rel="stylesheet" />
|
||||||
<meta name="theme-color" content="#99AAB5"/>
|
|
||||||
<meta property="docfx:navrel" content="{{_navRel}}">
|
|
||||||
<meta property="docfx:tocrel" content="{{_tocRel}}">
|
|
||||||
<meta id="docfx-style:rel" content="{{_rel}}">
|
|
||||||
{{#_noindex}}<meta name="searchOption" content="noindex">{{/_noindex}}
|
{{#_noindex}}<meta name="searchOption" content="noindex">{{/_noindex}}
|
||||||
{{#_enableSearch}}<meta property="docfx:rel" content="{{_rel}}">{{/_enableSearch}}
|
{{#_enableSearch}}<meta property="docfx:rel" content="{{_rel}}">{{/_enableSearch}}
|
||||||
{{#_enableNewTab}}<meta property="docfx:newtab" content="true">{{/_enableNewTab}}
|
{{#_enableNewTab}}<meta property="docfx:newtab" content="true">{{/_enableNewTab}}
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
<script type="text/javascript" src="{{_rel}}styles/docfx.vendor.js"></script>
|
<script type="text/javascript" src="{{_rel}}styles/docfx.vendor.js"></script>
|
||||||
<script type="text/javascript" src="{{_rel}}styles/docfx.js"></script>
|
<script type="text/javascript" src="{{_rel}}styles/docfx.js"></script>
|
||||||
<script type="text/javascript" src="{{_rel}}styles/main.js"></script>
|
<script type="text/javascript" src="{{_rel}}styles/main.js"></script>
|
||||||
<script type="text/javascript" src="https://cdn.rawgit.com/noelboss/featherlight/master/release/featherlight.min.js" charset="utf-8"></script>
|
|
||||||
<script type="text/javascript" src="{{_rel}}styles/plugin-featherlight.js"></script>
|
|
||||||
<script type="text/javascript" src="{{_rel}}styles/styleswitcher.js"></script>
|
<script type="text/javascript" src="{{_rel}}styles/styleswitcher.js"></script>
|
||||||
<script type="text/javascript" src="https://malsup.github.io/jquery.corner.js"></script>
|
<script type="text/javascript" src="https://malsup.github.io/jquery.corner.js"></script>
|
||||||
<script type="text/javascript" src="{{_rel}}styles/cornerify.js"></script>
|
<script type="text/javascript" src="{{_rel}}styles/cornerify.js"></script>
|
||||||
@@ -6,7 +6,6 @@ body {
|
|||||||
font-display: optional;
|
font-display: optional;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
scroll-behavior: smooth;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
code{
|
code{
|
||||||
@@ -92,6 +91,10 @@ article.content h6{
|
|||||||
line-height: 140%;
|
line-height: 140%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sideaffix > div.contribution {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
header .navbar {
|
header .navbar {
|
||||||
border-width: 0 0 0px;
|
border-width: 0 0 0px;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
// MIT License
|
|
||||||
|
|
||||||
// Copyright (c) 2017 Roel Fauconnier
|
|
||||||
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
|
||||||
// in the Software without restriction, including without limitation the rights
|
|
||||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
// copies of the Software, and to permit persons to whom the Software is
|
|
||||||
// furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
// The above copyright notice and this permission notice shall be included in all
|
|
||||||
// copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
// SOFTWARE.
|
|
||||||
|
|
||||||
$(document).ready(function() {
|
|
||||||
//find all images, but not the logo, and add the lightbox
|
|
||||||
$('img').not('#logo').each(function(){
|
|
||||||
var $img = $(this);
|
|
||||||
var filename = $img.attr('src')
|
|
||||||
//add cursor
|
|
||||||
$img.css('cursor','zoom-in');
|
|
||||||
$img.css('cursor','-moz-zoom-in');
|
|
||||||
$img.css('cursor','-webkit-zoom-in');
|
|
||||||
|
|
||||||
//add featherlight
|
|
||||||
$img.attr('alt', filename);
|
|
||||||
$img.featherlight(filename);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@@ -35,7 +35,8 @@
|
|||||||
"**/images/**",
|
"**/images/**",
|
||||||
"**/samples/**",
|
"**/samples/**",
|
||||||
"langwordMapping.yml",
|
"langwordMapping.yml",
|
||||||
"marketing/logo/SVG/**.svg",
|
"marketing/logo/**.svg",
|
||||||
|
"marketing/logo/**.png",
|
||||||
"favicon.ico"
|
"favicon.ico"
|
||||||
]
|
]
|
||||||
}],
|
}],
|
||||||
@@ -50,7 +51,7 @@
|
|||||||
"overwrite": "_overwrites/**/**.md",
|
"overwrite": "_overwrites/**/**.md",
|
||||||
"globalMetadata": {
|
"globalMetadata": {
|
||||||
"_appTitle": "Discord.Net Documentation",
|
"_appTitle": "Discord.Net Documentation",
|
||||||
"_appFooter": "Discord.Net (c) 2015-2019 2.0.1",
|
"_appFooter": "Discord.Net (c) 2015-2019 2.1.1",
|
||||||
"_enableSearch": true,
|
"_enableSearch": true,
|
||||||
"_appLogoPath": "marketing/logo/SVG/Logomark Purple.svg",
|
"_appLogoPath": "marketing/logo/SVG/Logomark Purple.svg",
|
||||||
"_appFaviconPath": "favicon.ico"
|
"_appFaviconPath": "favicon.ico"
|
||||||
|
|||||||
@@ -146,23 +146,6 @@ method with the application's "token."
|
|||||||
> Pay attention to what you are copying from the developer portal!
|
> Pay attention to what you are copying from the developer portal!
|
||||||
> A token is not the same as the application's "client secret."
|
> A token is not the same as the application's "client secret."
|
||||||
|
|
||||||
> [!IMPORTANT]
|
|
||||||
> Your bot's token can be used to gain total access to your bot, so
|
|
||||||
> **do not** share this token with anyone else! You should store this
|
|
||||||
> token in an external source if you plan on distributing
|
|
||||||
> the source code for your bot.
|
|
||||||
>
|
|
||||||
> In the following example, we retrieve the token from the environment
|
|
||||||
> variable `DiscordToken`. Please note that this is *not* designed to
|
|
||||||
> be used in a production environment, as the secrets are stored in
|
|
||||||
> plain-text.
|
|
||||||
>
|
|
||||||
> For information on how to set an environment variable, please see
|
|
||||||
> instructions below,
|
|
||||||
>
|
|
||||||
> * Windows: [How to Create Environment Variables Shortcut in Windows](https://www.tenforums.com/tutorials/121742-create-environment-variables-shortcut-windows.html)
|
|
||||||
> * Linux: [How To Read and Set Environmental and Shell Variables on a Linux VPS](https://www.digitalocean.com/community/tutorials/how-to-read-and-set-environmental-and-shell-variables-on-a-linux-vps)
|
|
||||||
> * macOS: [How do I set environment variables on OS X?](https://apple.stackexchange.com/questions/106778/how-do-i-set-environment-variables-on-os-x)
|
|
||||||
|
|
||||||
We may now invoke the client's [StartAsync] method, which will
|
We may now invoke the client's [StartAsync] method, which will
|
||||||
start connection/reconnection logic. It is important to note that
|
start connection/reconnection logic. It is important to note that
|
||||||
@@ -175,6 +158,22 @@ Finally, we will want to block the async main method from returning
|
|||||||
when running the application. To do this, we can await an infinite delay
|
when running the application. To do this, we can await an infinite delay
|
||||||
or any other blocking method, such as reading from the console.
|
or any other blocking method, such as reading from the console.
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> Your bot's token can be used to gain total access to your bot, so
|
||||||
|
> **do not** share this token with anyone else! You should store this
|
||||||
|
> token in an external source if you plan on distributing
|
||||||
|
> the source code for your bot.
|
||||||
|
>
|
||||||
|
> In the following example, we retrieve the token from a pre-defined
|
||||||
|
> variable, which is **NOT** secure, especially if you plan on
|
||||||
|
> distributing the application in any shape or form.
|
||||||
|
>
|
||||||
|
> We recommend alternative storage such as
|
||||||
|
> [Environment Variables], an external configuration file, or a
|
||||||
|
> secrets manager for safe-handling of secrets.
|
||||||
|
>
|
||||||
|
> [Environment Variables]: https://en.wikipedia.org/wiki/Environment_variable
|
||||||
|
|
||||||
The following lines can now be added:
|
The following lines can now be added:
|
||||||
|
|
||||||
[!code-csharp[Create client](samples/first-bot/client.cs)]
|
[!code-csharp[Create client](samples/first-bot/client.cs)]
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ published to our [MyGet feed]. See
|
|||||||
|
|
||||||
### [Using dotnet CLI](#tab/dotnet-cli)
|
### [Using dotnet CLI](#tab/dotnet-cli)
|
||||||
|
|
||||||
1. Launch your terminal
|
1. Launch a terminal of your choice
|
||||||
2. Navigate to where your `*.csproj` is located
|
2. Navigate to where your `*.csproj` is located
|
||||||
3. Enter `dotnet add package Discord.Net`
|
3. Enter `dotnet add package Discord.Net`
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@ In order to compile Discord.Net, you will need the following:
|
|||||||
|
|
||||||
### Using Visual Studio
|
### Using Visual Studio
|
||||||
|
|
||||||
* [Visual Studio 2017](https://www.visualstudio.com/)
|
* [Visual Studio 2019](https://visualstudio.microsoft.com/)
|
||||||
* [.NET Core SDK]
|
* [.NET Core SDK]
|
||||||
|
|
||||||
The .NET Core and Docker workload is required during Visual Studio
|
The .NET Core and Docker workload is required during Visual Studio
|
||||||
@@ -109,7 +109,7 @@ When running any Discord.Net-powered bot on an older operating system
|
|||||||
you may encounter a @System.PlatformNotSupportedException upon
|
you may encounter a @System.PlatformNotSupportedException upon
|
||||||
connecting.
|
connecting.
|
||||||
|
|
||||||
You may resolve this by either targeting .NET Core 2.1 or later, or
|
You may resolve this by either targeting .NET Core 2.1 or higher, or
|
||||||
by installing one or more custom packages as listed below.
|
by installing one or more custom packages as listed below.
|
||||||
|
|
||||||
#### [Targeting .NET Core 2.1](#tab/core2-1)
|
#### [Targeting .NET Core 2.1](#tab/core2-1)
|
||||||
@@ -141,4 +141,4 @@ over the default ones.
|
|||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
[.NET Core SDK]: https://www.microsoft.com/net/download/
|
[.NET Core SDK]: https://dotnet.microsoft.com/download
|
||||||
@@ -53,7 +53,7 @@ adding the feed to your package source.
|
|||||||
|
|
||||||
### [Using dotnet CLI](#tab/cli)
|
### [Using dotnet CLI](#tab/cli)
|
||||||
|
|
||||||
1. Launch your terminal
|
1. Launch a terminal of your choice
|
||||||
2. Navigate to where your `*.csproj` is located
|
2. Navigate to where your `*.csproj` is located
|
||||||
3. Type `dotnet add package Discord.Net --source https://www.myget.org/F/discord-net/api/v3/index.json`
|
3. Type `dotnet add package Discord.Net --source https://www.myget.org/F/discord-net/api/v3/index.json`
|
||||||
|
|
||||||
|
|||||||
@@ -2,22 +2,22 @@ private DiscordSocketClient _client;
|
|||||||
|
|
||||||
public async Task MainAsync()
|
public async Task MainAsync()
|
||||||
{
|
{
|
||||||
_client = new DiscordSocketClient();
|
_client = new DiscordSocketClient();
|
||||||
|
|
||||||
_client.Log += Log;
|
_client.Log += Log;
|
||||||
|
|
||||||
// You can assign your bot token to a string, and pass that in to connect.
|
// You can assign your bot token to a string, and pass that in to connect.
|
||||||
// This however is insecure, particularly if you plan to have your code hosted in a repository.
|
// This is, however, insecure, particularly if you plan to have your code hosted in a public repository.
|
||||||
var token = "token";
|
var token = "token";
|
||||||
|
|
||||||
// Some alternative options would be to keep your token in an Environment Variable or a standalone file.
|
// Some alternative options would be to keep your token in an Environment Variable or a standalone file.
|
||||||
// var token = Environment.GetEnvironmentVariable("NameOfYourEnvironmentVariable");
|
// var token = Environment.GetEnvironmentVariable("NameOfYourEnvironmentVariable");
|
||||||
// var token = File.ReadAllText("token.txt");
|
// var token = File.ReadAllText("token.txt");
|
||||||
// var token = JsonConvert.DeserializeObject<AConfigurationClass>(File.ReadAllText("config.json")).Token;
|
// var token = JsonConvert.DeserializeObject<AConfigurationClass>(File.ReadAllText("config.json")).Token;
|
||||||
|
|
||||||
await _client.LoginAsync(TokenType.Bot, token);
|
await _client.LoginAsync(TokenType.Bot, token);
|
||||||
await _client.StartAsync();
|
await _client.StartAsync();
|
||||||
|
|
||||||
// Block this task until the program is closed.
|
// Block this task until the program is closed.
|
||||||
await Task.Delay(-1);
|
await Task.Delay(-1);
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,13 @@ title: Home
|
|||||||
|
|
||||||
# Discord.Net Documentation
|
# Discord.Net Documentation
|
||||||
|
|
||||||
<div class="big-logo logo-switcher" />
|
<div class="big-logo logo-switcher"></div>
|
||||||
|
|
||||||
|
[](https://github.com/discord-net/Discord.Net)
|
||||||
|
[](https://www.nuget.org/packages/Discord.Net)
|
||||||
|
[](https://www.myget.org/feed/Packages/discord-net)
|
||||||
|
[](https://dev.azure.com/discord-net/Discord.Net/_build/latest?definitionId=1&branchName=dev)
|
||||||
|
[](https://discord.gg/jkrBmQR)
|
||||||
|
|
||||||
## What is Discord.Net?
|
## What is Discord.Net?
|
||||||
|
|
||||||
@@ -20,11 +26,3 @@ If this is your first time using Discord.Net, you should refer to the
|
|||||||
More experienced users might want to refer to the
|
More experienced users might want to refer to the
|
||||||
[API Documentation](xref:API.Docs) for a breakdown of the individual
|
[API Documentation](xref:API.Docs) for a breakdown of the individual
|
||||||
objects in the library.
|
objects in the library.
|
||||||
|
|
||||||
## Additional Resources
|
|
||||||
|
|
||||||
- [Discord API Guild](https://discord.gg/discord-api) - Look for `#dotnet_discord-net`
|
|
||||||
- [GitHub](https://github.com/RogueException/Discord.Net/)
|
|
||||||
- [NuGet](https://www.nuget.org/packages/Discord.Net/)
|
|
||||||
- [MyGet Feed](https://www.myget.org/feed/Packages/discord-net) - Add-ons and nightly builds
|
|
||||||
- [AppVeyor CI](https://ci.appveyor.com/project/RogueException/discord-net) - Nightly builds via Continuous Integration
|
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 11 KiB |
@@ -18,7 +18,7 @@ namespace Discord
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
Listening = 2,
|
Listening = 2,
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The user is watching a media.
|
/// The user is watching some form of media.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Watching = 3
|
Watching = 3
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
namespace Discord
|
namespace Discord
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Specifies the direction of where message(s) should be retrieved from.
|
/// Specifies the direction of where message(s) should be retrieved from.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// This enum is used to specify the direction for retrieving messages.
|
/// This enum is used to specify the direction for retrieving messages.
|
||||||
/// <note type="important">
|
/// <note type="important">
|
||||||
/// At the time of writing, <see cref="Around"/> is not yet implemented into
|
/// At the time of writing, <see cref="Around"/> is not yet implemented into
|
||||||
/// <see cref="IMessageChannel.GetMessagesAsync"/>. Attempting to use the method with <see cref="Around"/>
|
/// <see cref="IMessageChannel.GetMessagesAsync(int, CacheMode, RequestOptions)"/>.
|
||||||
/// as its direction will throw a <see cref="System.NotImplementedException"/>.
|
/// Attempting to use the method with <see cref="Around"/> will throw
|
||||||
|
/// a <see cref="System.NotImplementedException"/>.
|
||||||
/// </note>
|
/// </note>
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
public enum Direction
|
public enum Direction
|
||||||
|
|||||||
@@ -17,14 +17,24 @@ namespace Discord
|
|||||||
string Name { get; }
|
string Name { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a collection of all users in this channel.
|
/// Gets a collection of users that are able to view the channel or are currently in this channel.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// <note type="important">
|
||||||
|
/// The returned collection is an asynchronous enumerable object; one must call
|
||||||
|
/// <see cref="AsyncEnumerableExtensions.FlattenAsync{T}"/> to access the individual messages as a
|
||||||
|
/// collection.
|
||||||
|
/// </note>
|
||||||
|
/// This method will attempt to fetch all users that is able to view this channel or is currently in this channel.
|
||||||
|
/// The library will attempt to split up the requests according to and <see cref="DiscordConfig.MaxUsersPerBatch"/>.
|
||||||
|
/// In other words, if there are 3000 users, and the <see cref="Discord.DiscordConfig.MaxUsersPerBatch"/> constant
|
||||||
|
/// is <c>1000</c>, the request will be split into 3 individual requests; thus returning 53individual asynchronous
|
||||||
|
/// responses, hence the need of flattening.
|
||||||
|
/// </remarks>
|
||||||
/// <param name="mode">The <see cref="CacheMode"/> that determines whether the object should be fetched from cache.</param>
|
/// <param name="mode">The <see cref="CacheMode"/> that determines whether the object should be fetched from cache.</param>
|
||||||
/// <param name="options">The options to be used when sending the request.</param>
|
/// <param name="options">The options to be used when sending the request.</param>
|
||||||
/// <returns>
|
/// <returns>
|
||||||
/// A paged collection containing a collection of users that can access this channel. Flattening the
|
/// Paged collection of users.
|
||||||
/// paginated response into a collection of users with
|
|
||||||
/// <see cref="AsyncEnumerableExtensions.FlattenAsync{T}"/> is required if you wish to access the users.
|
|
||||||
/// </returns>
|
/// </returns>
|
||||||
IAsyncEnumerable<IReadOnlyCollection<IUser>> GetUsersAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
|
IAsyncEnumerable<IReadOnlyCollection<IUser>> GetUsersAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
|
||||||
|
|
||||||
|
|||||||
@@ -132,14 +132,16 @@ namespace Discord
|
|||||||
Task AddPermissionOverwriteAsync(IUser user, OverwritePermissions permissions, RequestOptions options = null);
|
Task AddPermissionOverwriteAsync(IUser user, OverwritePermissions permissions, RequestOptions options = null);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a collection of users that are able to view the channel.
|
/// Gets a collection of users that are able to view the channel or are currently in this channel.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// This method follows the same behavior as described in <see cref="IChannel.GetUsersAsync"/>.
|
||||||
|
/// Please visit its documentation for more details on this method.
|
||||||
|
/// </remarks>
|
||||||
/// <param name="mode">The <see cref="CacheMode" /> that determines whether the object should be fetched from cache.</param>
|
/// <param name="mode">The <see cref="CacheMode" /> that determines whether the object should be fetched from cache.</param>
|
||||||
/// <param name="options">The options to be used when sending the request.</param>
|
/// <param name="options">The options to be used when sending the request.</param>
|
||||||
/// <returns>
|
/// <returns>
|
||||||
/// A paged collection containing a collection of guild users that can access this channel. Flattening the
|
/// Paged collection of users.
|
||||||
/// paginated response into a collection of users with
|
|
||||||
/// <see cref="AsyncEnumerableExtensions.FlattenAsync{T}"/> is required if you wish to access the users.
|
|
||||||
/// </returns>
|
/// </returns>
|
||||||
new IAsyncEnumerable<IReadOnlyCollection<IGuildUser>> GetUsersAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
|
new IAsyncEnumerable<IReadOnlyCollection<IGuildUser>> GetUsersAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -26,10 +26,14 @@ namespace Discord
|
|||||||
/// representing the parent of this channel; <c>null</c> if none is set.
|
/// representing the parent of this channel; <c>null</c> if none is set.
|
||||||
/// </returns>
|
/// </returns>
|
||||||
Task<ICategoryChannel> GetCategoryAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
|
Task<ICategoryChannel> GetCategoryAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Syncs the permissions of this nested channel with its parent's.
|
/// Syncs the permissions of this nested channel with its parent's.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <param name="options">The options to be used when sending the request.</param>
|
||||||
|
/// <returns>
|
||||||
|
/// A task that represents the asynchronous operation for syncing channel permissions with its parent's.
|
||||||
|
/// </returns>
|
||||||
Task SyncPermissionsAsync(RequestOptions options = null);
|
Task SyncPermissionsAsync(RequestOptions options = null);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -586,11 +586,11 @@ namespace Discord
|
|||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// This method requires you have an OAuth2 access token for the user, requested with the guilds.join scope, and that the bot have the MANAGE_INVITES permission in the guild.
|
/// This method requires you have an OAuth2 access token for the user, requested with the guilds.join scope, and that the bot have the MANAGE_INVITES permission in the guild.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
/// <param name="id">The snowflake identifier of the user.</param>
|
/// <param name="userId">The snowflake identifier of the user.</param>
|
||||||
/// <param name="accessToken">The OAuth2 access token for the user, requested with the guilds.join scope.</param>
|
/// <param name="accessToken">The OAuth2 access token for the user, requested with the guilds.join scope.</param>
|
||||||
/// <param name="func">The delegate containing the properties to be applied to the user upon being added to the guild.</param>
|
/// <param name="func">The delegate containing the properties to be applied to the user upon being added to the guild.</param>
|
||||||
/// <param name="options">The options to be used when sending the request.</param>
|
/// <param name="options">The options to be used when sending the request.</param>
|
||||||
/// <returns>A guild user associated with the specified <paramref name="id" />; <c>null</c> if the user is already in the guild.</returns>
|
/// <returns>A guild user associated with the specified <paramref name="userId" />; <c>null</c> if the user is already in the guild.</returns>
|
||||||
Task<IGuildUser> AddGuildUserAsync(ulong userId, string accessToken, Action<AddGuildUserProperties> func = null, RequestOptions options = null);
|
Task<IGuildUser> AddGuildUserAsync(ulong userId, string accessToken, Action<AddGuildUserProperties> func = null, RequestOptions options = null);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a collection of all users in this guild.
|
/// Gets a collection of all users in this guild.
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ namespace Discord
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <example>
|
/// <example>
|
||||||
/// The following example checks if the current user has the ability to send a message with attachment in
|
/// The following example checks if the current user has the ability to send a message with attachment in
|
||||||
/// this channel; if so, uploads a file via <see cref="IMessageChannel.SendFileAsync"/>.
|
/// this channel; if so, uploads a file via <see cref="IMessageChannel.SendFileAsync(string, string, bool, Embed, RequestOptions, bool)"/>.
|
||||||
/// <code language="cs">
|
/// <code language="cs">
|
||||||
/// if (currentUser?.GetPermissions(targetChannel)?.AttachFiles)
|
/// if (currentUser?.GetPermissions(targetChannel)?.AttachFiles)
|
||||||
/// await targetChannel.SendFileAsync("fortnite.png");
|
/// await targetChannel.SendFileAsync("fortnite.png");
|
||||||
|
|||||||
@@ -5,6 +5,11 @@ using System.Threading.Tasks;
|
|||||||
namespace Discord
|
namespace Discord
|
||||||
{
|
{
|
||||||
/// <summary> An extension class for squashing <see cref="IAsyncEnumerable{T}"/>. </summary>
|
/// <summary> An extension class for squashing <see cref="IAsyncEnumerable{T}"/>. </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// This set of extension methods will squash an <see cref="IAsyncEnumerable{T}"/> into a
|
||||||
|
/// single <see cref="IEnumerable{T}"/>. This is often associated with requests that has a
|
||||||
|
/// set limit when requesting.
|
||||||
|
/// </remarks>
|
||||||
public static class AsyncEnumerableExtensions
|
public static class AsyncEnumerableExtensions
|
||||||
{
|
{
|
||||||
/// <summary> Flattens the specified pages into one <see cref="IEnumerable{T}"/> asynchronously. </summary>
|
/// <summary> Flattens the specified pages into one <see cref="IEnumerable{T}"/> asynchronously. </summary>
|
||||||
|
|||||||
@@ -294,7 +294,6 @@ namespace Discord.Rest
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a collection of all text channels in this guild.
|
/// Gets a collection of all text channels in this guild.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="mode">The <see cref="CacheMode"/> that determines whether the object should be fetched from cache.</param>
|
|
||||||
/// <param name="options">The options to be used when sending the request.</param>
|
/// <param name="options">The options to be used when sending the request.</param>
|
||||||
/// <returns>
|
/// <returns>
|
||||||
/// A task that represents the asynchronous get operation. The task result contains a read-only collection of
|
/// A task that represents the asynchronous get operation. The task result contains a read-only collection of
|
||||||
|
|||||||
@@ -9,6 +9,11 @@ namespace Discord.WebSocket
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Represents a WebSocket-based news channel in a guild that has the same properties as a <see cref="SocketTextChannel"/>.
|
/// Represents a WebSocket-based news channel in a guild that has the same properties as a <see cref="SocketTextChannel"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// <note type="warning">
|
||||||
|
/// Most of the properties and methods featured may not be supported due to the nature of the channel.
|
||||||
|
/// </note>
|
||||||
|
/// </remarks>
|
||||||
[DebuggerDisplay(@"{DebuggerDisplay,nq}")]
|
[DebuggerDisplay(@"{DebuggerDisplay,nq}")]
|
||||||
public class SocketNewsChannel : SocketTextChannel
|
public class SocketNewsChannel : SocketTextChannel
|
||||||
{
|
{
|
||||||
@@ -22,31 +27,61 @@ namespace Discord.WebSocket
|
|||||||
entity.Update(state, model);
|
entity.Update(state, model);
|
||||||
return entity;
|
return entity;
|
||||||
}
|
}
|
||||||
|
/// <inheritdoc />
|
||||||
|
/// <remarks>
|
||||||
|
/// <note type="important">
|
||||||
|
/// This property is not supported by this type. Attempting to use this property will result in a <see cref="NotSupportedException"/>.
|
||||||
|
/// </note>
|
||||||
|
/// </remarks>
|
||||||
public override int SlowModeInterval
|
public override int SlowModeInterval
|
||||||
{
|
=> throw new NotSupportedException("News channels do not support Slow Mode.");
|
||||||
get { throw new NotSupportedException("News channels do not support Slow Mode."); }
|
/// <inheritdoc />
|
||||||
}
|
/// <remarks>
|
||||||
|
/// <note type="important">
|
||||||
|
/// This method is not supported by this type. Attempting to use this method will result in a <see cref="NotSupportedException"/>.
|
||||||
|
/// </note>
|
||||||
|
/// </remarks>
|
||||||
public override Task AddPermissionOverwriteAsync(IRole role, OverwritePermissions permissions, RequestOptions options = null)
|
public override Task AddPermissionOverwriteAsync(IRole role, OverwritePermissions permissions, RequestOptions options = null)
|
||||||
{
|
=> throw new NotSupportedException("News channels do not support Overwrite Permissions.");
|
||||||
throw new NotSupportedException("News channels do not support Overwrite Permissions.");
|
/// <inheritdoc />
|
||||||
}
|
/// <remarks>
|
||||||
|
/// <note type="important">
|
||||||
|
/// This method is not supported by this type. Attempting to use this method will result in a <see cref="NotSupportedException"/>.
|
||||||
|
/// </note>
|
||||||
|
/// </remarks>
|
||||||
public override Task AddPermissionOverwriteAsync(IUser user, OverwritePermissions permissions, RequestOptions options = null)
|
public override Task AddPermissionOverwriteAsync(IUser user, OverwritePermissions permissions, RequestOptions options = null)
|
||||||
{
|
=> throw new NotSupportedException("News channels do not support Overwrite Permissions.");
|
||||||
throw new NotSupportedException("News channels do not support Overwrite Permissions.");
|
/// <inheritdoc />
|
||||||
}
|
/// <remarks>
|
||||||
|
/// <note type="important">
|
||||||
|
/// This property is not supported by this type. Attempting to use this property will result in a <see cref="NotSupportedException"/>.
|
||||||
|
/// </note>
|
||||||
|
/// </remarks>
|
||||||
public override IReadOnlyCollection<Overwrite> PermissionOverwrites
|
public override IReadOnlyCollection<Overwrite> PermissionOverwrites
|
||||||
=> throw new NotSupportedException("News channels do not support Overwrite Permissions.");
|
=> throw new NotSupportedException("News channels do not support Overwrite Permissions.");
|
||||||
|
/// <inheritdoc />
|
||||||
|
/// <remarks>
|
||||||
|
/// <note type="important">
|
||||||
|
/// This method is not supported by this type. Attempting to use this method will result in a <see cref="NotSupportedException"/>.
|
||||||
|
/// </note>
|
||||||
|
/// </remarks>
|
||||||
public override Task SyncPermissionsAsync(RequestOptions options = null)
|
public override Task SyncPermissionsAsync(RequestOptions options = null)
|
||||||
{
|
=> throw new NotSupportedException("News channels do not support Overwrite Permissions.");
|
||||||
throw new NotSupportedException("News channels do not support Overwrite Permissions.");
|
/// <inheritdoc />
|
||||||
}
|
/// <remarks>
|
||||||
|
/// <note type="important">
|
||||||
|
/// This method is not supported by this type. Attempting to use this method will result in a <see cref="NotSupportedException"/>.
|
||||||
|
/// </note>
|
||||||
|
/// </remarks>
|
||||||
public override Task RemovePermissionOverwriteAsync(IRole role, RequestOptions options = null)
|
public override Task RemovePermissionOverwriteAsync(IRole role, RequestOptions options = null)
|
||||||
{
|
=> throw new NotSupportedException("News channels do not support Overwrite Permissions.");
|
||||||
throw new NotSupportedException("News channels do not support Overwrite Permissions.");
|
/// <inheritdoc />
|
||||||
}
|
/// <remarks>
|
||||||
|
/// <note type="important">
|
||||||
|
/// This method is not supported by this type. Attempting to use this method will result in a <see cref="NotSupportedException"/>.
|
||||||
|
/// </note>
|
||||||
|
/// </remarks>
|
||||||
public override Task RemovePermissionOverwriteAsync(IUser user, RequestOptions options = null)
|
public override Task RemovePermissionOverwriteAsync(IUser user, RequestOptions options = null)
|
||||||
{
|
=> throw new NotSupportedException("News channels do not support Overwrite Permissions.");
|
||||||
throw new NotSupportedException("News channels do not support Overwrite Permissions.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user