@@ -0,0 +1,155 @@ | |||||
root = true | |||||
[*] | |||||
charset = utf-8 | |||||
end_of_line = lf | |||||
insert_final_newline = true | |||||
indent_style = space | |||||
indent_size = 4 | |||||
trim_trailing_whitespace = true | |||||
[*.{cmd,config,csproj,cxxproj,json,props,ps1,resx,sh,targets}] | |||||
indent_size = 2 | |||||
[*.sln] | |||||
end_of_line = crlf | |||||
indent_style = tab | |||||
[*.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 | |||||
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, properties, types, object_collection_array_initializers | |||||
csharp_new_line_within_query_expression_clauses = true | |||||
csharp_prefer_braces = false:silent | |||||
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion | |||||
csharp_prefer_simple_default_expression = true:suggestion | |||||
csharp_preserve_single_line_blocks = true | |||||
csharp_preserve_single_line_statements = false | |||||
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 | |||||
csharp_style_conditional_delegate_call = true:suggestion | |||||
csharp_style_deconstructed_variable_declaration = true:suggestion | |||||
csharp_style_expression_bodied_accessors = false:suggestion | |||||
csharp_style_expression_bodied_constructors = false:suggestion | |||||
csharp_style_expression_bodied_indexers = false:suggestion | |||||
csharp_style_expression_bodied_lambdas = true:suggestion | |||||
csharp_style_expression_bodied_methods = false:suggestion | |||||
csharp_style_expression_bodied_operators = false:suggestion | |||||
csharp_style_expression_bodied_properties = false: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_assignment_preference = discard_variable:suggestion | |||||
csharp_style_unused_value_expression_statement_preference = discard_variable:suggestion | |||||
csharp_style_var_elsewhere = true:suggestion | |||||
csharp_style_var_for_built_in_types = true:suggestion | |||||
csharp_style_var_when_type_is_apparent = true:suggestion | |||||
dotnet_code_quality_unused_parameters = all:suggestion | |||||
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_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.private_and_internal_static_fields_should_be_camel_case_prefixed_with_s_and_underscore.severity = suggestion | |||||
dotnet_naming_rule.private_and_internal_static_fields_should_be_camel_case_prefixed_with_s_and_underscore.style = camel_case_prefixed_with_s_and_underscore | |||||
dotnet_naming_rule.private_and_internal_static_fields_should_be_camel_case_prefixed_with_s_and_underscore.symbols = private_and_internal_static_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 | |||||
dotnet_naming_style.camel_case.capitalization = camel_case | |||||
dotnet_naming_style.camel_case_prefixed_with_s_and_underscore.capitalization = camel_case | |||||
dotnet_naming_style.camel_case_prefixed_with_s_and_underscore.required_prefix = s_ | |||||
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_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 | |||||
dotnet_naming_style.pascal_case_suffixed_with_async.capitalization = pascal_case | |||||
dotnet_naming_style.pascal_case_suffixed_with_async.required_suffix = Async | |||||
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.static_readonly_declarations.required_modifiers = static, readonly | |||||
dotnet_naming_symbols.type_parameters.applicable_kinds = type_parameter | |||||
dotnet_separate_import_directive_groups = false | |||||
dotnet_sort_system_directives_first = true | |||||
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 = false: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 |
@@ -0,0 +1,26 @@ | |||||
############################################################################### | |||||
# Default to Unix-style text files | |||||
############################################################################### | |||||
* text eol=lf | |||||
############################################################################### | |||||
# Treat code and markdown as Unix-style text files | |||||
############################################################################### | |||||
*.cs text eol=lf | |||||
*.csproj text eol=lf | |||||
*.md text eol=lf | |||||
*.props text eol=lf | |||||
*.targets text eol=lf | |||||
############################################################################### | |||||
# Treat Solution files as Windows text files | |||||
############################################################################### | |||||
*.sln text eol=crlf | |||||
############################################################################### | |||||
# Treat images as binary files | |||||
############################################################################### | |||||
*.png binary | |||||
*.ai binary | |||||
@@ -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. | |||||
--- |
@@ -0,0 +1,429 @@ | |||||
## 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 | |||||
*.sln.docstates | |||||
# User-specific files (MonoDevelop/Xamarin Studio) | |||||
*.userprefs | |||||
# Mono auto generated files | |||||
mono_crash.* | |||||
# Build results | |||||
[Dd]ebug/ | |||||
[Dd]ebugPublic/ | |||||
[Rr]elease/ | |||||
[Rr]eleases/ | |||||
x64/ | |||||
x86/ | |||||
[Aa][Rr][Mm]/ | |||||
[Aa][Rr][Mm]64/ | |||||
bld/ | |||||
[Bb]in/ | |||||
[Oo]bj/ | |||||
[Ll]og/ | |||||
# 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*/ | |||||
[Bb]uild[Ll]og.* | |||||
# NUNIT | |||||
*.VisualState.xml | |||||
TestResult.xml | |||||
# Build Results of an ATL Project | |||||
[Dd]ebugPS/ | |||||
[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 | |||||
*_h.h | |||||
*.ilk | |||||
*.meta | |||||
*.obj | |||||
*.iobj | |||||
*.pch | |||||
*.pdb | |||||
*.ipdb | |||||
*.pgc | |||||
*.pgd | |||||
*.rsp | |||||
*.sbr | |||||
*.tlb | |||||
*.tli | |||||
*.tlh | |||||
*.tmp | |||||
*.tmp_proj | |||||
*_wpftmp.csproj | |||||
*.log | |||||
*.vspscc | |||||
*.vssscc | |||||
.builds | |||||
*.pidb | |||||
*.svclog | |||||
*.scc | |||||
# Chutzpah Test files | |||||
_Chutzpah* | |||||
# Visual C++ cache files | |||||
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/ | |||||
# Guidance Automation Toolkit | |||||
*.gpState | |||||
# ReSharper is a .NET coding add-in | |||||
_ReSharper*/ | |||||
*.[Rr]e[Ss]harper | |||||
*.DotSettings.user | |||||
# JustCode is a .NET coding add-in | |||||
.JustCode | |||||
# TeamCity is a build add-in | |||||
_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.* | |||||
AutoTest.Net/ | |||||
# Web workbench (sass) | |||||
.sass-cache/ | |||||
# Installshield output folder | |||||
[Ee]xpress/ | |||||
# DocProject is a documentation generator add-in | |||||
DocProject/buildhelp/ | |||||
DocProject/Help/*.HxT | |||||
DocProject/Help/*.HxC | |||||
DocProject/Help/*.hhc | |||||
DocProject/Help/*.hhk | |||||
DocProject/Help/*.hhp | |||||
DocProject/Help/Html2 | |||||
DocProject/Help/html | |||||
# Click-Once directory | |||||
publish/ | |||||
# Publish Web Output | |||||
*.[Pp]ublish.xml | |||||
*.azurePubxml | |||||
# 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 | |||||
**/[Pp]ackages/* | |||||
# except build/, which is used as an MSBuild target. | |||||
!**/[Pp]ackages/build/ | |||||
# Uncomment if necessary however generally it will be regenerated when needed | |||||
#!**/[Pp]ackages/repositories.config | |||||
# NuGet v3's project.json files produces more ignorable files | |||||
*.nuget.props | |||||
*.nuget.targets | |||||
# Microsoft Azure Build Output | |||||
csx/ | |||||
*.build.csdef | |||||
# 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 | |||||
ClientBin/ | |||||
~$* | |||||
*~ | |||||
*.dbmdl | |||||
*.dbproj.schemaview | |||||
*.jfm | |||||
*.pfx | |||||
*.publishsettings | |||||
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/ | |||||
# Backup & report files from converting an old project file | |||||
# to a newer Visual Studio version. Backup files are not needed, | |||||
# because we have git ;-) | |||||
_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 | |||||
# Visual Studio 6 workspace options file | |||||
*.opt | |||||
# 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 | |||||
# 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/ | |||||
# 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/* |
@@ -0,0 +1,82 @@ | |||||
<?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. | |||||
--> | |||||
<!-- 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>RogueException;FiniteReality;</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="'$(SYSTEM_PULLREQUEST_PULLREQUESTNUMBER)' != ''">pr$(SYSTEM_PULLREQUEST_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> | |||||
<PackageIconUrl>https://github.com/Discord-Net/Discord.Net/raw/dev/docs/marketing/logo/PackageLogo.png</PackageIconUrl> | |||||
<PackageLicenseExpression>MIT</PackageLicenseExpression> | |||||
<PackageProjectUrl>$(RepositoryUrl)</PackageProjectUrl> | |||||
<RepositoryType>git</RepositoryType> | |||||
<RestoreSources> | |||||
https://api.nuget.org/v3/index.json | |||||
</RestoreSources> | |||||
<UseSharedCompilation>true</UseSharedCompilation> | |||||
</PropertyGroup> | |||||
<!-- Default settings for .NET projects that are otherwise undefined --> | |||||
<PropertyGroup Condition="'$(TargetRuntime)' != 'Native'"> | |||||
<ProduceReferenceAssembly>true</ProduceReferenceAssembly> | |||||
</PropertyGroup> | |||||
<!-- Package references which are consumed by all .NET projects --> | |||||
<ItemGroup Condition="'$(TargetRuntime)' != 'Native'"> | |||||
<PackageReference Include="Microsoft.Net.Compilers.Toolset" IsImplicitlyDefined="true" PrivateAssets="all" /> | |||||
</ItemGroup> | |||||
</Project> |
@@ -0,0 +1,29 @@ | |||||
<?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="'$(BUILD_BUILDNUMBER)' != ''">$(Version).$(BUILD_BUILDNUMBER)</PackageVersion> | |||||
</PropertyGroup> | |||||
<!-- Package versions for package references across all projects --> | |||||
<ItemGroup> | |||||
<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.SourceLink.GitHub" Version="1.0.0" /> | |||||
</ItemGroup> | |||||
</Project> |
@@ -0,0 +1,39 @@ | |||||
| |||||
Microsoft Visual Studio Solution File, Format Version 12.00 | |||||
# Visual Studio 15 | |||||
VisualStudioVersion = 15.0.26124.0 | |||||
MinimumVisualStudioVersion = 15.0.26124.0 | |||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{381B0F15-BA2C-4E23-BE68-015462861AF0}" | |||||
EndProject | |||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Net.Core", "src\Core\Discord.Net.Core.csproj", "{57A52C6A-337D-4165-A42D-94FAC87B2807}" | |||||
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 | |||||
Release|x64 = Release|x64 | |||||
Release|x86 = Release|x86 | |||||
EndGlobalSection | |||||
GlobalSection(SolutionProperties) = preSolution | |||||
HideSolutionNode = FALSE | |||||
EndGlobalSection | |||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution | |||||
{57A52C6A-337D-4165-A42D-94FAC87B2807}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
{57A52C6A-337D-4165-A42D-94FAC87B2807}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
{57A52C6A-337D-4165-A42D-94FAC87B2807}.Debug|x64.ActiveCfg = Debug|Any CPU | |||||
{57A52C6A-337D-4165-A42D-94FAC87B2807}.Debug|x64.Build.0 = Debug|Any CPU | |||||
{57A52C6A-337D-4165-A42D-94FAC87B2807}.Debug|x86.ActiveCfg = Debug|Any CPU | |||||
{57A52C6A-337D-4165-A42D-94FAC87B2807}.Debug|x86.Build.0 = Debug|Any CPU | |||||
{57A52C6A-337D-4165-A42D-94FAC87B2807}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
{57A52C6A-337D-4165-A42D-94FAC87B2807}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
{57A52C6A-337D-4165-A42D-94FAC87B2807}.Release|x64.ActiveCfg = Release|Any CPU | |||||
{57A52C6A-337D-4165-A42D-94FAC87B2807}.Release|x64.Build.0 = Release|Any CPU | |||||
{57A52C6A-337D-4165-A42D-94FAC87B2807}.Release|x86.ActiveCfg = Release|Any CPU | |||||
{57A52C6A-337D-4165-A42D-94FAC87B2807}.Release|x86.Build.0 = Release|Any CPU | |||||
EndGlobalSection | |||||
GlobalSection(NestedProjects) = preSolution | |||||
{57A52C6A-337D-4165-A42D-94FAC87B2807} = {381B0F15-BA2C-4E23-BE68-015462861AF0} | |||||
EndGlobalSection | |||||
EndGlobal |
@@ -0,0 +1,22 @@ | |||||
The MIT License (MIT) | |||||
Copyright (c) 2015-2019 Discord.Net Contributors | |||||
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. | |||||
@@ -0,0 +1,245 @@ | |||||
# Changelog | |||||
## [2.1.1] - 2019-06-08 | |||||
### Fixed | |||||
- #994: Remainder parameters now ignore character escaping, as there is no reason to escape characters here (2e95c49) | |||||
- #1316: `Emote.Equals` now pays no respect to the Name property, since Discord's API does not care about an emote's name (abf3e90) | |||||
- #1317: `Emote.GetHashCode` now pays no respect to the Name property, see above (1b54883) | |||||
- #1323: Optionals will no longer claim to be specified when a reaction message was not cached (1cc5d73) | |||||
- Log messages sourcing from REST events will no longer be raised twice (c78a679) | |||||
- News embeds will be processed as `EmbedType.Unknown`, rather than throwing an error and dropping the message (d287ed1) | |||||
### Changed | |||||
- #1311: Members may now be disconnected from voice channels by passing `null` as `GuildUserProperties.Channel` (fc48c66) | |||||
- #1313: `IMessage.Tags` now includes the EveryoneRole on @everyone and @here mentions (1f55f01) | |||||
- #1320: The maximum value for setting slow-mode has been updated to 6 hours, per the new API limit (4433ca7) | |||||
### Misc | |||||
- This library's compatibility with Semantic Versioning has been clarified. Please see the README (4d7de17) | |||||
- The depency on System.Interactive.Async has been bumped to `3.2.0` (3e65e03) | |||||
## [2.1.0] - 2019-05-18 | |||||
### Added | |||||
- #1236: Bulk deletes (for messages) may now be accessed via the `MessagesBulkDeleted` event (dec353e) | |||||
- #1240: OAuth applications utilizing the `guilds.join` scope may now add users to guilds through any client (1356ea9) | |||||
- #1255: Message and attachment spoilers may now be set or detected (f3b20b2) | |||||
- #1260: DiscordWebhookClient may be created from a Webhook URL (f2113c7) | |||||
- #1261: A `GetCategoryChannel` helper may now be used to retrieve category channels directly from socket guilds (e03c527) | |||||
- #1263: "user joined the guild" messages are now supported (00d3f5a) | |||||
- #1271: AuthorID may now be retrieved from message delete audit log entries (1ae4220) | |||||
- #1293: News Channels are now supported 📰 (9084c42) | |||||
- `ExclusiveBulkDelete` configuration setting can be used to control bulk delete event behavior (03e6401) | |||||
### Removed | |||||
- #1294: The `IGuildUser` overload of `EmbedBuilder.WithAuthor` no longer exists (b52b54d) | |||||
### Fixed | |||||
- #1256: Fetching audit logs no longer raises null reference exceptions when a webhook has been deleted (049b014) | |||||
- #1268: Null reference exceptions on `MESSAGE_CREATE` concerning partial member objects no longer occur (377622b) | |||||
- #1278: The token validator now internally pads tokens to the proper length (48b327b) | |||||
- #1292: Messages now properly initialize empty collections (b2ebc03) | |||||
- The `DiscordSocketRestClient` is now properly initialized (a44c13a) | |||||
- Exceptions in event handlers are now always logged (f6e3200) | |||||
### Changed | |||||
- #1305: Token validation will fail when tokens contain whitespace (bb61efa) | |||||
### Misc | |||||
- #1241: Added documentation samples for Webhooks (655a006) | |||||
- #1243: Happy new year 🎉 (0275f7d) | |||||
- #1257: Improved clarity in comments in the command samples (2473619) | |||||
- #1276: Documentation uses a relative path for the logo asset (b80f0e8) | |||||
- #1303: EmbedBuilder documentation now builds in the correct spot (51618e6) | |||||
- #1304: Updated documentation (4309550) | |||||
- CI for this project is now powered by Azure DevOps (this is not a sponsored message 🚀) (9b2bc18) | |||||
- IDisposableAnalyzers should now be a development dependency (8003ac8) | |||||
## [2.0.1] - 2019-01-04 | |||||
### Fixed | |||||
- #1226: Only escape the closing quotation mark of non-remainder strings (65b8c09) | |||||
- Commands with async RunModes will now propagate exceptions up to CommandExecuted (497918e) | |||||
### Misc | |||||
- #1225: Commands sample no longer hooks the log event twice (552f34c) | |||||
- #1227: The logo on the docs index page should scale responsively (d39bf6e) | |||||
- #1230: Replaced precondition sample on docs (feed4fd) | |||||
## [2.0.0] - 2018-12-28 | |||||
### Added | |||||
- #747: `CommandService` now has a `CommandExecuted` event (e991715) | |||||
- #765: Parameters may have a name specified via `NameAttribute` (9c81ab9) | |||||
- #773: Both socket clients inherit from `BaseSocketClient` (9b7afec) | |||||
- #785: Primitives now automatically load a NullableTypeReader (cb0ff78) | |||||
- #819: Support for Welcome Message channels (30e867a) | |||||
- #835: Emoji may now be managed from a bot (b4bf046) | |||||
- #843: Webhooks may now be managed from a bot (7b2ddd0) | |||||
- #863: An embed may be converted to an `EmbedBuilder` using the `.ToEmbedBuilder()` method (5218e6b) | |||||
- #877: Support for reading rich presences (34b4e5a) | |||||
- #888: Users may now opt-in to using a proxy (678a723) | |||||
- #906: API Analyzers to assist users when writing their bot (f69ef2a) | |||||
- #907: Full support for channel categories (030422f) | |||||
- #913: Animated emoji may be read and written (a19ff18) | |||||
- #915: Unused parameters may be discarded, rather than failing the command (5f46aef) | |||||
- #929: Standard EqualityComparers for use in LINQ operations with the library's entities (b5e7548) | |||||
- #934: Modules now contain an `OnModuleBuilding` method, which is invoked when the module is built (bb8ebc1) | |||||
- #952: Added 'All' permission set for categories (6d58796) | |||||
- #957: Ratelimit related objects now include request information (500f5f4) | |||||
- #962: Add `GetRecommendedShardCountAsync` (fc5e70c) | |||||
- #970: Add Spotify track support to user Activities (64b9cc7) | |||||
- #973: Added `GetDefaultAvatarUrl` to user (109f663) | |||||
- #978: Embeds can be attached alongside a file upload (e9f9b48) | |||||
- #984, #1089: `VoiceServerUpdate` events are now publically accessible (e775853, 48fed06) | |||||
- #996: Added `DeleteMessageAsync` to `IMessageChannel` (bc6009e) | |||||
- #1005: Added dedicated `TimeSpan` TypeReader which "doesn't suck" (b52af7a) | |||||
- #1009: Users can now specify the replacement behavior or default typereaders (6b7c6e9) | |||||
- #1020: Users can now specify parameters when creating channels (bf5275e) | |||||
- #1030: Added `IsDeprecated`, `IsCustom` properties to `VoiceRegion` (510f474) | |||||
- #1037: Added `SocketUser.MutualGuilds`, various extension methods to commands (637d9fc) | |||||
- #1043: `Discord.Color` is now compatible with `System.Drawing.Color` (c275e57) | |||||
- #1055: Added audit logs (39dffe8) | |||||
- #1056: Added `GetBanAsync` (97c8931) | |||||
- #1102: Added `GetJumpUrl()` to messages (afc3a9d) | |||||
- #1123: Commands can now accept named parameters (419c0a5) | |||||
- #1124: Preconditions can now set custom error messages (5677f23) | |||||
- #1126: `Color` now has equality (a2d8800) | |||||
- #1159: Guild channels can now by synced with their parent category (5ea1fb3) | |||||
- #1165: Bring Guild and Message models up to date with the API (d30d122) | |||||
- #1166: Added `GetVoiceRegionsAsync` to `IGuild` (00717cf) | |||||
- #1183: Added Add Guild Member endpoint for OAuth clients (8ef5f81) | |||||
- #1196: Channel position can now be specified when creating a channel (a64ab60) | |||||
- #1198: The Socket client can now access its underlying REST client (65afd37) | |||||
- #1213: Added `GuildEmote#CreatorId` (92bf836) | |||||
- 'html' variant added to the `EmbedType` enum (42c879c) | |||||
- Modules can now be nested in non-module classes (4edbd8d) | |||||
- Added `BanAsync` to guild members (1905fde) | |||||
- Added the permisison bit for priority speaker (c1d7818) | |||||
- All result types can use `FromError` (748e92b) | |||||
- Added support for reading/writing slow mode (97d17cf) | |||||
- Added markdown format for URLs (f005af3) | |||||
- Reactions can now be added to messages in bulk (5421df1) | |||||
### Fixed | |||||
- #742: `DiscordShardedClient#GetGuildFor` will now direct null guilds to Shard 0 (d5e9d6f) | |||||
- #743: Various issues with permissions and inheritance of permissions (f996338) | |||||
- #755: `IRole.Mention` will correctly tag the @everyone role (6b5a6e7) | |||||
- #768: `CreateGuildAsync` will include the icon stream (865080a) | |||||
- #866: Revised permissions constants and behavior (dec7cb2) | |||||
- #872: Bulk message deletion should no longer fail for incomplete batch sizes (804d918) | |||||
- #923: A null value should properly reset a user's nickname (227f61a) | |||||
- #938: The reconnect handler should no longer deadlock during Discord outages (73ac9d7) | |||||
- #941: Fix behavior of OverrideTypeReader (170a2e0) | |||||
- #945: Fix properties on SocketCategoryChannel (810f6d6) | |||||
- #959: Webhooks now use the correct parameter when assigning to the Avatar URL (8876597) | |||||
- #966: Correct the implementation of HasFlag and ResolveChannel in permissions (32ebdd5) | |||||
- #968: Add missing parameter in WebSocket4Net constructor (8537924) | |||||
- #981: Enforce a maximum value when parsing timestamps from Discord (bfaa6fc) | |||||
- #993: Null content will no longer null-ref on message sends/edits (55299ff) | |||||
- #1003: Fixed ordering of parameters in permissions classes (a06e212) | |||||
- #1010: EmbedBuilder no longer produces mutable embeds (2988b38) | |||||
- #1012: `Embed.Length` should now yield the correct results (a3ce80c) | |||||
- #1017: GetReactionUsersAsync includes query parameters (9b29c00) | |||||
- #1022: GetReactionUsersAsync is now correctly paginated (79811d0) | |||||
- #1023: Fix/update invite-related behaviors (7022149) | |||||
- #1031: Messages with no guild-specific data should no longer be lost (3631886) | |||||
- #1036: Fixed cases where `RetryMode.RetryRatelimit` were ignored (c618cb3) | |||||
- #1044: Populate the guild in `SocketWebhookUser` (6a7810b) | |||||
- #1048: The REST client will now create a full GuildUser object (033d312) | |||||
- #1049: Fixed null-ref in `GetShardIdFor` (7cfed7f) | |||||
- #1059: Include 'view channel' in voice channel's All permissions set (e764daf) | |||||
- #1083: Default type readers will now be properly replaced (4bc06a0) | |||||
- #1093: Fixed race condition in audio client authentication (322d46e) | |||||
- #1139: Fixed consistency in exceptions (9e9a11d) | |||||
- #1151: `GetReactionUsersAsync` now uses the correct pagination constant (c898325) | |||||
- #1163: Reaction ratelimits are now placed in the same bucket, treated correctly (5ea1fb3) | |||||
- #1186: Webhooks can now send files with embeds correctly (c1d5152) | |||||
- #1192: CommandExecuted no longer fires twice for RuntimeResults (10233f3) | |||||
- #1195: Channel Create audit log events properly deserialize (dca6c33) | |||||
- #1202: The UDP client should no longer be used after disposed (ccb16e4) | |||||
- #1203: The Audio client should no longer lock up on disconnect (2c93363) | |||||
- #1209: MessageUpdated should no longer pass a null after object (91e0f03) | |||||
- Ignore messages with no ID in bulk delete (676be40) | |||||
- No longer attempt to load generic types as modules (b1eaa44) | |||||
- No longer complain when a `PRESENCES_REPLACE` update is received (beb3d46) | |||||
- CommandExecuted will be raised on async exception failures (6260749) | |||||
- ExecuteResult now contains the entire exception, not an abridged message (f549da5) | |||||
- CommandExecuted will no longer be raised twice for exceptions (aec7105) | |||||
- The default WebSocket will now close correctly (ac389f5) | |||||
### Changed | |||||
- #731: `IUserMessage#GetReactionUsersAsync` now takes an `IEmote` instead of a `string` (5d7f2fc) | |||||
- #744: IAsyncEnumerable has been redesigned (5bbd9bb) | |||||
- #777: `IGuild#DefaultChannel` will now resolve the first accessible channel, per changes to Discord (1ffcd4b) | |||||
- #781: Attempting to add or remove a member's EveryoneRole will throw (506a6c9) | |||||
- #801: `EmbedBuilder` will no longer implicitly convert to `Embed`, you must build manually (94f7dd2) | |||||
- #804: Command-related tasks will have the 'async' suffix (14fbe40) | |||||
- #812: The WebSocket4Net provider has been bumped to version 0.15, allowing support for .NET Standard apps (e25054b) | |||||
- #829: DeleteMessagesAsync moved from IMessageChannel to ITextChannel (e00f17f) | |||||
- #853: WebSocket will now use `zlib-stream` compression (759db34) | |||||
- #874: The `ReadMessages` permission is moving to `ViewChannel` (edfbd05) | |||||
- #877: Refactored Games into Activities (34b4e5a) | |||||
- #943: Multiple types of quotation marks can now be parsed (thanks 🍎) (cee71ef) | |||||
- #955: The `GameParty` model will now use long values (178ea8d) | |||||
- #986: Expose the internal entity TypeReaders (660fec0) | |||||
- #992: Throw an exception when trying to modify someone else's message (d50fc3b) | |||||
- #998: Commands can specify their own `IgnoreExtraArgs` behavior (6d30100) | |||||
- #1033: The `ReadMessages` permission bit is now named `ViewChannel` (5f084ad) | |||||
- #1042: Content parameter of `SendMessageAsync` is now optional (0ba8b06) | |||||
- #1057: An audio channel's `ConnectAsync` now allows users to handle the voice connection elsewhere, such as in Lavalink (890904f) | |||||
- #1094: Overhauled invites, added vanity invite support (ffe994a) | |||||
- #1108: Reactions now use the undocumented 1/.25 ratelimit, making them 4x faster (6b21b11) | |||||
- #1128: Bot tokens will now be validated for common mishaps before use (2de6cef) | |||||
- #1140: Check the invite `maxAge` parameter before making the request (649a779) | |||||
- #1164: All command results will now be raised in `CommandExecuted` (10f67a8) | |||||
- #1171: Clients have been changed to properly make use of `IDisposable` (7366cd4) | |||||
- #1172: Invite related methods were moved from `IGuildChannel` to `INestedChannel` (a3f5e0b) | |||||
- #1200: HasPrefix extensions now check for null values first (46e2674) | |||||
- `IGuildChannel#Nsfw` moved to `ITextChannel`, now maps to the API property (608bc35) | |||||
- Preemptive ratelimits are now logged under verbose, rather than warning. (3c1e766) | |||||
- The default InviteAge when creating Invites is now 24 hours (9979a02) | |||||
- All parameters to `ReplyAsync` have been made optional (b38dca7) | |||||
- The socket client will now use additional fields to fill in member/guild information on messages (8fb2c71) | |||||
- The Audio Client now uses Voice WS v3 (9ba38d7) | |||||
### Removed | |||||
- #790: Redundant overloads for `AddField` removed from EmbedBuilder (479361b) | |||||
- #925: RPC is no longer being maintained nor packaged (b30af57) | |||||
- #958: Remove support for user tokens (2fd4f56) | |||||
- User logins (including selfbots) are no longer supported (fc5adca) | |||||
### Misc | |||||
- #786: Unit tests for the Color structure (22b969c) | |||||
- #828: We now include a contributing guide (cd82a0f) | |||||
- #876: We now include a standard editorconfig (5c8c784) | |||||
- #963: Docs now include a release version, build instructions (88e6244) | |||||
- #964: Fix documentation spelling of 'echoes' (fda19b5) | |||||
- #967: Unit test permissions (63e6704) | |||||
- #968: Bumped version of WebSocket4Net to 0.15.2 (8537924) | |||||
- #972: Include sample bots in the source repository (217ec34) | |||||
- #1046: We now support .NET Standard 2.0 (bbbac85) | |||||
- #1114: Various performance optimizations (82cfdff) | |||||
- #1149: The CI will now test on Ubuntu as well as Windows (674a0fc) | |||||
- #1161: The entire documentation has been rewritten, all core entities were docstringed (ff0fea9) | |||||
- #1175: Documentation changes in command samples (fb8dbca) | |||||
- #1177: Added documentation for sharded bots (00097d3) | |||||
- #1219: The project now has a logo! 🎉 (5750c3e) | |||||
- This project is now licensed to the Discord.Net contributors (710e182) | |||||
- Added templates for pull requests (f2ddf51) | |||||
- Fixed documentation layout for the logo (bafdce4) | |||||
## [1.0.2] - 2017-09-09 | |||||
### Fixed | |||||
- Guilds utilizing Channel Categories will no longer crash bots on the `READY` event. | |||||
## [1.0.1] - 2017-07-05 | |||||
### Fixed | |||||
- #732: Fixed parameter preconditions not being loaded from class-based modules (b6dcc9e) | |||||
- #726: Fixed CalculateScore throwing an ArgumentException for missing parameters (7597cf5) | |||||
- EmbedBuilder URI validation should no longer throw NullReferenceExceptions in certain edge cases (d89804d) | |||||
- Fixed module auto-detection for nested modules (d2afb06) | |||||
### Changed | |||||
- ShardedCommandContext now inherits from SocketCommandContext (8cd99be) |
@@ -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) |
@@ -0,0 +1,55 @@ | |||||
# Discord.Net # | |||||
[](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. To do this, we will increment the minor version | |||||
when adding new API surface to the library. To counter the 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 will 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. |
@@ -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> |
@@ -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> |
@@ -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> |
@@ -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> |
@@ -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> |
@@ -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> |
@@ -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> |
@@ -0,0 +1,11 @@ | |||||
<Project Sdk="Microsoft.NET.Sdk"> | |||||
<PropertyGroup> | |||||
<Description>The core components for Discord.Net.</Description> | |||||
</PropertyGroup> | |||||
<PropertyGroup> | |||||
<TargetFramework>netstandard2.1</TargetFramework> | |||||
</PropertyGroup> | |||||
</Project> |
@@ -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> |
@@ -0,0 +1,57 @@ | |||||
<?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" /> | |||||
<PropertyGroup> | |||||
<GeneratedInternalsVisibleToFile Condition="'$(GeneratedInternalsVisibleToFile)' == ''">$(IntermediateOutputPath)$(MSBuildProjectName).InternalsVisibleTo$(DefaultLanguageSourceExtension)</GeneratedInternalsVisibleToFile> | |||||
</PropertyGroup> | |||||
<ItemDefinitionGroup> | |||||
<InternalsVisibleTo> | |||||
<Visible>false</Visible> | |||||
</InternalsVisibleTo> | |||||
</ItemDefinitionGroup> | |||||
<Target Name="GenerateInternalsVisibleTo" | |||||
BeforeTargets="CoreCompile" | |||||
DependsOnTargets="PrepareForBuild;CoreGenerateInternalsVisibleTo" | |||||
Condition="'@(InternalsVisibleTo)' != ''" /> | |||||
<Target Name="CoreGenerateInternalsVisibleTo" | |||||
Condition="'$(Language)' == 'VB' or '$(Language)' == 'C#'" | |||||
Inputs="$(MSBuildAllProjects)" | |||||
Outputs="$(GeneratedInternalsVisibleToFile)"> | |||||
<CreateItem Include="System.Runtime.CompilerServices.InternalsVisibleToAttribute" AdditionalMetadata="_Parameter1=%(InternalsVisibleTo.Identity)" Condition="'%(InternalsVisibleTo.PublicKey)' == ''"> | |||||
<Output TaskParameter="Include" ItemName="InternalsVisibleToAttribute" /> | |||||
</CreateItem> | |||||
<CreateItem Include="System.Runtime.CompilerServices.InternalsVisibleToAttribute" AdditionalMetadata="_Parameter1=%(InternalsVisibleTo.Identity), PublicKey=%(InternalsVisibleTo.PublicKey)" Condition="'%(InternalsVisibleTo.PublicKey)' != ''"> | |||||
<Output TaskParameter="Include" ItemName="InternalsVisibleToAttribute" /> | |||||
</CreateItem> | |||||
<WriteCodeFragment AssemblyAttributes="@(InternalsVisibleToAttribute)" Language="$(Language)" OutputFile="$(GeneratedInternalsVisibleToFile)"> | |||||
<Output TaskParameter="OutputFile" ItemName="Compile" /> | |||||
<Output TaskParameter="OutputFile" ItemName="FileWrites" /> | |||||
</WriteCodeFragment> | |||||
</Target> | |||||
<!-- Empty target so that `dotnet test` will work on the solution --> | |||||
<!-- https://github.com/Microsoft/vstest/issues/411 --> | |||||
<Target Name="VSTest" /> | |||||
</Project> |