Browse Source

Rework project scaffolding and infrastructure

pull/1868/merge
FiniteReality 4 years ago
parent
commit
7e6a42375a
37 changed files with 2693 additions and 205 deletions
  1. +380
    -0
      .editorconfig
  2. +14
    -53
      .gitattributes
  3. +17
    -0
      .github/PULL_REQUEST_TEMPLATE.md
  4. +36
    -0
      .github/workflows/build.yml
  5. +245
    -24
      .gitignore
  6. +90
    -0
      Directory.Build.props
  7. +37
    -0
      Directory.Build.targets
  8. +54
    -35
      Discord.Net.sln
  9. +0
    -27
      Discord.Net.targets
  10. +0
    -3
      README.md
  11. +62
    -0
      docs/CONTRIBUTING.md
  12. +56
    -0
      docs/README.md
  13. +1445
    -0
      docs/marketing/logo/Logo.ai
  14. BIN
      docs/marketing/logo/PackageLogo.png
  15. +1
    -0
      docs/marketing/logo/SVG/Combinationmark White Background.svg
  16. +1
    -0
      docs/marketing/logo/SVG/Combinationmark White.svg
  17. +1
    -0
      docs/marketing/logo/SVG/Combinationmark.svg
  18. +1
    -0
      docs/marketing/logo/SVG/Logomark Full Black.svg
  19. +1
    -0
      docs/marketing/logo/SVG/Logomark Full Purple.svg
  20. +1
    -0
      docs/marketing/logo/SVG/Logomark Purple.svg
  21. +1
    -0
      docs/marketing/logo/SVG/Logomark White.svg
  22. +36
    -0
      samples/Directory.Build.props
  23. +25
    -0
      samples/Directory.Build.targets
  24. +16
    -0
      samples/PingPong/PingPong.csproj
  25. +22
    -0
      samples/PingPong/Program.cs
  26. +31
    -0
      src/Directory.Build.props
  27. +25
    -0
      src/Directory.Build.targets
  28. +0
    -10
      src/Discord.Net.Core/Discord.Net.Core.csproj
  29. +0
    -13
      src/Discord.Net.Rest/Discord.Net.Rest.csproj
  30. +0
    -14
      src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj
  31. +19
    -0
      src/Gateway/Discord.Net.Gateway.csproj
  32. +12
    -0
      src/Models/Discord.Net.Models.csproj
  33. +0
    -5
      stylecop.json
  34. +36
    -0
      test/Directory.Build.props
  35. +21
    -0
      test/Directory.Build.targets
  36. +7
    -0
      test/Gateway/Discord.Net.Gateway.UnitTests.csproj
  37. +0
    -21
      tests/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj

+ 380
- 0
.editorconfig View File

@@ -0,0 +1,380 @@
###############################################################################
# EditorConfig is awesome: http://EditorConfig.org
###############################################################################

###############################################################################
# Top-most EditorConfig file
###############################################################################
root = true

###############################################################################
# Set default behavior to:
# a UTF-8 encoding,
# Unix-style line endings,
# a newline ending the file,
# 4 space indentation, and
# trimming of trailing whitespace
###############################################################################
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true

###############################################################################
# Set file behavior to:
# 2 space indentation
###############################################################################
[*.{cmd,config,csproj,json,nuspec,props,ps1,resx,sh,targets,yml}]
indent_size = 2

###############################################################################
# Set file behavior to:
# Windows-style line endings, and
# tabular indentation
###############################################################################
[*.sln]
end_of_line = crlf
indent_style = tab

###############################################################################
# Set dotnet naming rules to:
# suggest async members be pascal case suffixed with Async
# suggest const declarations be pascal case
# suggest interfaces be pascal case prefixed with I
# suggest parameters be camel case
# suggest private and internal static fields be pascal case
# suggest private and internal fields be camel case and prefixed with underscore
# suggest public and protected declarations be pascal case
# suggest static readonly declarations be pascal case
# suggest type parameters be prefixed with T
###############################################################################
[*.cs]
dotnet_naming_rule.async_members_should_be_pascal_case_suffixed_with_async.severity = suggestion
dotnet_naming_rule.async_members_should_be_pascal_case_suffixed_with_async.style = pascal_case_suffixed_with_async
dotnet_naming_rule.async_members_should_be_pascal_case_suffixed_with_async.symbols = async_members

dotnet_naming_rule.const_declarations_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.const_declarations_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.const_declarations_should_be_pascal_case.symbols = const_declarations

dotnet_naming_rule.interfaces_should_be_pascal_case_prefixed_with_i.severity = suggestion
dotnet_naming_rule.interfaces_should_be_pascal_case_prefixed_with_i.style = pascal_case_prefixed_with_i
dotnet_naming_rule.interfaces_should_be_pascal_case_prefixed_with_i.symbols = interfaces

dotnet_naming_rule.parameters_should_be_camel_case.severity = suggestion
dotnet_naming_rule.parameters_should_be_camel_case.style = camel_case
dotnet_naming_rule.parameters_should_be_camel_case.symbols = parameters

dotnet_naming_rule.private_and_internal_static_fields_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.private_and_internal_static_fields_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.private_and_internal_static_fields_should_be_pascal_case.symbols = private_and_internal_static_fields

dotnet_naming_rule.private_and_internal_fields_should_be_camel_case_prefixed_with_underscore.severity = suggestion
dotnet_naming_rule.private_and_internal_fields_should_be_camel_case_prefixed_with_underscore.style = camel_case_prefixed_with_underscore
dotnet_naming_rule.private_and_internal_fields_should_be_camel_case_prefixed_with_underscore.symbols = private_and_internal_fields

dotnet_naming_rule.public_and_protected_declarations_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.public_and_protected_declarations_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.public_and_protected_declarations_should_be_pascal_case.symbols = public_and_protected_declarations

dotnet_naming_rule.static_readonly_declarations_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.static_readonly_declarations_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.static_readonly_declarations_should_be_pascal_case.symbols = static_readonly_declarations

dotnet_naming_rule.type_parameters_should_be_pascal_case_prefixed_with_t.severity = suggestion
dotnet_naming_rule.type_parameters_should_be_pascal_case_prefixed_with_t.style = pascal_case_prefixed_with_t
dotnet_naming_rule.type_parameters_should_be_pascal_case_prefixed_with_t.symbols = type_parameters

###############################################################################
# Set dotnet naming styles to define:
# camel case
# camel case prefixed with _
# camel case prefixed with s_
# pascal case
# pascal case suffixed with Async
# pascal case prefixed with I
# pascal case prefixed with T
###############################################################################
[*.cs]
dotnet_naming_style.camel_case.capitalization = camel_case

dotnet_naming_style.camel_case_prefixed_with_underscore.capitalization = camel_case
dotnet_naming_style.camel_case_prefixed_with_underscore.required_prefix = _

dotnet_naming_style.pascal_case.capitalization = pascal_case

dotnet_naming_style.pascal_case_suffixed_with_async.capitalization = pascal_case
dotnet_naming_style.pascal_case_suffixed_with_async.required_suffix = Async

dotnet_naming_style.pascal_case_prefixed_with_i.capitalization = pascal_case
dotnet_naming_style.pascal_case_prefixed_with_i.required_prefix = I

dotnet_naming_style.pascal_case_prefixed_with_t.capitalization = pascal_case
dotnet_naming_style.pascal_case_prefixed_with_t.required_prefix = T

###############################################################################
# Set dotnet naming symbols to:
# async members
# const declarations
# interfaces
# private and internal fields
# private and internal static fields
# public and protected declarations
# static readonly declarations
# type parameters
###############################################################################
[*.cs]
dotnet_naming_symbols.async_members.required_modifiers = async

dotnet_naming_symbols.const_declarations.required_modifiers = const

dotnet_naming_symbols.interfaces.applicable_kinds = interface

dotnet_naming_symbols.parameters.applicable_kinds = parameter

dotnet_naming_symbols.private_and_internal_fields.applicable_accessibilities = private, internal
dotnet_naming_symbols.private_and_internal_fields.applicable_kinds = field

dotnet_naming_symbols.private_and_internal_static_fields.applicable_accessibilities = private, internal
dotnet_naming_symbols.private_and_internal_static_fields.applicable_kinds = field
dotnet_naming_symbols.private_and_internal_static_fields.required_modifiers = static

dotnet_naming_symbols.public_and_protected_declarations.applicable_accessibilities = public, protected
dotnet_naming_symbols.public_and_protected_declarations.applicable_kinds = namespace, class, struct, enum, property, method, field, event, delegate, local_function

dotnet_naming_symbols.static_readonly_declarations.required_modifiers = static, readonly

dotnet_naming_symbols.type_parameters.applicable_kinds = type_parameter

###############################################################################
# Set dotnet sort options to:
# do not separate import directives into groups, and
# sort system directives first
###############################################################################
[*.cs]
dotnet_separate_import_directive_groups = false
dotnet_sort_system_directives_first = true

###############################################################################
# Set dotnet style options to:
# suggest null-coalescing expressions,
# suggest collection-initializers,
# suggest explicit tuple names,
# suggest null-propogation
# suggest object-initializers,
# suggest parentheses in arithmetic binary operators for clarity,
# suggest parentheses in other binary operators for clarity,
# don't suggest parentheses in other operators if unnecessary,
# suggest parentheses in relational binary operators for clarity,
# suggest predefined-types for locals, parameters, and members,
# suggest predefined-types of type names for member access,
# don't suggest auto properties,
# suggest compound assignment,
# suggest conditional expression over assignment,
# suggest conditional expression over return,
# suggest inferred anonymous types,
# suggest inferred tuple names,
# suggest 'is null' checks over '== null',
# don't suggest 'this.' and 'Me.' for events,
# don't suggest 'this.' and 'Me.' for fields,
# don't suggest 'this.' and 'Me.' for methods,
# don't suggest 'this.' and 'Me.' for properties,
# suggest readonly fields, and
# suggest specifying accessibility modifiers
###############################################################################
[*.cs]
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_object_initializer = true:suggestion

dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:suggestion
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:suggestion
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:suggestion
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:suggestion

dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
dotnet_style_predefined_type_for_member_access = true:suggestion

dotnet_style_prefer_auto_properties = false:suggestion
dotnet_style_prefer_compound_assignment = true:suggestion
dotnet_style_prefer_conditional_expression_over_assignment = true:suggestion
dotnet_style_prefer_conditional_expression_over_return = true:suggestion
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
dotnet_style_prefer_inferred_tuple_names = true:suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion

dotnet_style_qualification_for_event = false:suggestion
dotnet_style_qualification_for_field = false:suggestion
dotnet_style_qualification_for_method = false:suggestion
dotnet_style_qualification_for_property = false:suggestion

dotnet_style_readonly_field = true:suggestion
dotnet_style_require_accessibility_modifiers = always:suggestion

###############################################################################
# Set dotnet style options to:
# suggest removing all unused parameters
###############################################################################
[*.cs]
dotnet_code_quality_unused_parameters = all:suggestion

###############################################################################
# Set csharp indent options to:
# indent block contents,
# not indent braces,
# indent case contents,
# not indent case contents when block,
# indent labels one less than the current, and
# indent switch labels
###############################################################################
[*.cs]
csharp_indent_block_contents = true
csharp_indent_braces = false
csharp_indent_case_contents = true
csharp_indent_case_contents_when_block = false
csharp_indent_labels = one_less_than_current
csharp_indent_switch_labels = true

###############################################################################
# Set csharp new-line options to:
# insert a new-line before "catch",
# insert a new-line before "else",
# insert a new-line before "finally",
# insert a new-line before members in anonymous-types,
# insert a new-line before members in object-initializers,
# insert a new-line before all open braces except anonymous methods, anonymous types, lambdas, and object collections and
# insert a new-line within query expression clauses
###############################################################################
[*.cs]
csharp_new_line_before_catch = true
csharp_new_line_before_else = true
csharp_new_line_before_finally = true

csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_before_members_in_object_initializers = true

csharp_new_line_before_open_brace = accessors, control_blocks, events, indexers, local_functions, methods, object_collection_array_initializers, properties, types

csharp_new_line_within_query_expression_clauses = true

###############################################################################
# Set csharp preserve options to:
# preserve single-line blocks, and
# not preserve single-line statements
###############################################################################
[*.cs]
csharp_preserve_single_line_blocks = true
csharp_preserve_single_line_statements = false

###############################################################################
# Set csharp space options to:
# remove any space after a cast,
# add a space after the colon in an inheritance clause,
# add a space after a comma,
# remove any space after a dot,
# add a space after keywords in control flow statements,
# add a space after a semicolon in a "for" statement,
# add a space before and after binary operators,
# remove space around declaration statements,
# add a space before the colon in an inheritance clause,
# remove any space before a comma,
# remove any space before a dot,
# remove any space before an open square-bracket,
# remove any space before a semicolon in a "for" statement,
# remove any space between empty square-brackets,
# remove any space between a method call's empty parameter list parenthesis,
# remove any space between a method call's name and its opening parenthesis,
# remove any space between a method call's parameter list parenthesis,
# remove any space between a method declaration's empty parameter list parenthesis,
# remove any space between a method declaration's name and its openening parenthesis,
# remove any space between a method declaration's parameter list parenthesis,
# remove any space between parentheses, and
# remove any space between square brackets
###############################################################################
[*.cs]
csharp_space_after_cast = false
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_after_comma = true
csharp_space_after_dot = false
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_after_semicolon_in_for_statement = true

csharp_space_around_binary_operators = before_and_after
csharp_space_around_declaration_statements = do_not_ignore

csharp_space_before_colon_in_inheritance_clause = true
csharp_space_before_comma = false
csharp_space_before_dot = false
csharp_space_before_open_square_brackets = false
csharp_space_before_semicolon_in_for_statement = false

csharp_space_between_empty_square_brackets = false
csharp_space_between_method_call_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = false
csharp_space_between_square_brackets = false

###############################################################################
# Set csharp style options to:
# don't suggest braces,
# suggest simple default expressions,
# suggest a preferred modifier order,
# suggest conditional delegate calls,
# suggest deconstructed variable declarations,
# don't suggest expression-bodied accessors,
# don't suggest expression-bodied indexers,
# don't suggest expression-bodied constructors,
# suggest expression-bodied lambdas,
# don't suggest expression-bodied methods,
# don't suggest expression-bodied operators,
# don't suggest expression-bodied properties,
# suggest inlined variable declarations,
# suggest local over anonymous functions,
# suggest pattern-matching over "as" with "null" check,
# suggest pattern-matching over "is" with "cast" check,
# suggest throw expressions,
# suggest a discard variable for unused value expression statements,
# suggest a discard variable for unused assignments,
# suggest var for built-in types,
# suggest var when the type is not apparent, and
# suggest var when the type is apparent
###############################################################################
[*.cs]
csharp_prefer_braces = false:suggestion
csharp_prefer_simple_default_expression = true:suggestion
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion

csharp_style_conditional_delegate_call = true:suggestion
csharp_style_deconstructed_variable_declaration = true:suggestion

csharp_style_expression_bodied_accessors = when_on_single_line:suggestion
csharp_style_expression_bodied_constructors = false:suggestion
csharp_style_expression_bodied_indexers = when_on_single_line:suggestion
csharp_style_expression_bodied_lambdas = true:suggestion
csharp_style_expression_bodied_methods = when_on_single_line:suggestion
csharp_style_expression_bodied_operators = when_on_single_line:suggestion
csharp_style_expression_bodied_properties = when_on_single_line:suggestion

csharp_style_inlined_variable_declaration = true:suggestion

csharp_style_pattern_local_over_anonymous_function = true:suggestion
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion

csharp_style_throw_expression = true:suggestion

csharp_style_unused_value_expression_statement_preference = discard_variable:suggestion
csharp_style_unused_value_assignment_preference = discard_variable:suggestion

csharp_style_var_for_built_in_types = true:none
csharp_style_var_elsewhere = true:suggestion
csharp_style_var_when_type_is_apparent = true:suggestion

+ 14
- 53
.gitattributes View File

@@ -1,63 +1,24 @@
###############################################################################
# Set default behavior to automatically normalize line endings.
# Default to Unix-style text files
###############################################################################
* text=auto
* text eol=lf

###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
# Treat code and markdown as Unix-style text files
###############################################################################
#*.cs diff=csharp
*.cs text eol=lf
*.csproj text eol=lf
*.md text eol=lf
*.props text eol=lf
*.targets text eol=lf

###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln merge=binary
#*.csproj merge=binary
#*.vbproj merge=binary
#*.vcxproj merge=binary
#*.vcproj merge=binary
#*.dbproj merge=binary
#*.fsproj merge=binary
#*.lsproj merge=binary
#*.wixproj merge=binary
#*.modelproj merge=binary
#*.sqlproj merge=binary
#*.wwaproj merge=binary

###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
# Treat Solution files as Windows text files
###############################################################################
#*.jpg binary
#*.png binary
#*.gif binary
*.sln text eol=crlf

###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc diff=astextplain
#*.DOC diff=astextplain
#*.docx diff=astextplain
#*.DOCX diff=astextplain
#*.dot diff=astextplain
#*.DOT diff=astextplain
#*.pdf diff=astextplain
#*.PDF diff=astextplain
#*.rtf diff=astextplain
#*.RTF diff=astextplain
# Treat images as binary files
###############################################################################
*.png binary
*.ai binary

+ 17
- 0
.github/PULL_REQUEST_TEMPLATE.md View File

@@ -0,0 +1,17 @@
Thanks in advance for your contribution to Discord.Net!

Before opening a pull request, please consider the following:

Does your changeset adhere to the Contributing Guidelines?

Does your changeset address a specific issue or idea? If not, please
break your changes up into multiple requests.

Have your changes been previously discussed with other members
of the community? We prefer new features to be vetted through
an issue or a discussion in our Discord channel first; bug-fixes
and other small changes are generally fine without prior vetting.

Please remove this section, and include a summary of your changes
below.
---

+ 36
- 0
.github/workflows/build.yml View File

@@ -0,0 +1,36 @@
name: Build using .NET Core

on:
push:
branches: [ 3.0 ]
paths-ignore:
- 'docs/**'

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.202

- name: Install dependencies
run: dotnet restore

- name: Build Discord.Net
run: dotnet build --no-restore --configuration Release

- name: Run Unit Tests
run: dotnet test --no-build --configuration Release

- name: Pack Discord.Net
run: dotnet pack --no-build --configuration Release

- name: Upload Artifacts
uses: actions/upload-artifact@v1.0.0
with:
name: nupkgs
path: ${{ github.workspace }}/artifacts/pkg/

+ 245
- 24
.gitignore View File

@@ -1,7 +1,10 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
@@ -10,18 +13,30 @@
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Mono auto generated files
mono_crash.*

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
build/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/

# Visual Studo 2015 cache/options directory
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# Visual Studio 2017 auto generated files
Generated\ Files/

# MSTest test Results
[Tt]est[Rr]esult*/
@@ -36,14 +51,28 @@ TestResult.xml
[Rr]eleasePS/
dlldata.c

# Benchmark Results
BenchmarkDotNet.Artifacts/

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/

# StyleCop
StyleCopReport.xml

# Files built by Visual Studio
*_i.c
*_p.c
*_i.h
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
@@ -53,6 +82,7 @@ dlldata.c
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
@@ -68,14 +98,21 @@ _Chutzpah*
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# Visual Studio Trace Files
*.e2e

# TFS 2012 Local Workspace
$tf/
@@ -88,7 +125,7 @@ _ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding addin-in
# JustCode is a .NET coding add-in
.JustCode

# TeamCity is a build add-in
@@ -97,9 +134,18 @@ _TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover

# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
@@ -127,38 +173,69 @@ publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Windows Azure Build Output
# Microsoft Azure Build Output
csx/
*.build.csdef

# Windows Store app package directory
# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/

# Others
*.[Cc]ache
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
node_modules/
bower_components/
orleans.codegen.cs

# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/
@@ -170,21 +247,30 @@ _UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak

# SQL Server files
*.mdf
*.ldf
*.ndf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- Backup*.rdl

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Visual Studio 6 build log
*.plg
@@ -192,17 +278,152 @@ FakesAssemblies/
# Visual Studio 6 workspace options file
*.opt

#Custom
project.lock.json
/test/Discord.Net.Tests/config.json
/test/Discord.Net.Tests/cache.db*
/docs/_build
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# CodeRush personal settings
.cr/personal

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
/.editorconfig
.vscode/
docs/api/\.manifest

\.idea/
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config

# Tabs Studio
*.tss

# Telerik's JustMock configuration file
*.jmconfig

# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs

# OpenCover UI analysis results
OpenCover/

# Azure Stream Analytics local run output
ASALocalRun/

# Codealike UID
codealike.json
# MSBuild Binary and Structured Log
*.binlog

# NVidia Nsight GPU debugger configuration file
*.nvuser

# MFractors (Xamarin productivity tool) working folder
.mfractor/

# Local History for Visual Studio
.localhistory/

# BeatPulse healthcheck temp database
healthchecksdb

# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/

##
## Visual studio for Mac
##


# globs
Makefile.in
*.userprefs
*.usertasks
config.make
config.status
aclocal.m4
install-sh
autom4te.cache/
*.tar.gz
tarballs/
test-results/

# Mac bundle stuff
*.dmg
*.app

# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore
# General
.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two \r
Icon


# Thumbnails
._*

# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore
# Windows thumbnail cache files
Thumbs.db
ehthumbs.db
ehthumbs_vista.db

# Dump file
*.stackdump

# Folder config file
[Dd]esktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp

# Windows shortcuts
*.lnk

# JetBrains Rider
.idea/
*.sln.iml

##
## Visual Studio Code
##
.vscode/*

+ 90
- 0
Directory.Build.props View File

@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Based on https://github.com/terrafx/terrafx/blob/master/Directory.Build.props -->
<!-- Copyright © Tanner Gooding and Contributors -->
<Project>

<!--
Directory.Build.props is automatically picked up and imported by
Microsoft.Common.props. This file needs to exist, even if empty so that
files in the parent directory tree, with the same name, are not imported
instead. The import fairly early and only Sdk.props will have been imported
beforehand. We also don't need to add ourselves to MSBuildAllProjects, as
that is done by the file that imports us.
-->

<!-- Settings used for versioning -->
<PropertyGroup>
<PullRequestNumber Condition="$(GITHUB_REF.StartsWith('refs/pull'))">$([System.String]::Copy('$(GITHUB_REF)').Replace('refs/pull/', '').Replace('/merge', ''))</PullRequestNumber>
</PropertyGroup>

<!-- Default settings that are used by other settings -->
<PropertyGroup>
<BaseArtifactsPath>$(MSBuildThisFileDirectory)artifacts/</BaseArtifactsPath>
<BaseArtifactsPathSuffix>$(DiscordNetProjectCategory)/$(MSBuildProjectName)</BaseArtifactsPathSuffix>
<RepositoryUrl>https://github.com/discord-net/Discord.Net</RepositoryUrl>
</PropertyGroup>

<!-- Default settings that explicitly differ from the Sdk.props defaults -->
<PropertyGroup>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<BaseIntermediateOutputPath>$(BaseArtifactsPath)obj/$(BaseArtifactsPathSuffix)/</BaseIntermediateOutputPath>
<DebugType>embedded</DebugType>
<EnableDefaultNoneItems>false</EnableDefaultNoneItems>
<Nullable>enable</Nullable>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<SuppressNETCoreSdkPreviewMessage>true</SuppressNETCoreSdkPreviewMessage>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
</PropertyGroup>

<!-- Default settings that explicitly differ from the Sdk.targets defaults-->
<PropertyGroup>
<Authors>Discord.Net Contributors</Authors>
<BaseOutputPath>$(BaseArtifactsPath)bin/$(BaseArtifactsPathSuffix)/</BaseOutputPath>
<Company>Discord-Net</Company>
<PackageOutputPath Condition="'$(PlatformName)' == 'AnyCPU'">$(BaseArtifactsPath)pkg/$(Configuration)</PackageOutputPath>
<PackageOutputPath Condition="'$(PlatformName)' != 'AnyCPU'">$(BaseArtifactsPath)pkg/$(Configuration)</PackageOutputPath>
<Product>Discord.Net</Product>
<VersionPrefix>3.0.0</VersionPrefix>
<VersionSuffix>alpha</VersionSuffix>
<VersionSuffix Condition="'$(PullRequestNumber)' != ''">pr$(PullRequestNumber)</VersionSuffix>
</PropertyGroup>

<!-- Default settings that are otherwise undefined -->
<PropertyGroup>
<Copyright>Copyright © Discord.Net Contributors.</Copyright>
<Description>An asynchronous API wrapper for Discord.</Description>
<Features>strict</Features>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<HighEntropyVA>true</HighEntropyVA>
<LangVersion>preview</LangVersion>
<MinClientVersion>4.3</MinClientVersion>
<NeutralLanguage>en-US</NeutralLanguage>
<OverwriteReadOnlyFiles>true</OverwriteReadOnlyFiles>
<PackageIcon>PackageLogo.png</PackageIcon>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageProjectUrl>$(RepositoryUrl)</PackageProjectUrl>
<ProduceReferenceAssembly>true</ProduceReferenceAssembly>
<PackageTags Condition="'$(PackageTags)' != ''">$(PackageTags);discord;discordapp</PackageTags>
<PackageTags Condition="'$(PackageTags)' == ''">discord;discordapp</PackageTags>
<RepositoryType>git</RepositoryType>
<RestoreSources>
https://api.nuget.org/v3/index.json
</RestoreSources>
<UseSharedCompilation>true</UseSharedCompilation>
</PropertyGroup>

<!-- Package icons -->
<ItemGroup>
<None Include="$(MSBuildThisFileDirectory)/docs/marketing/logo/PackageLogo.png" Pack="True" PackagePath="" />
</ItemGroup>

<!-- Package references which are consumed by all .NET projects -->
<ItemGroup>
<PackageReference Include="Microsoft.Net.Compilers.Toolset" IsImplicitlyDefined="true" PrivateAssets="all" />
</ItemGroup>

</Project>

+ 37
- 0
Directory.Build.targets View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Based on https://github.com/terrafx/terrafx/blob/master/Directory.Build.props -->
<!-- Copyright © Tanner Gooding and Contributors -->
<Project>

<!--
Directory.Build.targets is automatically picked up and imported by
Microsoft.Common.targets. This file needs to exist, even if empty so that
files in the parent directory tree, with the same name, are not imported
instead. The import fairly late and most other props/targets will have been
imported beforehand. We also don't need to add ourselves to
MSBuildAllProjects, as that is done by the file that imports us.
-->

<!-- Settings that append the existing setting value -->
<PropertyGroup>
<DefineConstants>$(DefineConstants);$(OS)</DefineConstants>
<NoWarn>$(NoWarn);NU5105</NoWarn>
<PackageVersion Condition="'$(GITHUB_RUN_ID)' != ''">$(Version).$(GITHUB_RUN_ID)</PackageVersion>
</PropertyGroup>

<!-- Package versions for package references across all projects -->
<ItemGroup>
<PackageReference Update="coverlet.collector" Version="3.0.3" />
<PackageReference Update="Microsoft.Net.Compilers.Toolset" Version="3.6.0-2.final" />
<PackageReference Update="Microsoft.NET.Test.Sdk" Version="16.5.0" />
<PackageReference Update="Microsoft.Extensions.Hosting.Abstractions" Version="5.0.0" />
<PackageReference Update="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0" />
<PackageReference Update="Microsoft.Extensions.Hosting" Version="5.0.0" />
<PackageReference Update="Microsoft.Extensions.Options" Version="5.0.0" />
<PackageReference Update="Microsoft.SourceLink.GitHub" Version="1.0.0" />
<PackageReference Update="System.IO.Pipelines" Version="5.0.0" />
<PackageReference Update="xunit" Version="2.4.1" />
<PackageReference Update="xunit.runner.visualstudio" Version="2.4.1" />
</ItemGroup>

</Project>

+ 54
- 35
Discord.Net.sln View File

@@ -1,54 +1,73 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.31229.75
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Net.Core", "src\Discord.Net.Core\Discord.Net.Core.csproj", "{4E7A2251-D582-4093-95A5-2FF450DCCD3F}"
# Visual Studio 15
VisualStudioVersion = 15.0.26124.0
MinimumVisualStudioVersion = 15.0.26124.0
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{CD5CFA4B-143E-4495-8BFD-AF419226CBE5}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Implementations", "Implementations", "{ADF3F58A-948A-4ABC-B5AA-07271B341695}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Net.Gateway", "src\Gateway\Discord.Net.Gateway.csproj", "{DAF502E3-CFE6-4243-8049-9A6157F42111}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Rest", "src\Discord.Net.Rest\Discord.Net.Rest.csproj", "{009A57F3-3BF2-4B28-8A61-CEA8108EB8B8}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{6D7B7A29-83FE-44F2-85E1-7D44B061EA27}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.WebSocket", "src\Discord.Net.WebSocket\Discord.Net.WebSocket.csproj", "{857DD396-D71D-4E85-B83B-F26599B2FB76}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PingPong", "samples\PingPong\PingPong.csproj", "{54A6E396-5186-4D79-893B-6EFD1CF658CB}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{7EE9C2BE-991C-4CA8-9FD3-5DAE26D911E2}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{A47FC28E-1835-46C3-AFD5-7C048A43C157}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{E736282C-715C-4CBE-8EEF-E56BC6BA4F06}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Tests.Unit", "tests\Discord.Net.Tests.Unit\Discord.Net.Tests.Unit.csproj", "{EB2B832A-2023-4B97-9011-AE412C8D2208}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Net.Gateway.UnitTests", "test\Gateway\Discord.Net.Gateway.UnitTests.csproj", "{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{4E7A2251-D582-4093-95A5-2FF450DCCD3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4E7A2251-D582-4093-95A5-2FF450DCCD3F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4E7A2251-D582-4093-95A5-2FF450DCCD3F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4E7A2251-D582-4093-95A5-2FF450DCCD3F}.Release|Any CPU.Build.0 = Release|Any CPU
{009A57F3-3BF2-4B28-8A61-CEA8108EB8B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{009A57F3-3BF2-4B28-8A61-CEA8108EB8B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{009A57F3-3BF2-4B28-8A61-CEA8108EB8B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{009A57F3-3BF2-4B28-8A61-CEA8108EB8B8}.Release|Any CPU.Build.0 = Release|Any CPU
{857DD396-D71D-4E85-B83B-F26599B2FB76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{857DD396-D71D-4E85-B83B-F26599B2FB76}.Debug|Any CPU.Build.0 = Debug|Any CPU
{857DD396-D71D-4E85-B83B-F26599B2FB76}.Release|Any CPU.ActiveCfg = Release|Any CPU
{857DD396-D71D-4E85-B83B-F26599B2FB76}.Release|Any CPU.Build.0 = Release|Any CPU
{EB2B832A-2023-4B97-9011-AE412C8D2208}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EB2B832A-2023-4B97-9011-AE412C8D2208}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EB2B832A-2023-4B97-9011-AE412C8D2208}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EB2B832A-2023-4B97-9011-AE412C8D2208}.Release|Any CPU.Build.0 = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{009A57F3-3BF2-4B28-8A61-CEA8108EB8B8} = {ADF3F58A-948A-4ABC-B5AA-07271B341695}
{857DD396-D71D-4E85-B83B-F26599B2FB76} = {ADF3F58A-948A-4ABC-B5AA-07271B341695}
{EB2B832A-2023-4B97-9011-AE412C8D2208} = {7EE9C2BE-991C-4CA8-9FD3-5DAE26D911E2}
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Debug|x64.ActiveCfg = Debug|Any CPU
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Debug|x64.Build.0 = Debug|Any CPU
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Debug|x86.ActiveCfg = Debug|Any CPU
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Debug|x86.Build.0 = Debug|Any CPU
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Release|Any CPU.Build.0 = Release|Any CPU
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Release|x64.ActiveCfg = Release|Any CPU
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Release|x64.Build.0 = Release|Any CPU
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Release|x86.ActiveCfg = Release|Any CPU
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Release|x86.Build.0 = Release|Any CPU
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Debug|x64.ActiveCfg = Debug|Any CPU
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Debug|x64.Build.0 = Debug|Any CPU
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Debug|x86.ActiveCfg = Debug|Any CPU
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Debug|x86.Build.0 = Debug|Any CPU
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Release|Any CPU.Build.0 = Release|Any CPU
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Release|x64.ActiveCfg = Release|Any CPU
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Release|x64.Build.0 = Release|Any CPU
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Release|x86.ActiveCfg = Release|Any CPU
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Release|x86.Build.0 = Release|Any CPU
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Debug|x64.ActiveCfg = Debug|Any CPU
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Debug|x64.Build.0 = Debug|Any CPU
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Debug|x86.ActiveCfg = Debug|Any CPU
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Debug|x86.Build.0 = Debug|Any CPU
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Release|Any CPU.Build.0 = Release|Any CPU
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Release|x64.ActiveCfg = Release|Any CPU
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Release|x64.Build.0 = Release|Any CPU
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Release|x86.ActiveCfg = Release|Any CPU
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {B7EDDAFF-0E67-4853-B8BB-49134E9950D7}
GlobalSection(NestedProjects) = preSolution
{DAF502E3-CFE6-4243-8049-9A6157F42111} = {CD5CFA4B-143E-4495-8BFD-AF419226CBE5}
{54A6E396-5186-4D79-893B-6EFD1CF658CB} = {6D7B7A29-83FE-44F2-85E1-7D44B061EA27}
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D} = {A47FC28E-1835-46C3-AFD5-7C048A43C157}
EndGlobalSection
EndGlobal

+ 0
- 27
Discord.Net.targets View File

@@ -1,27 +0,0 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<VersionPrefix>3.0.0</VersionPrefix>
<VersionSuffix>alpha</VersionSuffix>
<LangVersion>latest</LangVersion>
<Authors>Discord.Net Contributors</Authors>
<PackageTags>discord;discordapp</PackageTags>
<PackageProjectUrl>https://github.com/discord-net/Discord.Net</PackageProjectUrl>
<PackageLicenseUrl>http://opensource.org/licenses/MIT</PackageLicenseUrl>
<PackageIconUrl>https://github.com/discord-net/Discord.Net/raw/3.0/docs/marketing/logo/PackageLogo.png</PackageIconUrl>
<RepositoryType>git</RepositoryType>
<RepositoryUrl>git://github.com/discord-net/Discord.Net</RepositoryUrl>
</PropertyGroup>
<PropertyGroup Condition=" '$(BuildNumber)' == '' ">
<VersionSuffix Condition=" '$(VersionSuffix)' != ''">$(VersionSuffix)-alpha</VersionSuffix>
<VersionSuffix Condition=" '$(VersionSuffix)' == ''">alpha</VersionSuffix>
</PropertyGroup>
<PropertyGroup Condition=" '$(BuildNumber)' != '' And $(IsTagBuild) != 'true' ">
<VersionSuffix Condition=" '$(VersionSuffix)' != '' ">$(VersionSuffix)-$(BuildNumber)</VersionSuffix>
<VersionSuffix Condition=" '$(VersionSuffix)' == '' ">build-$(BuildNumber)</VersionSuffix>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<NoWarn>$(NoWarn);CS1573;CS1591</NoWarn>
<WarningsAsErrors>true</WarningsAsErrors>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
</Project>

+ 0
- 3
README.md View File

@@ -1,3 +0,0 @@
# Discord.Net

An unofficial .NET API Wrapper for the Discord client (https://discord.com).

+ 62
- 0
docs/CONTRIBUTING.md View File

@@ -0,0 +1,62 @@
# Contributing

Discord.Net is an open-source project, and we appreciate any and all
contributions made by our community. However, please conform to the
following guidelines when possible:

## Development Cycle

We prefer all changes to the library to be discussed beforehand,
either in a GitHub issue, or in a discussion in our Discord channel
with library regulars or other contributors.

Issues that are tagged as "up for grabs" are free to be picked up by
any member of the community.

### Pull Requests

We prefer pull-requests that are descriptive of the changes being made
and highlight any potential benefits/drawbacks of the change, but these
types of write-ups are not required. See this [merge request](https://github.com/RogueException/Discord.Net/pull/793)
for an example of a well-written description.

## Semantic Versioning

This project follows [Semantic Versioning](http://semver.org/). When
writing changes to this project, it is recommended to write changes
that are SemVer compliant with the latest version of the library in
development.

The working release should be the latest build off of the `dev` branch,
but can also be found on the [development board](https://github.com/RogueException/Discord.Net/projects/1).

We follow the .NET Foundation's [Breaking Change Rules](https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/breaking-change-rules.md)
when determining the SemVer compliance of a change.

Obsoleting a method is considered a **minor** increment.

## Coding Style

We attempt to conform to the .NET Foundation's [Coding Style](https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/coding-style.md)
where possible.

As a general rule, follow the coding style already set in the file you
are editing, or look at a similar file if you are adding a new one.

### Documentation Style for Members

When creating a new public member, the member must be annotated with sufficient documentation. This should include the
following, but not limited to:

* `<summary>` summarizing the purpose of the method.
* `<param>` or `<typeparam>` explaining the parameter.
* `<return>` explaining the type of the returned member and what it is.
* `<exception>` if the method directly throws an exception.

The length of the documentation should also follow the ruler as suggested by our
[Visual Studio Code workspace](Discord.Net.code-workspace).

#### Recommended Reads

* [Official Microsoft Documentation](https://docs.microsoft.com)
* [Sandcastle User Manual](https://ewsoftware.github.io/XMLCommentsGuide/html/4268757F-CE8D-4E6D-8502-4F7F2E22DDA3.htm)

+ 56
- 0
docs/README.md View File

@@ -0,0 +1,56 @@
# Discord.Net #

[![Discord](https://discordapp.com/api/guilds/81384788765712384/widget.png)](https://discord.gg/discord-api)

An unofficial .NET library for the [Discord API](https://discordapp.com/).

## Installation ##

Our stable builds available from NuGet through the Discord.Net metapackage:
[Discord.Net](https://www.nuget.org/packages/Discord.Net/)

Unstable "nightly" builds are available through our MyGet feed:
`https://www.myget.org/F/discord-net/api/v3/index.json`

## Building ##

At minimum, .NET Core 2.1 is required to successfully build Discord.Net,
but .NET Core 3.1 is recommended. You should install the appropriate tools and
components for your editor to open the Discord.Net solution file:

- The .NET Core workload for Visual Studio
- The C# build tools for Visual Studio Code
- The .NET Core SDK for command line

### Versioning ###

As a rule, Discord.Net attempts to follow
[Semantic Versioning](https://semver.org). This means `MAJOR.MINOR.PATCH`
versioning.

However, as Discord evolves and adds or changes existing endpoints, we may need
to add code to support these changes. To do this, we increment the minor version
when adding new API surfaces to the library. To counter any inevitable breaking
changes, we have decided that our public interfaces should be for
*consumption only* - bot developers should not need to implement these
interfaces for normal code.

Additionally, as the Discord API changes, we may need to add, remove, or change
parameters to certain methods. To ensure this breaks as little code as
possible, we use the following approach to deprecate old APIs and redirect
users to new APIs, while retaining binary compatibility:

```cs
// OLD API
[Obsolete("This API has been superseded by GetUserAsync.", false)]
[EditorBrowsable(EditorBrowsableState.Never)]
public ValueTask<IUser> GetUserAsync(ulong userId)
=> GetUserAsync(userId, "default");

// NEW API
public ValueTask<IUser> GetUserAsync(ulong userId,
string additionalParameter = "default");
```

These obsolete methods will be removed in the next major version, and will be
clearly documented in our change logs.

+ 1445
- 0
docs/marketing/logo/Logo.ai
File diff suppressed because it is too large
View File


BIN
docs/marketing/logo/PackageLogo.png View File

Before After
Width: 462  |  Height: 477  |  Size: 12 kB

+ 1
- 0
docs/marketing/logo/SVG/Combinationmark White Background.svg View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 950.73 234.2"><defs><style>.cls-1{fill:#fff;}.cls-2{fill:#939;}</style></defs><title>Combinationmark White Background</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M245.7,234.2a4.94,4.94,0,0,1-3.73-1.57,5.07,5.07,0,0,1-1.54-3.74,5.24,5.24,0,0,1,1.54-3.8,5,5,0,0,1,3.73-1.57,5.15,5.15,0,0,1,3.81,1.57,5.31,5.31,0,0,1,1.57,3.8,5.36,5.36,0,0,1-5.38,5.31Z"/><path class="cls-1" d="M319.73,232.59h-9.68l-35.21-53.74a23.29,23.29,0,0,1-2.21-4.26h-.28a69.84,69.84,0,0,1,.38,9.29v48.71h-8v-68H275.1L309.25,218c1.44,2.23,2.35,3.74,2.76,4.55h.19a72.94,72.94,0,0,1-.47-10v-48h8Z"/><path class="cls-1" d="M373.73,232.59h-36v-68h35v7h-27v23h25v7h-25v24h28Z"/><path class="cls-1" d="M427.73,171.59h-20v62h-8v-62h-19v-7h47Z"/><path d="M311.83,8.59h-47.1V62.05l31,28.44V38.59h17.39c10.45,0,15.61,5.19,15.61,13.31V91c0,8.13-4.88,13.59-15.61,13.59H265.73v29h46.1c24.71.14,47.9-12.3,47.9-41.11V50.4C359.73,21.32,336.54,8.59,311.83,8.59Zm241.9,84.18V50.34c0-15.3,27.28-18.88,35.55-3.45l25.21-10.33c-9.78-21.91-28-28.38-43-28.38-24.52,0-48.77,14.32-48.77,42.16V92.77c0,28,24.25,42.16,48.22,42.16,15.43,0,33.89-7.71,44.09-27.69L588,94.7c-6.62,17.08-34.31,13-34.31-1.93ZM469.79,55.94c-9.62-2.1-16-5.58-16.46-11.58.56-14.5,22.73-14.92,35.7-1.11l20.5-15.9C496.7,11.59,482.2,7.41,467.14,7.41c-22.73,0-44.76,12.83-44.76,37.37,0,23.85,18.12,36.53,38.06,39.6,10.18,1.4,21.48,5.44,21.2,12.55-.84,13.39-28.17,12.69-40.58-2.51L421.4,113.11C433,128,448.73,135.7,463.51,135.7c22.73,0,48-13.25,49-37.37,1.39-30.68-20.64-38.35-42.67-42.39Zm-93.06,77.65h31V8.59h-31ZM903,8.59H856.73V62.05l31,28.44V38.59h16.39c10.45,0,15.61,5.19,15.61,13.31V91c0,8.13-4.88,13.59-15.61,13.59H856.73v29h46.1c24.71.14,47.9-12.3,47.9-41.11V50.4C950.87,21.32,927.68,8.59,903,8.59ZM676.09,7.18c-25.75,0-51.36,14.13-51.36,43V93c0,28.68,25.75,43,51.64,43s51.36-14.28,51.36-43V50.14C727.73,21.45,701.84,7.18,676.09,7.18Zm19.64,85.7c0,8.92-10,13.52-19.93,13.52s-20.07-4.46-20.07-13.52V50.23c0-9.2,9.76-14.08,19.51-14.08,10.18,0,20.49,4.46,20.49,14.08V92.88ZM839.35,50.37C838.65,21.24,819,9.59,793.58,9.59H743.73v125h32v-41h5.63l29,40h38.4L815.21,91C830.19,86.29,839.35,73.39,839.35,50.37Zm-45.5,16.22H775.73v-28h18.12c19.49,0,19.49,28,0,28Z"/><path class="cls-1" d="M42.28.1,186.2,13.67a22.18,22.18,0,0,1,19.93,24.21l-13.7,145.2a22.16,22.16,0,0,1-24.1,20L46.53,191.64l7.57-19.33-15,11.49L25,194.6,0,212.83,18.17,20.15A22.17,22.17,0,0,1,42.28.1Z"/><rect class="cls-2" x="88.38" y="-17.52" width="12.85" height="107.11" rx="4.91" transform="translate(49 126.52) rotate(-83.96)"/><rect class="cls-2" x="122.07" y="16.17" width="12.85" height="107.11" rx="4.91" transform="translate(45.64 190.18) rotate(-83.96)"/><rect class="cls-2" x="78.32" y="77.57" width="12.85" height="107.11" rx="4.91" transform="translate(-54.57 201.6) rotate(-83.96)"/><rect class="cls-2" x="118.83" y="46.87" width="12.85" height="107.11" rx="4.91" transform="translate(12.2 214.42) rotate(-83.96)"/></g></g></svg>

+ 1
- 0
docs/marketing/logo/SVG/Combinationmark White.svg View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 951.34 234.2"><defs><style>.cls-1{fill:#68217a;}.cls-2{fill:#fff;}.cls-3{fill:#939;}</style></defs><title>Combinationmark White</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M245.7,234.2a4.94,4.94,0,0,1-3.73-1.57,5.07,5.07,0,0,1-1.54-3.74,5.24,5.24,0,0,1,1.54-3.8,5,5,0,0,1,3.73-1.57,5.15,5.15,0,0,1,3.81,1.57,5.31,5.31,0,0,1,1.57,3.8,5.36,5.36,0,0,1-5.38,5.31Z"/><path class="cls-1" d="M320.34,233.26h-9.68l-35.21-54.67a23.56,23.56,0,0,1-2.21-4.33H273a72.21,72.21,0,0,1,.38,9.45v49.55h-8v-68h10.37l34.15,53.45c1.44,2.23,2.35,3.74,2.76,4.55h.19a71.32,71.32,0,0,1-.47-10v-48h8Z"/><path class="cls-1" d="M374.34,233.26h-36v-68h35v7h-27v23h25v7h-25v24h28Z"/><path class="cls-1" d="M427.34,172.26h-19v61h-8v-61h-20v-7h47Z"/><path class="cls-2" d="M311.44,9.26h-46.1V60.94l31,27.49V38.26h16.39c10.45,0,15.61,5.19,15.61,13.31v39.1c0,8.13-4.88,13.59-15.61,13.59H265.34v30h46.1c24.71.14,47.9-12.3,47.9-41.11V51.07C359.34,22,336.15,9.26,311.44,9.26Zm242.9,83.51V50.34c0-15.3,27.28-18.88,35.54-3.45L615.1,36.56c-9.78-21.91-28-28.38-43-28.38-24.52,0-48.77,14.32-48.77,42.16V92.77c0,28,24.25,42.16,48.22,42.16,15.43,0,33.89-7.71,44.09-27.69l-27-12.54c-6.61,17.08-34.3,13-34.3-1.93ZM469.79,55.94c-9.62-2.1-16-5.58-16.46-11.58.56-14.5,22.73-14.92,35.7-1.11l20.5-15.9C496.7,11.59,482.2,7.41,467.14,7.41c-22.73,0-44.76,12.83-44.76,37.37,0,23.85,18.12,36.53,38.06,39.6,10.18,1.4,21.48,5.44,21.2,12.55-.84,13.39-28.17,12.69-40.58-2.51L421.4,113.11C433,128,448.73,135.7,463.51,135.7c22.73,0,48-13.25,49-37.37,1.39-30.68-20.64-38.35-42.67-42.39Zm-93.45,78.32h31V9.26h-31Zm527.23-125H856.34V60.94l31,27.49V38.26H904c10.28,0,15.36,5.19,15.36,13.31v39.1c0,8.13-4.8,13.59-15.36,13.59H857.34v30h46.1c24.71.14,47.9-12.3,47.9-41.11V51.07C951.48,22,928.29,9.26,903.57,9.26ZM675.7,7.18c-25.75,0-51.36,14.13-51.36,43V93c0,28.68,25.75,43,51.64,43s51.36-14.28,51.36-43V50.14C727.34,21.45,701.45,7.18,675.7,7.18Zm20.64,85.7c0,8.92-10,13.52-19.93,13.52s-20.07-4.46-20.07-13.52V50.23c0-9.2,9.75-14.08,19.51-14.08,10.17,0,20.49,4.46,20.49,14.08V92.88ZM839.49,50.37C838.79,21,818.94,9.26,793.35,9.26h-50v125h32v-40H781l29,40h39L815.16,91.34C830.27,86.58,839.49,73.58,839.49,50.37Zm-46,16.89H775.34v-28h18.12c19.49,0,19.49,28,0,28Z"/><path class="cls-1" d="M42.28.1,186.2,13.67a22.18,22.18,0,0,1,19.93,24.21l-13.7,145.2a22.16,22.16,0,0,1-24.1,20L46.53,191.64l7.57-19.33-15,11.49L25,194.6,0,212.83,18.17,20.15A22.17,22.17,0,0,1,42.28.1Z"/><rect class="cls-3" x="88.38" y="-17.52" width="12.85" height="107.11" rx="4.91" transform="translate(49 126.52) rotate(-83.96)"/><rect class="cls-3" x="122.07" y="16.17" width="12.85" height="107.11" rx="4.91" transform="translate(45.64 190.18) rotate(-83.96)"/><rect class="cls-3" x="78.32" y="77.57" width="12.85" height="107.11" rx="4.91" transform="translate(-54.57 201.6) rotate(-83.96)"/><rect class="cls-3" x="118.83" y="46.87" width="12.85" height="107.11" rx="4.91" transform="translate(12.2 214.42) rotate(-83.96)"/></g></g></svg>

+ 1
- 0
docs/marketing/logo/SVG/Combinationmark.svg View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 951.34 234.2"><defs><style>.cls-1{fill:#68217a;}.cls-2{fill:#939;}</style></defs><title>Combinationmark</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M245.7,234.2a4.94,4.94,0,0,1-3.73-1.57,5.07,5.07,0,0,1-1.54-3.74,5.24,5.24,0,0,1,1.54-3.8,5,5,0,0,1,3.73-1.57,5.15,5.15,0,0,1,3.81,1.57,5.31,5.31,0,0,1,1.57,3.8,5.36,5.36,0,0,1-5.38,5.31Z"/><path class="cls-1" d="M320.34,233.15h-9.68l-35.21-54.67a23.88,23.88,0,0,1-2.21-4.33H273a72,72,0,0,1,.38,9.44v49.56h-8v-68h10.37l34.15,53.45c1.44,2.23,2.35,3.73,2.76,4.55h.19a71.49,71.49,0,0,1-.47-10v-48h8Z"/><path class="cls-1" d="M374.34,233.15h-36v-68h35v7h-27v23h25v7h-25v24h28Z"/><path class="cls-1" d="M427.34,172.15h-19v61h-8v-61h-20v-7h47Z"/><path d="M311.44,9.15h-46.1V60.83l31,27.48V38.15h16.39c10.45,0,15.61,5.18,15.61,13.31v39.1c0,8.12-4.88,13.59-15.61,13.59H265.34v30h46.1c24.71.14,47.9-12.31,47.9-41.11V51C359.34,21.87,336.15,9.15,311.44,9.15Zm242.9,83.62V50.34c0-15.3,27.28-18.88,35.54-3.45L615.1,36.56c-9.78-21.91-28-28.38-43-28.38-24.52,0-48.77,14.32-48.77,42.16V92.77c0,28,24.25,42.16,48.22,42.16,15.43,0,33.89-7.71,44.09-27.69l-27-12.54c-6.61,17.08-34.3,13-34.3-1.93ZM469.79,55.94c-9.62-2.1-16-5.58-16.46-11.58.56-14.5,22.73-14.92,35.7-1.11l20.5-15.9C496.7,11.59,482.2,7.41,467.14,7.41c-22.73,0-44.76,12.83-44.76,37.37,0,23.85,18.12,36.53,38.06,39.6,10.18,1.4,21.48,5.44,21.2,12.55-.84,13.39-28.17,12.69-40.58-2.51L421.4,113.11C433,128,448.73,135.7,463.51,135.7c22.73,0,48-13.25,49-37.37,1.39-30.68-20.64-38.35-42.67-42.39Zm-93.45,78.21h31V9.15h-31Zm527.23-125H856.34V60.83l31,27.48V38.15H904c10.28,0,15.36,5.18,15.36,13.31v39.1c0,8.12-4.8,13.59-15.36,13.59H857.34v30h46.1c24.71.14,47.9-12.31,47.9-41.11V51C951.48,21.87,928.29,9.15,903.57,9.15Zm-227.87-2c-25.75,0-51.36,14.13-51.36,43V93c0,28.68,25.75,43,51.64,43s51.36-14.28,51.36-43V50.14C727.34,21.45,701.45,7.18,675.7,7.18Zm20.64,85.7c0,8.92-10,13.52-19.93,13.52s-20.07-4.46-20.07-13.52V50.23c0-9.2,9.75-14.08,19.51-14.08,10.17,0,20.49,4.46,20.49,14.08V92.88ZM839.49,50.26c-.7-29.37-20.55-41.11-46.14-41.11h-50v125h32v-40H781l29,40h39L815.16,91.22C830.27,86.47,839.49,73.47,839.49,50.26Zm-46,16.89H775.34v-28h18.12c19.49,0,19.49,28,0,28Z"/><path class="cls-1" d="M42.28.1,186.2,13.67a22.18,22.18,0,0,1,19.93,24.21l-13.7,145.2a22.16,22.16,0,0,1-24.1,20L46.53,191.64l7.57-19.33-15,11.49L25,194.6,0,212.83,18.17,20.15A22.17,22.17,0,0,1,42.28.1Z"/><rect class="cls-2" x="88.38" y="-17.52" width="12.85" height="107.11" rx="4.91" transform="translate(49 126.52) rotate(-83.96)"/><rect class="cls-2" x="122.07" y="16.17" width="12.85" height="107.11" rx="4.91" transform="translate(45.64 190.18) rotate(-83.96)"/><rect class="cls-2" x="78.32" y="77.57" width="12.85" height="107.11" rx="4.91" transform="translate(-54.57 201.6) rotate(-83.96)"/><rect class="cls-2" x="118.83" y="46.87" width="12.85" height="107.11" rx="4.91" transform="translate(12.2 214.42) rotate(-83.96)"/></g></g></svg>

+ 1
- 0
docs/marketing/logo/SVG/Logomark Full Black.svg View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 265.74 274.24"><defs><style>.cls-1{fill:#939;}.cls-2{fill:#fff;}</style></defs><title>Logomark Full Black</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path d="M54.48.13,239.93,17.62A28.57,28.57,0,0,1,265.61,48.8L248,235.91a28.57,28.57,0,0,1-31.06,25.84L60,246.94,69.71,222l-19.27,14.8L32.23,250.75,0,274.24,23.42,26A28.56,28.56,0,0,1,54.48.13Z"/><rect class="cls-1" x="113.88" y="-7.74" width="16.56" height="138.01" rx="6.32" transform="translate(48.38 176.3) rotate(-83.96)"/><rect class="cls-1" x="157.3" y="35.68" width="16.56" height="138.01" rx="6.32" transform="translate(44.06 258.33) rotate(-83.96)"/><rect class="cls-1" x="100.92" y="114.79" width="16.56" height="138.01" rx="6.32" transform="translate(-85.07 273.05) rotate(-83.96)"/><rect class="cls-1" x="153.11" y="75.23" width="16.56" height="138.01" rx="6.32" transform="translate(0.97 289.56) rotate(-83.96)"/><path class="cls-2" d="M140,53.9H89v58.81L123,144V86.9h17.9c11.45,0,17.1,5.66,17.1,14.52v42.65c0,8.87-5.35,14.83-17.1,14.83H89v32h51c27.34.16,53-13.48,53-45.05V99.72C193,67.85,167.35,53.9,140,53.9Z"/></g></g></svg>

+ 1
- 0
docs/marketing/logo/SVG/Logomark Full Purple.svg View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 265.74 274.24"><defs><style>.cls-1{fill:#68217a;}.cls-2{fill:#939;}</style></defs><title>Logomark Full Purple</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M54.48.13,239.93,17.62A28.57,28.57,0,0,1,265.61,48.8L248,235.91a28.57,28.57,0,0,1-31.06,25.84L60,246.94,69.71,222l-19.27,14.8L32.23,250.75,0,274.24,23.42,26A28.56,28.56,0,0,1,54.48.13Z"/><rect class="cls-2" x="113.88" y="-7.74" width="16.56" height="138.01" rx="6.32" transform="translate(48.38 176.3) rotate(-83.96)"/><rect class="cls-2" x="157.3" y="35.68" width="16.56" height="138.01" rx="6.32" transform="translate(44.06 258.33) rotate(-83.96)"/><rect class="cls-2" x="100.92" y="114.79" width="16.56" height="138.01" rx="6.32" transform="translate(-85.07 273.05) rotate(-83.96)"/><rect class="cls-2" x="153.11" y="75.23" width="16.56" height="138.01" rx="6.32" transform="translate(0.97 289.56) rotate(-83.96)"/><path d="M140,53.9H89v58.81L123,144V86.9h17.9c11.45,0,17.1,5.66,17.1,14.52v42.65c0,8.87-5.35,14.83-17.1,14.83H89v32h51c27.34.16,53-13.48,53-45.05V99.72C193,67.85,167.35,53.9,140,53.9Z"/></g></g></svg>

+ 1
- 0
docs/marketing/logo/SVG/Logomark Purple.svg View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 265.74 274.24"><defs><style>.cls-1{fill:#68217a;}.cls-2{fill:#939;}</style></defs><title>Discord.Net Docs</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M54.48.13,239.93,17.62A28.57,28.57,0,0,1,265.61,48.8L248,235.91a28.57,28.57,0,0,1-31.06,25.84L60,246.94,69.71,222l-19.27,14.8L32.23,250.75,0,274.24,23.42,26A28.56,28.56,0,0,1,54.48.13Z"/><rect class="cls-2" x="113.88" y="-22.58" width="16.56" height="138.01" rx="6.32" transform="translate(63.14 163.03) rotate(-83.96)"/><rect class="cls-2" x="157.3" y="20.84" width="16.56" height="138.01" rx="6.32" transform="translate(58.81 245.05) rotate(-83.96)"/><rect class="cls-2" x="100.92" y="99.96" width="16.56" height="138.01" rx="6.32" transform="translate(-70.32 259.78) rotate(-83.96)"/><rect class="cls-2" x="153.11" y="60.4" width="16.56" height="138.01" rx="6.32" transform="translate(15.73 276.29) rotate(-83.96)"/></g></g></svg>

+ 1
- 0
docs/marketing/logo/SVG/Logomark White.svg View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 265.74 274.24"><defs><style>.cls-1{fill:#fff;}.cls-2{fill:#939;}</style></defs><title>Logomark White</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M54.48.13,239.93,17.62A28.57,28.57,0,0,1,265.61,48.8L248,235.91a28.57,28.57,0,0,1-31.06,25.84L60,246.94,69.71,222l-19.27,14.8L32.23,250.75,0,274.24,23.42,26A28.56,28.56,0,0,1,54.48.13Z"/><rect class="cls-2" x="113.88" y="-22.58" width="16.56" height="138.01" rx="6.32" transform="matrix(0.11, -0.99, 0.99, 0.11, 63.14, 163.03)"/><rect class="cls-2" x="157.3" y="20.84" width="16.56" height="138.01" rx="6.32" transform="translate(58.81 245.05) rotate(-83.96)"/><rect class="cls-2" x="100.92" y="99.96" width="16.56" height="138.01" rx="6.32" transform="translate(-70.32 259.78) rotate(-83.96)"/><rect class="cls-2" x="153.11" y="60.4" width="16.56" height="138.01" rx="6.32" transform="translate(15.73 276.29) rotate(-83.96)"/></g></g></svg>

+ 36
- 0
samples/Directory.Build.props View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Based on https://github.com/terrafx/terrafx/blob/master/Directory.Build.props -->
<!-- Copyright © Tanner Gooding and Contributors -->
<Project>

<!--
Directory.Build.props is automatically picked up and imported by
Microsoft.Common.props. This file needs to exist, even if empty so that
files in the parent directory tree, with the same name, are not imported
instead. The import fairly early and only Sdk.props will have been
imported beforehand. We also don't need to add ourselves to
MSBuildAllProjects, as that is done by the file that imports us.
-->

<PropertyGroup>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileDirectory)..\Directory.Build.props</MSBuildAllProjects>
<DiscordNetProjectCategory>samples</DiscordNetProjectCategory>
</PropertyGroup>

<Import Project="$(MSBuildThisFileDirectory)..\Directory.Build.props" />

<PropertyGroup>
<GenerateDocumentationFile>false</GenerateDocumentationFile>
<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
<InternalsVisibleTo Include="$(MSBuildProjectName).UnitTests" PublicKey="$(AssemblyOriginatorPublicKey)" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.SourceLink.GitHub" IsImplicitlyDefined="true" PrivateAssets="all" />
</ItemGroup>

</Project>

+ 25
- 0
samples/Directory.Build.targets View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Based on https://github.com/terrafx/terrafx/blob/master/Directory.Build.props -->
<!-- Copyright © Tanner Gooding and Contributors -->
<Project>

<!--
Directory.Build.targets is automatically picked up and imported by
Microsoft.Common.targets. This file needs to exist, even if empty so that
files in the parent directory tree, with the same name, are not imported
instead. The import fairly late and most other props/targets will have
been imported beforehand. We also don't need to add ourselves to
MSBuildAllProjects, as that is done by the file that imports us.
-->

<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileDirectory)..\Directory.Build.targets</MSBuildAllProjects>
</PropertyGroup>

<Import Project="$(MSBuildThisFileDirectory)..\Directory.Build.targets" />

<!-- Empty target so that `dotnet test` will work on the solution -->
<!-- https://github.com/Microsoft/vstest/issues/411 -->
<Target Name="VSTest" />

</Project>

+ 16
- 0
samples/PingPong/PingPong.csproj View File

@@ -0,0 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="../../src/Gateway/Discord.Net.Gateway.csproj" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" />
</ItemGroup>

</Project>

+ 22
- 0
samples/PingPong/Program.cs View File

@@ -0,0 +1,22 @@
using System;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace PingPong
{
public static class Program
{
public static void Main(string[] args)
=> CreateHostBuilder(args).Build().Run();

public static IHostBuilder CreateHostBuilder(string[] args)
=> Host.CreateDefaultBuilder(args)
.ConfigureServices(ConfigureServices);

private static void ConfigureServices(HostBuilderContext context,
IServiceCollection services)
{
// TODO: this
}
}
}

+ 31
- 0
src/Directory.Build.props View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Based on https://github.com/terrafx/terrafx/blob/master/Directory.Build.props -->
<!-- Copyright © Tanner Gooding and Contributors -->
<Project>

<!--
Directory.Build.props is automatically picked up and imported by
Microsoft.Common.props. This file needs to exist, even if empty so that
files in the parent directory tree, with the same name, are not imported
instead. The import fairly early and only Sdk.props will have been
imported beforehand. We also don't need to add ourselves to
MSBuildAllProjects, as that is done by the file that imports us.
-->

<PropertyGroup>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileDirectory)..\Directory.Build.props</MSBuildAllProjects>
<DiscordNetProjectCategory>src</DiscordNetProjectCategory>
</PropertyGroup>

<Import Project="$(MSBuildThisFileDirectory)..\Directory.Build.props" />

<ItemGroup>
<InternalsVisibleTo Include="$(MSBuildProjectName).UnitTests" PublicKey="$(AssemblyOriginatorPublicKey)" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.SourceLink.GitHub" IsImplicitlyDefined="true" PrivateAssets="all" />
</ItemGroup>

</Project>

+ 25
- 0
src/Directory.Build.targets View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Based on https://github.com/terrafx/terrafx/blob/master/Directory.Build.props -->
<!-- Copyright © Tanner Gooding and Contributors -->
<Project>

<!--
Directory.Build.targets is automatically picked up and imported by
Microsoft.Common.targets. This file needs to exist, even if empty so that
files in the parent directory tree, with the same name, are not imported
instead. The import fairly late and most other props/targets will have
been imported beforehand. We also don't need to add ourselves to
MSBuildAllProjects, as that is done by the file that imports us.
-->

<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileDirectory)..\Directory.Build.targets</MSBuildAllProjects>
</PropertyGroup>

<Import Project="$(MSBuildThisFileDirectory)..\Directory.Build.targets" />

<!-- Empty target so that `dotnet test` will work on the solution -->
<!-- https://github.com/Microsoft/vstest/issues/411 -->
<Target Name="VSTest" />

</Project>

+ 0
- 10
src/Discord.Net.Core/Discord.Net.Core.csproj View File

@@ -1,10 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="../../Discord.Net.targets" />
<Import Project="../../StyleAnalyzer.targets" />
<PropertyGroup>
<AssemblyName>Discord.Net.Core</AssemblyName>
<RootNamespace>Discord</RootNamespace>
<Description>The core components for the Discord.Net library.</Description>
<TargetFramework>netstandard2.1</TargetFramework>
</PropertyGroup>
</Project>

+ 0
- 13
src/Discord.Net.Rest/Discord.Net.Rest.csproj View File

@@ -1,13 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="../../Discord.Net.targets" />
<Import Project="../../StyleAnalyzer.targets" />
<PropertyGroup>
<AssemblyName>Discord.Net.Rest</AssemblyName>
<RootNamespace>Discord.Rest</RootNamespace>
<Description>A core Discord.Net library containing the REST client and models.</Description>
<TargetFramework>netstandard2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Discord.Net.Core\Discord.Net.Core.csproj" />
</ItemGroup>
</Project>

+ 0
- 14
src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj View File

@@ -1,14 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="../../Discord.Net.targets" />
<Import Project="../../StyleAnalyzer.targets" />
<PropertyGroup>
<AssemblyName>Discord.Net.WebSocket</AssemblyName>
<RootNamespace>Discord.WebSocket</RootNamespace>
<Description>A core Discord.Net library containing the WebSocket client and models.</Description>
<TargetFramework>netstandard2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Discord.Net.Core\Discord.Net.Core.csproj" />
<ProjectReference Include="..\Discord.Net.Rest\Discord.Net.Rest.csproj" />
</ItemGroup>
</Project>

+ 19
- 0
src/Gateway/Discord.Net.Gateway.csproj View File

@@ -0,0 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>

<Description>
$(Description)
WebSocket components to enable connecting to the discord gateway.
</Description>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" />
<PackageReference Include="Microsoft.Extensions.Options" />
<PackageReference Include="System.IO.Pipelines" />
</ItemGroup>

</Project>

+ 12
- 0
src/Models/Discord.Net.Models.csproj View File

@@ -0,0 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>

<Description>
$(Description)
Shared models between the Discord REST API and Gateway.
</Description>
</PropertyGroup>

</Project>

+ 0
- 5
stylecop.json View File

@@ -1,11 +1,6 @@
{
"$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json",
"settings": {
"indentation": {
"indentationSize": 4,
"tabSize": 4,
"useTabs": false
},
"documentationRules": {
"documentExposedElements": true,
"documentInternalElements": false,


+ 36
- 0
test/Directory.Build.props View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Based on https://github.com/terrafx/terrafx/blob/master/Directory.Build.props -->
<!-- Copyright © Tanner Gooding and Contributors -->
<Project>

<!--
Directory.Build.props is automatically picked up and imported by
Microsoft.Common.props. This file needs to exist, even if empty so that
files in the parent directory tree, with the same name, are not imported
instead. The import fairly early and only Sdk.props will have been
imported beforehand. We also don't need to add ourselves to
MSBuildAllProjects, as that is done by the file that imports us.
-->

<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileDirectory)..\Directory.Build.props</MSBuildAllProjects>
<DiscordNetProjectCategory>test</DiscordNetProjectCategory>
</PropertyGroup>

<Import Project="$(MSBuildThisFileDirectory)..\Directory.Build.props" />

<PropertyGroup>
<IsPackable>false</IsPackable>
<GenerateDocumentationFile>false</GenerateDocumentationFile>
<VSTestLogger>trx</VSTestLogger>
<VSTestResultsDirectory>$(BaseArtifactsPath)test/$(Configuration)/</VSTestResultsDirectory>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="coverlet.collector" IsImplicitlyDefined="true" PrivateAssets="all" />
<PackageReference Include="Microsoft.NET.Test.Sdk" IsImplicitlyDefined="true" PrivateAssets="all" />
<PackageReference Include="xunit" IsImplicitlyDefined="true" PrivateAssets="all" />
<PackageReference Include="xunit.runner.visualstudio" IsImplicitlyDefined="true" PrivateAssets="all" />
</ItemGroup>

</Project>

+ 21
- 0
test/Directory.Build.targets View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Based on https://github.com/terrafx/terrafx/blob/master/Directory.Build.props -->
<!-- Copyright © Tanner Gooding and Contributors -->
<Project>

<!--
Directory.Build.targets is automatically picked up and imported by
Microsoft.Common.targets. This file needs to exist, even if empty so that
files in the parent directory tree, with the same name, are not imported
instead. The import fairly late and most other props/targets will have
been imported beforehand. We also don't need to add ourselves to
MSBuildAllProjects, as that is done by the file that imports us.
-->

<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileDirectory)..\Directory.Build.targets</MSBuildAllProjects>
</PropertyGroup>

<Import Project="$(MSBuildThisFileDirectory)..\Directory.Build.targets" />

</Project>

+ 7
- 0
test/Gateway/Discord.Net.Gateway.UnitTests.csproj View File

@@ -0,0 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>

</Project>

+ 0
- 21
tests/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj View File

@@ -1,21 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>

<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="1.3.0">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>

</Project>

Loading…
Cancel
Save