| @@ -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> | |||||