@@ -1,113 +1,380 @@ | |||
############################################################################### | |||
# EditorConfig is awesome: http://EditorConfig.org | |||
############################################################################### | |||
############################################################################### | |||
# Top-most EditorConfig file | |||
############################################################################### | |||
root = true | |||
############################################################################### | |||
# Set default behavior to: | |||
# a UTF-8 encoding, | |||
# Unix-style line endings, | |||
# a newline ending the file, | |||
# 4 space indentation, and | |||
# trimming of trailing whitespace | |||
############################################################################### | |||
[*] | |||
charset = utf-8 | |||
end_of_line = lf | |||
insert_final_newline = true | |||
indent_size = 4 | |||
indent_style = space | |||
indent_size = 4 | |||
trim_trailing_whitespace = true | |||
[*.{csproj,json,md,nuspec,yml}] | |||
############################################################################### | |||
# Set file behavior to: | |||
# 2 space indentation | |||
############################################################################### | |||
[*.{cmd,config,csproj,json,nuspec,props,ps1,resx,sh,targets,yml}] | |||
indent_size = 2 | |||
indent_style = space | |||
[*.{sln,xml}] | |||
############################################################################### | |||
# Set file behavior to: | |||
# Windows-style line endings, and | |||
# tabular indentation | |||
############################################################################### | |||
[*.sln] | |||
end_of_line = crlf | |||
indent_style = tab | |||
############################################################################### | |||
# Set dotnet naming rules to: | |||
# suggest async members be pascal case suffixed with Async | |||
# suggest const declarations be pascal case | |||
# suggest interfaces be pascal case prefixed with I | |||
# suggest parameters be camel case | |||
# suggest private and internal static fields be pascal case | |||
# suggest private and internal fields be camel case and prefixed with underscore | |||
# suggest public and protected declarations be pascal case | |||
# suggest static readonly declarations be pascal case | |||
# suggest type parameters be prefixed with T | |||
############################################################################### | |||
[*.cs] | |||
dotnet_style_qualification_for_field = false:suggestion | |||
dotnet_style_qualification_for_property = false:suggestion | |||
dotnet_style_qualification_for_method = false:suggestion | |||
dotnet_style_qualification_for_event = false: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_style_predefined_type_for_locals_parameters_members = true:suggestion | |||
dotnet_style_predefined_type_for_member_access = true:suggestion | |||
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_style_object_initializer = true:suggestion | |||
dotnet_naming_rule.interfaces_should_be_pascal_case_prefixed_with_i.severity = suggestion | |||
dotnet_naming_rule.interfaces_should_be_pascal_case_prefixed_with_i.style = pascal_case_prefixed_with_i | |||
dotnet_naming_rule.interfaces_should_be_pascal_case_prefixed_with_i.symbols = interfaces | |||
dotnet_naming_rule.parameters_should_be_camel_case.severity = suggestion | |||
dotnet_naming_rule.parameters_should_be_camel_case.style = camel_case | |||
dotnet_naming_rule.parameters_should_be_camel_case.symbols = parameters | |||
dotnet_naming_rule.private_and_internal_static_fields_should_be_pascal_case.severity = suggestion | |||
dotnet_naming_rule.private_and_internal_static_fields_should_be_pascal_case.style = pascal_case | |||
dotnet_naming_rule.private_and_internal_static_fields_should_be_pascal_case.symbols = private_and_internal_static_fields | |||
dotnet_naming_rule.private_and_internal_fields_should_be_camel_case_prefixed_with_underscore.severity = suggestion | |||
dotnet_naming_rule.private_and_internal_fields_should_be_camel_case_prefixed_with_underscore.style = camel_case_prefixed_with_underscore | |||
dotnet_naming_rule.private_and_internal_fields_should_be_camel_case_prefixed_with_underscore.symbols = private_and_internal_fields | |||
dotnet_naming_rule.public_and_protected_declarations_should_be_pascal_case.severity = suggestion | |||
dotnet_naming_rule.public_and_protected_declarations_should_be_pascal_case.style = pascal_case | |||
dotnet_naming_rule.public_and_protected_declarations_should_be_pascal_case.symbols = public_and_protected_declarations | |||
dotnet_naming_rule.static_readonly_declarations_should_be_pascal_case.severity = suggestion | |||
dotnet_naming_rule.static_readonly_declarations_should_be_pascal_case.style = pascal_case | |||
dotnet_naming_rule.static_readonly_declarations_should_be_pascal_case.symbols = static_readonly_declarations | |||
dotnet_naming_rule.type_parameters_should_be_pascal_case_prefixed_with_t.severity = suggestion | |||
dotnet_naming_rule.type_parameters_should_be_pascal_case_prefixed_with_t.style = pascal_case_prefixed_with_t | |||
dotnet_naming_rule.type_parameters_should_be_pascal_case_prefixed_with_t.symbols = type_parameters | |||
############################################################################### | |||
# Set dotnet naming styles to define: | |||
# camel case | |||
# camel case prefixed with _ | |||
# camel case prefixed with s_ | |||
# pascal case | |||
# pascal case suffixed with Async | |||
# pascal case prefixed with I | |||
# pascal case prefixed with T | |||
############################################################################### | |||
[*.cs] | |||
dotnet_naming_style.camel_case.capitalization = camel_case | |||
dotnet_naming_style.camel_case_prefixed_with_underscore.capitalization = camel_case | |||
dotnet_naming_style.camel_case_prefixed_with_underscore.required_prefix = _ | |||
dotnet_naming_style.pascal_case.capitalization = pascal_case | |||
dotnet_naming_style.pascal_case_suffixed_with_async.capitalization = pascal_case | |||
dotnet_naming_style.pascal_case_suffixed_with_async.required_suffix = Async | |||
dotnet_naming_style.pascal_case_prefixed_with_i.capitalization = pascal_case | |||
dotnet_naming_style.pascal_case_prefixed_with_i.required_prefix = I | |||
dotnet_naming_style.pascal_case_prefixed_with_t.capitalization = pascal_case | |||
dotnet_naming_style.pascal_case_prefixed_with_t.required_prefix = T | |||
############################################################################### | |||
# Set dotnet naming symbols to: | |||
# async members | |||
# const declarations | |||
# interfaces | |||
# private and internal fields | |||
# private and internal static fields | |||
# public and protected declarations | |||
# static readonly declarations | |||
# type parameters | |||
############################################################################### | |||
[*.cs] | |||
dotnet_naming_symbols.async_members.required_modifiers = async | |||
dotnet_naming_symbols.const_declarations.required_modifiers = const | |||
dotnet_naming_symbols.interfaces.applicable_kinds = interface | |||
dotnet_naming_symbols.parameters.applicable_kinds = parameter | |||
dotnet_naming_symbols.private_and_internal_fields.applicable_accessibilities = private, internal | |||
dotnet_naming_symbols.private_and_internal_fields.applicable_kinds = field | |||
dotnet_naming_symbols.private_and_internal_static_fields.applicable_accessibilities = private, internal | |||
dotnet_naming_symbols.private_and_internal_static_fields.applicable_kinds = field | |||
dotnet_naming_symbols.private_and_internal_static_fields.required_modifiers = static | |||
dotnet_naming_symbols.public_and_protected_declarations.applicable_accessibilities = public, protected | |||
dotnet_naming_symbols.public_and_protected_declarations.applicable_kinds = namespace, class, struct, enum, property, method, field, event, delegate, local_function | |||
dotnet_naming_symbols.static_readonly_declarations.required_modifiers = static, readonly | |||
dotnet_naming_symbols.type_parameters.applicable_kinds = type_parameter | |||
############################################################################### | |||
# Set dotnet sort options to: | |||
# do not separate import directives into groups, and | |||
# sort system directives first | |||
############################################################################### | |||
[*.cs] | |||
dotnet_separate_import_directive_groups = false | |||
dotnet_sort_system_directives_first = true | |||
############################################################################### | |||
# Set dotnet style options to: | |||
# suggest null-coalescing expressions, | |||
# suggest collection-initializers, | |||
# suggest explicit tuple names, | |||
# suggest null-propogation | |||
# suggest object-initializers, | |||
# suggest parentheses in arithmetic binary operators for clarity, | |||
# suggest parentheses in other binary operators for clarity, | |||
# don't suggest parentheses in other operators if unnecessary, | |||
# suggest parentheses in relational binary operators for clarity, | |||
# suggest predefined-types for locals, parameters, and members, | |||
# suggest predefined-types of type names for member access, | |||
# don't suggest auto properties, | |||
# suggest compound assignment, | |||
# suggest conditional expression over assignment, | |||
# suggest conditional expression over return, | |||
# suggest inferred anonymous types, | |||
# suggest inferred tuple names, | |||
# suggest 'is null' checks over '== null', | |||
# don't suggest 'this.' and 'Me.' for events, | |||
# don't suggest 'this.' and 'Me.' for fields, | |||
# don't suggest 'this.' and 'Me.' for methods, | |||
# don't suggest 'this.' and 'Me.' for properties, | |||
# suggest readonly fields, and | |||
# suggest specifying accessibility modifiers | |||
############################################################################### | |||
[*.cs] | |||
dotnet_style_coalesce_expression = true:suggestion | |||
dotnet_style_collection_initializer = true:suggestion | |||
dotnet_style_explicit_tuple_names = true:suggestion | |||
dotnet_style_coalesce_expression = true:suggestion | |||
dotnet_style_null_propagation = true:suggestion | |||
dotnet_style_object_initializer = true:suggestion | |||
csharp_style_var_for_built_in_types = true:suggestion | |||
csharp_style_var_when_type_is_apparent = true:suggestion | |||
csharp_style_var_elsewhere = 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 | |||
csharp_style_expression_bodied_methods = true:none | |||
csharp_style_expression_bodied_operators = true:none | |||
csharp_style_expression_bodied_properties = true:none | |||
csharp_style_expression_bodied_indexers = true:none | |||
csharp_style_expression_bodied_accessors = true:none | |||
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion | |||
dotnet_style_predefined_type_for_member_access = true:suggestion | |||
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion | |||
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion | |||
csharp_style_inlined_variable_declaration = true:suggestion | |||
dotnet_style_prefer_auto_properties = false:suggestion | |||
dotnet_style_prefer_compound_assignment = true:suggestion | |||
dotnet_style_prefer_conditional_expression_over_assignment = true:suggestion | |||
dotnet_style_prefer_conditional_expression_over_return = true:suggestion | |||
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion | |||
dotnet_style_prefer_inferred_tuple_names = true:suggestion | |||
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion | |||
csharp_prefer_simple_default_expression = false:none | |||
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 | |||
csharp_style_throw_expression = true:none | |||
csharp_style_conditional_delegate_call = true:none | |||
csharp_prefer_braces = false:none | |||
dotnet_style_readonly_field = true:suggestion | |||
dotnet_style_require_accessibility_modifiers = always:suggestion | |||
dotnet_sort_system_directives_first = false | |||
############################################################################### | |||
# Set dotnet style options to: | |||
# suggest removing all unused parameters | |||
############################################################################### | |||
[*.cs] | |||
dotnet_code_quality_unused_parameters = all:suggestion | |||
csharp_new_line_before_open_brace = all | |||
csharp_new_line_before_else = true | |||
############################################################################### | |||
# Set csharp indent options to: | |||
# indent block contents, | |||
# not indent braces, | |||
# indent case contents, | |||
# not indent case contents when block, | |||
# indent labels one less than the current, and | |||
# indent switch labels | |||
############################################################################### | |||
[*.cs] | |||
csharp_indent_block_contents = true | |||
csharp_indent_braces = false | |||
csharp_indent_case_contents = true | |||
csharp_indent_case_contents_when_block = false | |||
csharp_indent_labels = one_less_than_current | |||
csharp_indent_switch_labels = true | |||
############################################################################### | |||
# Set csharp new-line options to: | |||
# insert a new-line before "catch", | |||
# insert a new-line before "else", | |||
# insert a new-line before "finally", | |||
# insert a new-line before members in anonymous-types, | |||
# insert a new-line before members in object-initializers, | |||
# insert a new-line before all open braces except anonymous methods, anonymous types, lambdas, and object collections and | |||
# insert a new-line within query expression clauses | |||
############################################################################### | |||
[*.cs] | |||
csharp_new_line_before_catch = true | |||
csharp_new_line_before_else = true | |||
csharp_new_line_before_finally = true | |||
csharp_new_line_before_members_in_object_initializers = true | |||
csharp_new_line_before_members_in_anonymous_types = true | |||
csharp_new_line_before_members_in_object_initializers = true | |||
csharp_new_line_before_open_brace = accessors, control_blocks, events, indexers, local_functions, methods, object_collection_array_initializers, properties, types | |||
csharp_new_line_within_query_expression_clauses = true | |||
csharp_indent_case_contents = true | |||
csharp_indent_switch_labels = true | |||
csharp_indent_labels = flush_left | |||
############################################################################### | |||
# Set csharp preserve options to: | |||
# preserve single-line blocks, and | |||
# not preserve single-line statements | |||
############################################################################### | |||
[*.cs] | |||
csharp_preserve_single_line_blocks = true | |||
csharp_preserve_single_line_statements = false | |||
############################################################################### | |||
# Set csharp space options to: | |||
# remove any space after a cast, | |||
# add a space after the colon in an inheritance clause, | |||
# add a space after a comma, | |||
# remove any space after a dot, | |||
# add a space after keywords in control flow statements, | |||
# add a space after a semicolon in a "for" statement, | |||
# add a space before and after binary operators, | |||
# remove space around declaration statements, | |||
# add a space before the colon in an inheritance clause, | |||
# remove any space before a comma, | |||
# remove any space before a dot, | |||
# remove any space before an open square-bracket, | |||
# remove any space before a semicolon in a "for" statement, | |||
# remove any space between empty square-brackets, | |||
# remove any space between a method call's empty parameter list parenthesis, | |||
# remove any space between a method call's name and its opening parenthesis, | |||
# remove any space between a method call's parameter list parenthesis, | |||
# remove any space between a method declaration's empty parameter list parenthesis, | |||
# remove any space between a method declaration's name and its openening parenthesis, | |||
# remove any space between a method declaration's parameter list parenthesis, | |||
# remove any space between parentheses, and | |||
# remove any space between square brackets | |||
############################################################################### | |||
[*.cs] | |||
csharp_space_after_cast = false | |||
csharp_space_after_colon_in_inheritance_clause = true | |||
csharp_space_after_comma = true | |||
csharp_space_after_dot = false | |||
csharp_space_after_keywords_in_control_flow_statements = true | |||
csharp_space_between_method_declaration_parameter_list_parentheses = false | |||
csharp_space_between_method_call_parameter_list_parentheses = false | |||
csharp_preserve_single_line_statements = false | |||
csharp_preserve_single_line_blocks = true | |||
csharp_space_after_semicolon_in_for_statement = true | |||
dotnet_naming_rule.all_of_const_fields_are_pascal_case.symbols = const_fields | |||
dotnet_naming_rule.all_of_const_fields_are_pascal_case.style = pascal_case | |||
dotnet_naming_rule.all_of_const_fields_are_pascal_case.severity = suggestion | |||
csharp_space_around_binary_operators = before_and_after | |||
csharp_space_around_declaration_statements = do_not_ignore | |||
dotnet_naming_rule.all_of_local_fields_without_const_are_camel_case.symbols = local_fields | |||
dotnet_naming_rule.all_of_local_fields_without_const_are_camel_case.style = starts_with_low_line_camel_case | |||
dotnet_naming_rule.all_of_local_fields_without_const_are_camel_case.severity = suggestion | |||
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 | |||
dotnet_naming_rule.all_of_interfaces_starts_with_low_line_camel_case.symbols = interfaces | |||
dotnet_naming_rule.all_of_interfaces_starts_with_low_line_camel_case.style = starts_with_i_pascal_case | |||
dotnet_naming_rule.all_of_interfaces_starts_with_low_line_camel_case.severity = suggestion | |||
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 | |||
dotnet_naming_rule.default_is_pascal_case.symbols = without_interfaces_and_fields | |||
dotnet_naming_rule.default_is_pascal_case.style = pascal_case | |||
dotnet_naming_rule.default_is_pascal_case.severity = suggestion | |||
############################################################################### | |||
# Set csharp style options to: | |||
# don't suggest braces, | |||
# suggest simple default expressions, | |||
# suggest a preferred modifier order, | |||
# suggest conditional delegate calls, | |||
# suggest deconstructed variable declarations, | |||
# don't suggest expression-bodied accessors, | |||
# don't suggest expression-bodied indexers, | |||
# don't suggest expression-bodied constructors, | |||
# suggest expression-bodied lambdas, | |||
# don't suggest expression-bodied methods, | |||
# don't suggest expression-bodied operators, | |||
# don't suggest expression-bodied properties, | |||
# suggest inlined variable declarations, | |||
# suggest local over anonymous functions, | |||
# suggest pattern-matching over "as" with "null" check, | |||
# suggest pattern-matching over "is" with "cast" check, | |||
# suggest throw expressions, | |||
# suggest a discard variable for unused value expression statements, | |||
# suggest a discard variable for unused assignments, | |||
# suggest var for built-in types, | |||
# suggest var when the type is not apparent, and | |||
# suggest var when the type is apparent | |||
############################################################################### | |||
[*.cs] | |||
csharp_prefer_braces = false:suggestion | |||
csharp_prefer_simple_default_expression = true:suggestion | |||
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion | |||
dotnet_naming_symbols.const_fields.applicable_kinds = field | |||
dotnet_naming_symbols.const_fields.applicable_accessibilities = * | |||
dotnet_naming_symbols.const_fields.required_modifiers = const | |||
csharp_style_conditional_delegate_call = true:suggestion | |||
csharp_style_deconstructed_variable_declaration = true:suggestion | |||
dotnet_naming_symbols.interfaces.applicable_kinds = interface | |||
dotnet_naming_symbols.interfaces.applicable_accessibilities = * | |||
csharp_style_expression_bodied_accessors = when_on_single_line:suggestion | |||
csharp_style_expression_bodied_constructors = false:suggestion | |||
csharp_style_expression_bodied_indexers = when_on_single_line:suggestion | |||
csharp_style_expression_bodied_lambdas = true:suggestion | |||
csharp_style_expression_bodied_methods = when_on_single_line:suggestion | |||
csharp_style_expression_bodied_operators = when_on_single_line:suggestion | |||
csharp_style_expression_bodied_properties = when_on_single_line:suggestion | |||
dotnet_naming_symbols.local_fields.applicable_kinds = field | |||
dotnet_naming_symbols.local_fields.applicable_accessibilities = internal, private, protected, protected_internal | |||
dotnet_naming_symbols.local_fields.required_modifiers = abstract, must_inherit, readonly, static, shared | |||
csharp_style_inlined_variable_declaration = true:suggestion | |||
dotnet_naming_symbols.without_interfaces_and_fields.applicable_kinds = class, struct, enum, property, method, event, namespace, delegate, type_parameter | |||
dotnet_naming_symbols.without_interfaces_and_fields.applicable_accessibilities = * | |||
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 | |||
dotnet_naming_style.pascal_case.capitalization = pascal_case | |||
csharp_style_throw_expression = true:suggestion | |||
dotnet_naming_style.starts_with_i_pascal_case.required_prefix = I | |||
dotnet_naming_style.starts_with_i_pascal_case.capitalization = pascal_case | |||
csharp_style_unused_value_expression_statement_preference = discard_variable:suggestion | |||
csharp_style_unused_value_assignment_preference = discard_variable:suggestion | |||
dotnet_naming_style.starts_with_low_line_camel_case.required_prefix = _ | |||
dotnet_naming_style.starts_with_low_line_camel_case.capitalization = camel_case | |||
csharp_style_var_for_built_in_types = true:none | |||
csharp_style_var_elsewhere = true:suggestion | |||
csharp_style_var_when_type_is_apparent = true:suggestion |
@@ -1,63 +1,24 @@ | |||
############################################################################### | |||
# Set default behavior to automatically normalize line endings. | |||
# Default to Unix-style text files | |||
############################################################################### | |||
* text=auto | |||
* text eol=lf | |||
############################################################################### | |||
# Set default behavior for command prompt diff. | |||
# | |||
# This is need for earlier builds of msysgit that does not have it on by | |||
# default for csharp files. | |||
# Note: This is only used by command line | |||
# Treat code and markdown as Unix-style text files | |||
############################################################################### | |||
#*.cs diff=csharp | |||
*.cs text eol=lf | |||
*.csproj text eol=lf | |||
*.md text eol=lf | |||
*.props text eol=lf | |||
*.targets text eol=lf | |||
############################################################################### | |||
# Set the merge driver for project and solution files | |||
# | |||
# Merging from the command prompt will add diff markers to the files if there | |||
# are conflicts (Merging from VS is not affected by the settings below, in VS | |||
# the diff markers are never inserted). Diff markers may cause the following | |||
# file extensions to fail to load in VS. An alternative would be to treat | |||
# these files as binary and thus will always conflict and require user | |||
# intervention with every merge. To do so, just uncomment the entries below | |||
############################################################################### | |||
#*.sln merge=binary | |||
#*.csproj merge=binary | |||
#*.vbproj merge=binary | |||
#*.vcxproj merge=binary | |||
#*.vcproj merge=binary | |||
#*.dbproj merge=binary | |||
#*.fsproj merge=binary | |||
#*.lsproj merge=binary | |||
#*.wixproj merge=binary | |||
#*.modelproj merge=binary | |||
#*.sqlproj merge=binary | |||
#*.wwaproj merge=binary | |||
############################################################################### | |||
# behavior for image files | |||
# | |||
# image files are treated as binary by default. | |||
# Treat Solution files as Windows text files | |||
############################################################################### | |||
#*.jpg binary | |||
#*.png binary | |||
#*.gif binary | |||
*.sln text eol=crlf | |||
############################################################################### | |||
# diff behavior for common document formats | |||
# | |||
# Convert binary document formats to text before diffing them. This feature | |||
# is only available from the command line. Turn it on by uncommenting the | |||
# entries below. | |||
############################################################################### | |||
#*.doc diff=astextplain | |||
#*.DOC diff=astextplain | |||
#*.docx diff=astextplain | |||
#*.DOCX diff=astextplain | |||
#*.dot diff=astextplain | |||
#*.DOT diff=astextplain | |||
#*.pdf diff=astextplain | |||
#*.PDF diff=astextplain | |||
#*.rtf diff=astextplain | |||
#*.RTF diff=astextplain | |||
# Treat images as binary files | |||
############################################################################### | |||
*.png binary | |||
*.ai binary |
@@ -1,3 +0,0 @@ | |||
github: quinchs | |||
open_collective: discordnet | |||
custom: https://paypal.me/quinchs |
@@ -1,86 +0,0 @@ | |||
name: 🐞 Bug Report | |||
description: File a bug report | |||
title: "[Bug]: " | |||
labels: ["bug"] | |||
body: | |||
- type: markdown | |||
attributes: | |||
value: Thanks for taking the time to fill out this bug report! | |||
- type: checkboxes | |||
attributes: | |||
label: Check The Docs | |||
description: Please refer to our [FAQs](https://discordnet.dev/faq/basics/getting-started.html), [Documentation](https://discordnet.dev/api/index.html), | |||
and [Migration Guide](https://discordnet.dev/guides/v2_v3_guide/v2_to_v3_guide.html) before reporting issues. | |||
options: | |||
- label: "I double checked the docs and couldn't find any useful information." | |||
required: true | |||
- type: checkboxes | |||
attributes: | |||
label: Verify Issue Source | |||
description: If your issue is related to an exception make sure the error was thrown by Discord.Net, and not your code or another library. | |||
If you get an `HttpException` with the error code `401`, then the error is caused by your bot's permissions, not dnet. | |||
If you have a issue that does directly relate to an API bug, feel free to open a [Q&A Discussion](https://github.com/discord-net/Discord.Net/discussions) | |||
options: | |||
- label: I verified the issue was caused by Discord.Net. | |||
required: true | |||
- type: checkboxes | |||
attributes: | |||
label: Check your intents | |||
description: If your issue is related to not receiving expected events, you may have setup your gateway intents incorrectly. | |||
Newer versions of Discord.Net use a more modern version of Discord's API that requires you tell it what events | |||
you want to receive. Discord.Net defaults to all non-privleged intents, but if your bot requires privileged intents | |||
you need specify them in your clients config. You can see what intents you need for your events | |||
[here](https://discord.com/developers/docs/topics/gateway#list-of-intents). | |||
options: | |||
- label: I double checked that I have the required intents. | |||
required: true | |||
- type: textarea | |||
id: description | |||
attributes: | |||
label: Description | |||
description: A brief explanation of the bug. | |||
placeholder: When I start a DiscordSocketClient without stopping it, the gateway thread gets blocked. | |||
validations: | |||
required: true | |||
- type: input | |||
id: version | |||
attributes: | |||
label: Version | |||
description: What version of Discord.Net are you using? | |||
placeholder: ex. 3.1.0 | |||
validations: | |||
required: true | |||
- type: input | |||
id: working-version | |||
attributes: | |||
label: Working Version | |||
description: If this worked on an older version of Discord.Net put that version here. | |||
placeholder: ex. 2.4.0 | |||
validations: | |||
required: false | |||
- type: textarea | |||
id: logs | |||
attributes: | |||
label: Logs | |||
description: Add applicable logs and/or a stack trace here. | |||
validations: | |||
required: true | |||
- type: textarea | |||
id: sample | |||
attributes: | |||
label: Sample | |||
description: Include a (short) code sample that reproduces your issue 100% of time (comments would be great). | |||
placeholder: | | |||
```cs | |||
My.Code(); | |||
``` | |||
validations: | |||
required: false | |||
- type: textarea | |||
id: packages | |||
attributes: | |||
label: Packages | |||
description: Please list all 3rd party packages in use if applicable, including their versions. | |||
placeholder: Discord.Addons.Hosting V5.1.0, Discord.InteractivityAddon V2.4.0, etc. | |||
validations: | |||
required: true |
@@ -0,0 +1,36 @@ | |||
name: Build using .NET Core | |||
on: | |||
push: | |||
branches: [ 3.0 ] | |||
paths-ignore: | |||
- 'docs/**' | |||
jobs: | |||
build: | |||
runs-on: ubuntu-latest | |||
steps: | |||
- uses: actions/checkout@v2 | |||
- name: Setup .NET Core | |||
uses: actions/setup-dotnet@v1 | |||
with: | |||
dotnet-version: 5.0.202 | |||
- name: Install dependencies | |||
run: dotnet restore | |||
- name: Build Discord.Net | |||
run: dotnet build --no-restore --configuration Release | |||
- name: Run Unit Tests | |||
run: dotnet test --no-build --configuration Release | |||
- name: Pack Discord.Net | |||
run: dotnet pack --no-build --configuration Release | |||
- name: Upload Artifacts | |||
uses: actions/upload-artifact@v1.0.0 | |||
with: | |||
name: nupkgs | |||
path: ${{ github.workspace }}/artifacts/pkg/ |
@@ -1,7 +1,10 @@ | |||
## Ignore Visual Studio temporary files, build results, and | |||
## files generated by popular Visual Studio add-ons. | |||
## | |||
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore | |||
# User-specific files | |||
*.rsuser | |||
*.suo | |||
*.user | |||
*.userosscache | |||
@@ -10,18 +13,30 @@ | |||
# User-specific files (MonoDevelop/Xamarin Studio) | |||
*.userprefs | |||
# Mono auto generated files | |||
mono_crash.* | |||
# Build results | |||
[Dd]ebug/ | |||
[Dd]ebugPublic/ | |||
[Rr]elease/ | |||
[Rr]eleases/ | |||
build/ | |||
x64/ | |||
x86/ | |||
[Aa][Rr][Mm]/ | |||
[Aa][Rr][Mm]64/ | |||
bld/ | |||
[Bb]in/ | |||
[Oo]bj/ | |||
[Ll]og/ | |||
# Visual Studo 2015 cache/options directory | |||
# Visual Studio 2015/2017 cache/options directory | |||
.vs/ | |||
# Uncomment if you have tasks that create the project's static files in wwwroot | |||
#wwwroot/ | |||
# Visual Studio 2017 auto generated files | |||
Generated\ Files/ | |||
# MSTest test Results | |||
[Tt]est[Rr]esult*/ | |||
@@ -36,14 +51,28 @@ TestResult.xml | |||
[Rr]eleasePS/ | |||
dlldata.c | |||
# Benchmark Results | |||
BenchmarkDotNet.Artifacts/ | |||
# .NET Core | |||
project.lock.json | |||
project.fragment.lock.json | |||
artifacts/ | |||
# StyleCop | |||
StyleCopReport.xml | |||
# Files built by Visual Studio | |||
*_i.c | |||
*_p.c | |||
*_i.h | |||
*_h.h | |||
*.ilk | |||
*.meta | |||
*.obj | |||
*.iobj | |||
*.pch | |||
*.pdb | |||
*.ipdb | |||
*.pgc | |||
*.pgd | |||
*.rsp | |||
@@ -53,6 +82,7 @@ dlldata.c | |||
*.tlh | |||
*.tmp | |||
*.tmp_proj | |||
*_wpftmp.csproj | |||
*.log | |||
*.vspscc | |||
*.vssscc | |||
@@ -68,14 +98,21 @@ _Chutzpah* | |||
ipch/ | |||
*.aps | |||
*.ncb | |||
*.opendb | |||
*.opensdf | |||
*.sdf | |||
*.cachefile | |||
*.VC.db | |||
*.VC.VC.opendb | |||
# Visual Studio profiler | |||
*.psess | |||
*.vsp | |||
*.vspx | |||
*.sap | |||
# Visual Studio Trace Files | |||
*.e2e | |||
# TFS 2012 Local Workspace | |||
$tf/ | |||
@@ -88,7 +125,7 @@ _ReSharper*/ | |||
*.[Rr]e[Ss]harper | |||
*.DotSettings.user | |||
# JustCode is a .NET coding addin-in | |||
# JustCode is a .NET coding add-in | |||
.JustCode | |||
# TeamCity is a build add-in | |||
@@ -97,9 +134,18 @@ _TeamCity* | |||
# DotCover is a Code Coverage Tool | |||
*.dotCover | |||
# AxoCover is a Code Coverage Tool | |||
.axoCover/* | |||
!.axoCover/settings.json | |||
# Visual Studio code coverage results | |||
*.coverage | |||
*.coveragexml | |||
# NCrunch | |||
_NCrunch_* | |||
.*crunch*.local.xml | |||
nCrunchTemp_* | |||
# MightyMoose | |||
*.mm.* | |||
@@ -127,38 +173,69 @@ publish/ | |||
# Publish Web Output | |||
*.[Pp]ublish.xml | |||
*.azurePubxml | |||
# TODO: Comment the next line if you want to checkin your web deploy settings | |||
# Note: Comment the next line if you want to checkin your web deploy settings, | |||
# but database connection strings (with potential passwords) will be unencrypted | |||
*.pubxml | |||
*.publishproj | |||
# Microsoft Azure Web App publish settings. Comment the next line if you want to | |||
# checkin your Azure Web App publish settings, but sensitive information contained | |||
# in these scripts will be unencrypted | |||
PublishScripts/ | |||
# NuGet Packages | |||
*.nupkg | |||
# The packages folder can be ignored because of Package Restore | |||
**/packages/* | |||
**/[Pp]ackages/* | |||
# except build/, which is used as an MSBuild target. | |||
!**/packages/build/ | |||
!**/[Pp]ackages/build/ | |||
# Uncomment if necessary however generally it will be regenerated when needed | |||
#!**/packages/repositories.config | |||
#!**/[Pp]ackages/repositories.config | |||
# NuGet v3's project.json files produces more ignorable files | |||
*.nuget.props | |||
*.nuget.targets | |||
# Windows Azure Build Output | |||
# Microsoft Azure Build Output | |||
csx/ | |||
*.build.csdef | |||
# Windows Store app package directory | |||
# Microsoft Azure Emulator | |||
ecf/ | |||
rcf/ | |||
# Windows Store app package directories and files | |||
AppPackages/ | |||
BundleArtifacts/ | |||
Package.StoreAssociation.xml | |||
_pkginfo.txt | |||
*.appx | |||
*.appxbundle | |||
*.appxupload | |||
# Visual Studio cache files | |||
# files ending in .cache can be ignored | |||
*.[Cc]ache | |||
# but keep track of directories ending in .cache | |||
!?*.[Cc]ache/ | |||
# Others | |||
*.[Cc]ache | |||
ClientBin/ | |||
~$* | |||
*~ | |||
*.dbmdl | |||
*.dbproj.schemaview | |||
*.jfm | |||
*.pfx | |||
*.publishsettings | |||
node_modules/ | |||
bower_components/ | |||
orleans.codegen.cs | |||
# Including strong name files can present a security risk | |||
# (https://github.com/github/gitignore/pull/2483#issue-259490424) | |||
#*.snk | |||
# Since there are multiple workflows, uncomment next line to ignore bower_components | |||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) | |||
#bower_components/ | |||
# RIA/Silverlight projects | |||
Generated_Code/ | |||
@@ -170,21 +247,30 @@ _UpgradeReport_Files/ | |||
Backup*/ | |||
UpgradeLog*.XML | |||
UpgradeLog*.htm | |||
ServiceFabricBackup/ | |||
*.rptproj.bak | |||
# SQL Server files | |||
*.mdf | |||
*.ldf | |||
*.ndf | |||
# Business Intelligence projects | |||
*.rdl.data | |||
*.bim.layout | |||
*.bim_*.settings | |||
*.rptproj.rsuser | |||
*- Backup*.rdl | |||
# Microsoft Fakes | |||
FakesAssemblies/ | |||
# GhostDoc plugin setting file | |||
*.GhostDoc.xml | |||
# Node.js Tools for Visual Studio | |||
.ntvs_analysis.dat | |||
node_modules/ | |||
# Visual Studio 6 build log | |||
*.plg | |||
@@ -192,17 +278,152 @@ FakesAssemblies/ | |||
# Visual Studio 6 workspace options file | |||
*.opt | |||
#Custom | |||
project.lock.json | |||
/test/Discord.Net.Tests/config.json | |||
/test/Discord.Net.Tests/cache.db* | |||
/docs/_build | |||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) | |||
*.vbw | |||
# Visual Studio LightSwitch build output | |||
**/*.HTMLClient/GeneratedArtifacts | |||
**/*.DesktopClient/GeneratedArtifacts | |||
**/*.DesktopClient/ModelManifest.xml | |||
**/*.Server/GeneratedArtifacts | |||
**/*.Server/ModelManifest.xml | |||
_Pvt_Extensions | |||
# Paket dependency manager | |||
.paket/paket.exe | |||
paket-files/ | |||
# FAKE - F# Make | |||
.fake/ | |||
# CodeRush personal settings | |||
.cr/personal | |||
# Python Tools for Visual Studio (PTVS) | |||
__pycache__/ | |||
*.pyc | |||
/.editorconfig | |||
.vscode/ | |||
docs/api/\.manifest | |||
\.idea/ | |||
# Cake - Uncomment if you are using it | |||
# tools/** | |||
# !tools/packages.config | |||
# Tabs Studio | |||
*.tss | |||
# Telerik's JustMock configuration file | |||
*.jmconfig | |||
# BizTalk build output | |||
*.btp.cs | |||
*.btm.cs | |||
*.odx.cs | |||
*.xsd.cs | |||
# OpenCover UI analysis results | |||
OpenCover/ | |||
# Azure Stream Analytics local run output | |||
ASALocalRun/ | |||
# Codealike UID | |||
codealike.json | |||
# MSBuild Binary and Structured Log | |||
*.binlog | |||
# NVidia Nsight GPU debugger configuration file | |||
*.nvuser | |||
# MFractors (Xamarin productivity tool) working folder | |||
.mfractor/ | |||
# Local History for Visual Studio | |||
.localhistory/ | |||
# BeatPulse healthcheck temp database | |||
healthchecksdb | |||
# Backup folder for Package Reference Convert tool in Visual Studio 2017 | |||
MigrationBackup/ | |||
## | |||
## Visual studio for Mac | |||
## | |||
# globs | |||
Makefile.in | |||
*.userprefs | |||
*.usertasks | |||
config.make | |||
config.status | |||
aclocal.m4 | |||
install-sh | |||
autom4te.cache/ | |||
*.tar.gz | |||
tarballs/ | |||
test-results/ | |||
# Mac bundle stuff | |||
*.dmg | |||
*.app | |||
# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore | |||
# General | |||
.DS_Store | |||
.AppleDouble | |||
.LSOverride | |||
# Icon must end with two \r | |||
Icon | |||
# Thumbnails | |||
._* | |||
# Files that might appear in the root of a volume | |||
.DocumentRevisions-V100 | |||
.fseventsd | |||
.Spotlight-V100 | |||
.TemporaryItems | |||
.Trashes | |||
.VolumeIcon.icns | |||
.com.apple.timemachine.donotpresent | |||
# Directories potentially created on remote AFP share | |||
.AppleDB | |||
.AppleDesktop | |||
Network Trash Folder | |||
Temporary Items | |||
.apdisk | |||
# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore | |||
# Windows thumbnail cache files | |||
Thumbs.db | |||
ehthumbs.db | |||
ehthumbs_vista.db | |||
# Dump file | |||
*.stackdump | |||
# Folder config file | |||
[Dd]esktop.ini | |||
# Recycle Bin used on file shares | |||
$RECYCLE.BIN/ | |||
# Windows Installer files | |||
*.cab | |||
*.msi | |||
*.msix | |||
*.msm | |||
*.msp | |||
# Windows shortcuts | |||
*.lnk | |||
# JetBrains Rider | |||
.idea/ | |||
*.sln.iml | |||
## | |||
## Visual Studio Code | |||
## | |||
.vscode/* |
@@ -1,3 +0,0 @@ | |||
[submodule "overrides/Discord.Net.BuildOverrides"] | |||
path = overrides/Discord.Net.BuildOverrides | |||
url = https://github.com/discord-net/Discord.Net.BuildOverrides |
@@ -1,892 +0,0 @@ | |||
# Changelog | |||
## [3.9.0] - 2022-12-23 | |||
### Added | |||
- #2469 Add missing properties in forum & thread channels (01ae904) | |||
- #2501 Add new discord stuff (ed38635) | |||
- #2521 Add missing property & new stuff (82b772a) | |||
- #2520 Implemented ClientDisconnect event for audio client. (4cad546) | |||
- #2509 Add SendFiles to UserExtensions ( 4cad546) | |||
- #2528 Implement wildcard lenght quantifiers, TreatAsRegex property and solve catastrpohic backtracking (25cfb88) | |||
- #2531 Add Age restricted (NSFW) application commands support (60956c7) | |||
### Fixed | |||
- #2500 Fix duplicated members of DiscordErrorCode (6712ef4) | |||
- #2468 Fix TimestampTag being sadge (bc89d3c) | |||
- #2497 Avoid throwing on missing Application (7077c44) | |||
- #2485 Fixed an oversight clearing session data upon any disconnect. (c7ac59d) | |||
- #2526 Fix `GetActiveThreadsAsync` & add it to `ITextChannel` (bd2f719) | |||
- #2535 Fix deploy.yml (20d8fdf) | |||
### Misc | |||
- #2471 Update samples to use `MessageContent` intent & update `v2 => v3 guide` (a4d34f6) | |||
- #2505 Update events.cs (ea039b8) | |||
- #2467 Update license and icon nuspec props (11ed0ff) | |||
- #2306 Command execution code rework & TypeConverters auto-scope fix (6869817) | |||
- #2534 Fully qualify SlashCommandBuilder namespace ( 3b107c2) | |||
## [3.8.1] - 2022-09-12 | |||
### Added | |||
- #2437 Added scheduled event types to AuditLog ActionTypes (fca9c6b) | |||
- #2423 Added support for resume gateway url (d4c533a) | |||
### Fixed | |||
- #2443 Fixed typos of word length (adf012d) | |||
- #2438 Fixed http query symbol in ModifyWebhookMessageAsync (0aa381d) | |||
- #2444 Fixed BulkOverwriteCommands NRE (9feb703) | |||
- #2417 Fixed CommandService RemoveModuleMethod not removing modules (fca9c6b) | |||
- #2345 Fixed EmbedBuilder.Length NRE (11ece4b) | |||
- #2453 Fixed NRE on SlashCommandBuilder.Build method (5073afa) | |||
- #2457 Fixed typo in SlashCommandBuilder.AddNameLocalizationMethod (1b01fed) | |||
### Misc | |||
- #2462 Add additional checks for gateway event warnings (b45b152) | |||
- #2448 Bump to Discord API V10 (fbc5ad4) | |||
- #2451 Return a list instead of an array in GetModulePath and GetChoicePath methods (370bdfa) | |||
- #2453 Update app commands regex and fix localization on app context commands (3dec99f) | |||
- #2333 Update package logo (2b86a79) | |||
## [3.8.0] - 2022-08-27 | |||
### Added | |||
- #2384 Added support for the WEBHOOKS_UPDATED event (010e8e8) | |||
- #2370 Add async callbacks for IModuleBase (503fa75) | |||
- #2367 Added DeleteMessagesAsync for TIV and added remaining rate limit in client log (f178660) | |||
- #2379 Added Max/Min length fields for ApplicationCommandOption (e551431) | |||
- #2369 Added support for using `RespondWithModalAsync<IModal>()` without prior IModal declaration (500e7b4) | |||
- #2347 Added Embed field comparison operators (89a8ea1) | |||
- #2359 Added support for creating lottie stickers (32b03c8) | |||
- #2395 Added App Command localization support and `ILocalizationManager` to IF (39bbd29) | |||
### Fixed | |||
- #2425 Fix missing Fact attribute in ColorTests (92215b1) | |||
- #2424 Fix IGuild.GetBansAsync() (b7b7964) | |||
- #2416 Fix role icon & emoji assignment (b6b5e95) | |||
- #2414 Fix NRE on RestCommandBase Data (02bc3b7) | |||
- #2421 Fix placeholder length being hardcoded (8dfe19f) | |||
- #2352 Fix issues related to the absence of bot scope (1eb42c6) | |||
- #2346 Fix IGuild.DisconnectAsync(IUser) not disconnecting users (ba02416) | |||
- #2404 Fix range of issues presented by 3rd party analyzer (902326d) | |||
- #2409 Removes GroupContext from requirecontext (b0b8167) | |||
### Misc | |||
- #2366 Fixed typo in ChannelUpdatedEvent's documentation (cfd2662) | |||
- #2408 Fix sharding sample throwing at appcommand registration (519deda) | |||
- #2420 Fix broken code snippet in dependency injection docs (ddcf68a) | |||
- #2430 Add a note about DontAutoRegisterAttribute (917118d) | |||
- #2418 Update xmldocs to reflect the ConnectedUsers split (65b98f8) | |||
- #2415 Adds missing DI entries in TOC (c49d483) | |||
- #2407 Introduces high quality dependency injection documentation (6fdcf98) | |||
- #2348 Added `RequiredInput` attribute to example in int.framework intro (ee6e0ad) | |||
- #2385 Add ServerStarter.Host to deployment.md (06ed995) | |||
- #2405 Add a note about `IgnoreGroupNames` to IF docs (cf25acd) | |||
- #2356 Makes voice section about precompiled binaries more visible (e0d68d4 ) | |||
- #2405 IF intro docs improvements (246282d) | |||
- #2406 Labs deprecation & readme/docs edits (bf493ea) | |||
## [3.7.2] - 2022-06-02 | |||
### Added | |||
- #2328 Add method overloads to InteractionService (0fad3e8) | |||
- #2336 Add support for attachments on interaction response type 7 (35db22e) | |||
- #2338 AddOptions no longer has an uneeded restriction, added AddOptions to SlashCommandOptionBuilder (3a37f89) | |||
### Fixed | |||
- #2342 Disable TIV restrictions for rollout of TIV (7adf516) | |||
## [3.7.1] - 2022-05-27 | |||
### Added | |||
- #2325 Add missing interaction properties (d3a693a) | |||
- #2330 Add better call control in ParseHttpInteraction (a890de9) | |||
### Fixed | |||
- #2329 Voice perms not retaining text perms. (712a4ae) | |||
- #2331 NRE with Cacheable.DownloadAsync() (e1f9b76) | |||
## [3.7.0] - 2022-05-24 | |||
### Added | |||
- #2269 Text-In-Voice (23656e8) | |||
- #2281 Optional API calling to RestInteraction (a24dde4) | |||
- #2283 Support FailIfNotExists on MessageReference (0ec8938) | |||
- #2284 Add Parse & TryParse to EmbedBuilder & Add ToJsonString extension (cea59b5) | |||
- #2289 Add UpdateAsync to SocketModal (b333de2) | |||
- #2291 Webhook support for threads (b0a3b65) | |||
- #2295 Add DefaultArchiveDuration to ITextChannel (1f01881) | |||
- #2296 Add `.With` methods to ActionRowBuilder (13ccc7c) | |||
- #2307 Add Nullable ComponentTypeConverter and TypeReader (6fbd396) | |||
- #2316 Forum channels (7a07fd6) | |||
### Fixed | |||
- #2290 Possible NRE in Sanitize (20ffa64) | |||
- #2293 Application commands are disabled to everyone except admins by default (b465d60) | |||
- #2299 Close-stage bucketId being null (725d255) | |||
- #2313 Upload file size limit being incorrectly calculated (54a5af7) | |||
- #2319 Use `IDiscordClient.GetUserAsync` impl in `DiscordSocketClient` (f47f319) | |||
- #2320 NRE with bot scope and user parameters (88f6168) | |||
## [3.6.1] - 2022-04-30 | |||
### Added | |||
- #2272 add 50080 Error code (503e720) | |||
### Fixed | |||
- #2267 Permissions v2 Invalid Operation Exception (a8f6075) | |||
- #2271 null user on interaction without bot scope (f2bb55e) | |||
- #2274 Implement fix for Custom Id Segments NRE (0d74c5c) | |||
### Misc | |||
- 3.6.0 (27226f0) | |||
## [3.6.0] - 2022-04-28 | |||
### Added | |||
- #2136 Passing CustomId matches into contexts (4ce1801) | |||
- #2222 V2 Permissions (d98b3cc) | |||
### Fixed | |||
- #2260 Guarding against empty descriptions in `SlashCommandBuilder`/`SlashCommandOptionBuilder` (0554ac2) | |||
- #2248 Fix SocketGuild not returning the AudioClient (daba58c) | |||
- #2254 Fix browser property (275b833) | |||
## [3.5.0] - 2022-04-05 | |||
### Added | |||
- #2204 Added config option for bidirectional formatting of usernames (e38104b) | |||
- #2210 Add a way to remove type readers from the interaction/command service. (7339945) | |||
- #2213 Add global interaction post execution event. (a744948) | |||
- #2223 Add ban pagination support (d8757a5) | |||
- #2201 Add missing interface methods to IComponentInteraction (741ed80) | |||
- #2226 Add an action delegate parameter to `RespondWithModalAsync<T>()` for modifying the modal (d2118f0) | |||
- #2227 Add RespondWithModal methods to RestInteractinModuleBase (1c680db) | |||
### Fixed | |||
- #2168 Fix Integration model from GuildIntegration and added INTEGRATION gateway events (305d7f9) | |||
- #2187 Fix modal response failing (d656722) | |||
- #2188 Fix serialization error on thread creation timestamp. (d48a7bd) | |||
- #2209 Fix GuildPermissions.All not including newer permissions (91d8fab) | |||
- #2219 Fix ShardedClients not pushing PresenceUpdates (c4131cf) | |||
- #2225 Fix GuildMemberUpdated cacheable `before` entity being incorrect (bfd0d9b) | |||
- #2217 Fix gateway interactions not running without bot scope. (8522447) | |||
### Misc | |||
- #2193 Update GuildMemberUpdated comment regarding presence (82473bc) | |||
- #2206 Fixed typo (c286b99) | |||
- #2216 Fix small typo in modal example (0439437) | |||
- #2228 Correct minor typo (d1cf1bf) | |||
## [3.4.1] - 2022-03-9 | |||
### Added | |||
- #2169 Component TypeConverters and CustomID TypeReaders (fb4250b) | |||
- #2180 Attachment description and content type (765c0c5) | |||
- #2162 Add configuration toggle to suppress Unknown dispatch warnings (1ba96d6) | |||
- #2178 Add 10065 Error code (cc6918d) | |||
### Fixed | |||
- #2179 Logging out sharded client throws (24b7bb5) | |||
- #2182 Thread owner always returns null (25aaa49) | |||
- #2165 Fix error with flag params when uploading files. (a5d3add) | |||
- #2181 Fix ambiguous reference for creating roles (f8ec3c7) | |||
## [3.4.0] - 2022-3-2 | |||
### Added | |||
- #2146 Add FromDateTimeOffset in TimestampTag (553055b) | |||
- #2062 Add return statement to precondition handling (3e52fab) | |||
- #2131 Add support for sending Message Flags (1fb62de) | |||
- #2137 Add self_video to VoiceState (8bcd3da) | |||
- #2151 Add Image property to Guild Scheduled Events (1dc473c) | |||
- #2152 Add missing json error codes (202554f) | |||
- #2153 Add IsInvitable and CreatedAt to threads (6bf5818) | |||
- #2155 Add Interaction Service Complex Parameters (9ba64f6) | |||
- #2156 Add Display name support for enum type converter (c800674) | |||
### Fixed | |||
- #2117 Fix stream access exception when ratelimited (a1cfa41) | |||
- #2128 Fix context menu comand message type (f601e9b) | |||
- #2135 Fix NRE when ratelimmited requests don't return a body (b95b942) | |||
- #2154 Fix usage of CacheMode.AllowDownload in channels (b3370c3) | |||
### Misc | |||
- #2149 Clarify Users property on SocketGuildChannel (5594739) | |||
- #2157 Enforce valid button styles (507a18d) | |||
## [3.3.2] - 2022-02-16 | |||
### Fixed | |||
- #2116 Fix null rest client in shards | |||
## [3.3.1] - 2022-02-16 | |||
### Added | |||
- #2107 Add DisplayName property to IGuildUser. (abfba3c) | |||
### Fixed | |||
- #2110 Fix incorrect ratelimit handles for 429's (b2598d3) | |||
- #2094 Fix ToString() on CommandInfo (01735c8) | |||
- #2098 Fix channel being null in DMs on Interactions (7e1b8c9) | |||
- #2100 Fix crosspost ratelimits (fad217e) | |||
- #2108 Fix being unable to modify AllowedMentions with no embeds set. (169d54f) | |||
- #2109 Fix unused creation of REST clients for DiscordShardedClient shards. (6039378) | |||
### Misc | |||
- #2099 Update interaction summaries (503d32a) | |||
## [3.3.0] - 2022-02-09 | |||
### Added | |||
- #2087 Add modals (c8f175e) | |||
- #2088 Add support for slash command attachment type (33efd89) | |||
### Fixed | |||
- #2091 Fix modifying attachments on interactions and extend the module base (97e54e1) | |||
- #2076 Fix rest message components cannot pass through execute method (b45aebf) | |||
- #2077 Fix clone being created on updated entity (7d6f4f3) | |||
- #2092 Fix Current user null on reconnect (b424bb2) | |||
- #2089 Fix guild feature enum (d142710) | |||
- #2090 Fix attempts to fetch channels in interactions (6290f75) | |||
### Misc | |||
- #1713 Simplify code in DiscordComparers (43b20bc) | |||
- #2079 Add IEnumerable collection parameters instead of arrays for MessageExtensions (75e94fe) | |||
## [3.2.1] - 2022-01-30 | |||
### Added | |||
- #2055 Add IThreadUser interface (3475bd8) | |||
### Fixed | |||
- #2030 Fix logging a TaskCanceledException out of users control (82f3879) | |||
- #2064 Fix markdown formatting in Glossary (f525131) | |||
- #2066 Fix Channel Types Attribute (1917961) | |||
- #2071 Fix attempt to get application info for non-bot tokens (37ada59) | |||
- #2072 Fix thread member download on create (09eb9fa) | |||
- #2063 Fix stream position not being zero when uploading files (6dada66) | |||
### Misc | |||
- #2059 Update HttpException to display inner-errors on the HttpException.Message for better debugging (5773b8e) | |||
## [3.2.0] - 2022-01-15 | |||
### Added | |||
- #2015 Add user-built AddCommand overloads to ModuleBuilder (68e3bed) | |||
- #2016 Add Construct Method to InteractionModuleBase and Fix NRE on User-Built Module Creation (4ed4718) | |||
- #2035 Add GetChannelType extension method (64423a0) | |||
- #2036 Add missing guild features (7075d4e) | |||
- #2037 Add default ratelimit callback (4d9389b) | |||
- #2038 Add AddRow and WithRows to ComponentBuilder (3429cf9) | |||
- #2040 Add user locale & guild locale in interactions (2731e20) | |||
- #2041 Add search methods to InteractionService (9a52d05) | |||
### Fixed | |||
- #1562 Fix OperationCancelledException and add IAsyncEnumerable to wait without thread blocking (cd36bb8) | |||
- #2014 Fix InteractionContext.Guild (944a0de) | |||
- #2023 Fix ModifyAsync when only modifying a message's flags (e3eb0a9) | |||
- #2025 Fix IsTopLevelCommand returning the wrong value (4b7cda0) | |||
- #2031 Fix DefaultChannel to exclude threads (a06ba9f) | |||
- #2033 Fix Interaction delete original response throwing 404 (291d1e4) | |||
- #2034 Fix exception when uploading files with non seekable streams (7f4feea) | |||
- #2044 Fix ApplicationId not being used for interactions (c682564) | |||
- #2045 Fix argument null exception on Message Create (a07531f) | |||
- #2046 Fix ThreadMember null ref in constructor (bcd5fa4) | |||
### Misc | |||
- #2018 Match argument defaults with IDiscordInteraction on SocketInteraction (093e548) | |||
- #2024 Remove .ToLower from group name registration (9594ccc) | |||
- #2042 Move gateway intents warning to ready event (3633929) | |||
## [3.1.0] - 2021-12-24 | |||
### Added | |||
- #1996 Add nullable type converter to Interaction service (ccc365e) | |||
- #1998 Add before and after execute async (9f124b2) | |||
- #2001 Add MaxUploadLimit to guilds (7745558) | |||
- #2002 Add RTCRegion to voice channels (2a416a3) | |||
- #2003 Add Guilduser timeouts and MODERATE_MEMBERS permission (144741e) | |||
### Fixed | |||
- #1976 fix guild scheduled events update (8daa0b6) | |||
- #1977 fix thread member nre (5d43fe6) | |||
- #1980 fix requireRole attribute of interaction service (a2f57f8) | |||
- #1990 Fix images path for select menu section (a8b5506) | |||
- #1992 fix images; fix closing brace on cs ref (fb52525) | |||
- #1993 Fix CommandExecuted not invoked on failed parse (82bb3e4) | |||
- #1995 Fixed file being disposed on upload (ad20e03) | |||
- #1999 Fix SocketGuildUser being changed to SocketGlobalUser in UserLeft (5446bfe) | |||
- Fix voice codes namespace (768a0a9) | |||
### Misc | |||
- #1994 Make HasResponded public and add it to IDiscordInteraction (1fbcbb8) | |||
- #1997 Make module service scopes optional (cb1aad3) | |||
## [3.0.0] - 2021-12-13 | |||
### Added | |||
- #1152 Add characters commonly use in links to Sanitize (b9274d1) | |||
- #1518 Add default nullable enum typereader (f7a07ae) | |||
- #1700 Added Implementation of ValidateAndGetBestMatch (3cd9f39) | |||
- #1767 Add method to clear guild user cache (19a66bf) | |||
- #1847 Bump API version to 9 (06a64b7) | |||
- #1848 Remove obsolete sync voice regions methods and properties (ed8e573) | |||
- #1851 Remove DM cache and fix references (7a201e9) | |||
- #1860 Remove /users/@me call for socket and rework sharded client a bit (384ad85) | |||
- #1863 Change GuildMemberUpdate before state to cacheable (c2e87f5) | |||
- #1666 Added negative TimeSpan handling (6abdfcb) | |||
- #1861 Add MaxBitrate to the interface (e0dbe7c) | |||
- #1865 Add null check to AllowedMentions.ToModel() (3cb662f) | |||
- #1879 Add Name property to Teams (c5b4b64) | |||
- #1890 Add default avatar to WithAuthor extension (c200861) | |||
- #1896 IVoiceChannel implements IMentionable (3395700) | |||
- #1923 Add Interaction Support (933ea42) | |||
- #1923 Add Application commands (933ea42) | |||
- #1923 Add Message Components (933ea42) | |||
- #1923 Add Thread Channels (933ea42) | |||
- #1923 Add Stage Channels (933ea42) | |||
- #1923 Add Guild Events (933ea42) | |||
- #1923 Revamped Stickers (933ea42) | |||
- #1923 Add TimestampTag (933ea42) | |||
- #1923 Add name property to teams (933ea42) | |||
- #1923 Add url validation on embeds (933ea42) | |||
- #1923 Add NsfwLevel to Guilds (933ea42) | |||
- #1923 Add helpers to Emoji for parsing (933ea42) | |||
- #1923 Add banner and accent color to guild users (933ea42) | |||
- #1923 Add RatelimitCallback to RequestOptions (933ea42) | |||
- #1923 Add Emoji to roles (933ea42) | |||
- #1923 Add UseInteractionSnowflakeDate to config (933ea42) | |||
- #1923 Add checks for gateway intent in some methods (933ea42) | |||
- #1923 Add SendFilesAsync to channels (933ea42) | |||
- #1923 Add Attachments property to MessageProperties (933ea42) | |||
- #1942 Add multi-file upload to webhooks (bc440ab) | |||
- #1943 Handle bidirectional usernames (10afd96) | |||
- #1945 Updated socket presence and add new presence event (9d6dc62) | |||
- #1948 Added warnings on invalid gateway intents (51e06e9) | |||
- #1949 Add default application games (82276e3) | |||
- #1950 Add custom setter to Group property of ModuleBuilder to automatically invoke AddAliases (ba656e9) | |||
- #1958 Add Discord.Interactions framework (aa6bb5e) | |||
### Fixed | |||
- #1832 Grab correct Uses value for vanity urls (8ed8714) | |||
- #1849 Remove obsolete methods and properties (70aab6c) | |||
- #1850 Create DM channel with id and author alone (95bae78) | |||
- #1853 Fire GuildMemberUpdated without cached user (d176fef) | |||
- #1854 Gateway events for DMs (a7ff6ce) | |||
- #1858 MessageUpdated without author (8b29e0f) | |||
- #1859 Fix missing AddRef and related (de7f9b5) | |||
- #1862 Message update without author (fabe034) | |||
- #1864 ApiClient.CurrentUser being null (08507c0) | |||
- #1871 Fix empty role list if not present (f47001a) | |||
- #1872 Connection deadlock when trying to Send and Disconnect (97d90b9) | |||
- #1873 Remove OperationCanceledException handling in connecting logic (7cf8499) | |||
- #1876 Fix SocketMessage type always being default (ac52a11) | |||
- #1877 Fix RestMessage type always being default (22bb1b0) | |||
- #1886 Change embed description max length to 4096 (8349cd7) | |||
- #1923 Fix ReactionAdded cached parameters (933ea42) | |||
- #1923 Fixed GuildMemberUpdated cached parameters (933ea42) | |||
- #1923 Fixed UserIsTypeing cached parameters (933ea42) | |||
- #1941 Fix Emote.TryParse (900c1f4) | |||
- #1946 Fix NRE when adding parameters in ModuleBuilders (143ca6d) | |||
- #1947 ShardedClient's CurrentUser interface property being null (d5f5ae1) | |||
### Misc | |||
- #1852 Internal change to GetOrCreateUser (dfaaa21) | |||
- #1923 Make Hierarchy a IGuildUser property (933ea42) | |||
- #1923 Fixed gateway serialization to include nulls for API v9 (933ea42) | |||
- #1923 Removed error log for gateway reconnects (933ea42) | |||
## [2.4.0] - 2021-05-22 | |||
### Added | |||
- #1726 Add stickers (91a9063) | |||
- #1753 Webhook message edit & delete functionality (f67cd8e) | |||
- #1757 Add ability to add/remove roles by id (4c9910c) | |||
- #1781 Add GetEmotesAsync to IGuild (df23d57) | |||
- #1801 Add missing property to MESSAGE_REACTION_ADD event (0715d7d) | |||
- #1828 Add methods to interact with reactions without a message object (5b244f2) | |||
- #1830 Add ModifyMessageAsync to IMessageChannel (365a848) | |||
- #1844 Add Discord Certified Moderator user flag (4b8d444) | |||
### Fixed | |||
- #1486 Add type reader when entity type reader exists (c46daaa) | |||
- #1835 Cached message emoji cleanup at MESSAGE_REACTION_REMOVE_EMOJI (8afef82) | |||
### Misc | |||
- #1778 Remove URI check from EmbedBuilder (25b04c4) | |||
- #1800 Fix spelling in SnowflakeUtils.FromSnowflake (6aff419) | |||
## [2.3.1] - 2021-03-10 | |||
### Fixed | |||
- #1761 Deadlock in DiscordShardedClient when Ready is never received (73e5cc2) | |||
- #1773 Private methods aren't added as commands (0fc713a) | |||
- #1780 NullReferenceException in pin/unpin audit logs (f794163) | |||
- #1786 Add ChannelType property to ChannelInfo audit log (6ac5ea1) | |||
- #1791 Update Webhook ChannelId from model change (d2518db) | |||
- #1794 Audit log UserId can be null (d41aeee) | |||
### Misc | |||
- #1774 Add remark regarding CustomStatus as the activity (51b7afe) | |||
## [2.3.0] - 2021-01-28 | |||
### Added | |||
- #1491 Add INVITE_CREATE and INVITE_DELETE events (1ab670b) | |||
- #1520 Support reading multiple activities (421a0c1) | |||
- #1521 Allow for inherited commands in modules (a51cdf6) | |||
- #1526 Add Direction.Around to GetMessagesAsync (f2130f8) | |||
- #1537 Implement gateway ratelimit (ec673e1) | |||
- #1544 Add MESSAGE_REACTION_REMOVE_EMOJI and RemoveAllReactionsForEmoteAsync (a89f076) | |||
- #1549 Add GetUsersAsync to SocketGuild (30b5a83) | |||
- #1566 Support Gateway Intents (d5d10d3) | |||
- #1573 Add missing properties to Guild and deprecate GuildEmbed (ec212b1) | |||
- #1581 Add includeRoleIds to PruneUsersAsync (a80e5ff) | |||
- #1588 Add GetStreams to AudioClient (1e012ac) | |||
- #1596 Add missing channel properties (2d80037) | |||
- #1604 Add missing application properties (including Teams) (10fcde0) | |||
- #1619 Add "View Guild Insights" to GuildPermission (2592264) | |||
- #1637 Added CultureInvariant RegexOption to WebhookUrlRegex (e3925a7) | |||
- #1659 Add inline replies (e3850e1) | |||
- #1688 Send presence on Identify payload (25d5d36) | |||
- #1721 Add role tags (6a62c47) | |||
- #1722 Add user public flags (c683b29) | |||
- #1724 Add MessageFlags and AllowedMentions to message modify (225550d) | |||
- #1731 Add GuildUser IsPending property (8b25c9b) | |||
- #1690 Add max bitrate value to SocketGuild (aacfea0) | |||
### Fixed | |||
- #1244 Missing AddReactions permission for DM channels. (e40ca4a) | |||
- #1469 unsupported property causes an exception (468f826) | |||
- #1525 AllowedMentions and AllowedMentionTypes (3325031) | |||
- #1531 Add AllowedMentions to SendFileAsync (ab32607) | |||
- #1532 GuildEmbed.ChannelId as nullable per API documentation (971d519) | |||
- #1546 Different ratelimits for the same route (implement discord buckets) (2f6c017) | |||
- #1548 Incomplete Ready, DownloadUsersAsync, and optimize AlwaysDownloadUsers (dc8c959) | |||
- #1555 InvalidOperationException at MESSAGE_CREATE (bd4672a) | |||
- #1557 Sending 2 requests instead of 1 to create a Guild role. (5430cc8) | |||
- #1571 Not using the new domain name. (df8a0f7) | |||
- #1578 Trim token before passing it to the authorization header (42ba372) | |||
- #1580 Stop TaskCanceledException from bubbling up (b8fa464) | |||
- #1599 Invite audit log without inviter (b95b95b) | |||
- #1602 Add AllowedMentions to webhooks (bd4516b) | |||
- #1603 Cancel reconnection when 4014 (f396cd9) | |||
- #1608 Voice overwrites and CategoryId remarks (43c8fc0) | |||
- #1614 Check error 404 and return null for GetBanAsync (ae9fff6) | |||
- #1621 Parse mentions from message payload (366ca9a) | |||
- #1622 Do not update overwrite cache locally (3860da0) | |||
- #1623 Invoke UserUpdated from GuildMemberUpdated if needed (3085e88) | |||
- #1624 Handle null PreferredLocale in rare cases (c1d04b4) | |||
- #1639 Invite and InviteMetadata properties (dd2e524) | |||
- #1642 Add missing permissions (4b389f3) | |||
- #1647 handicap member downloading for verified bots (fa5ef5e) | |||
- #1652 Update README.MD to reflect new discord domain (03b831e) | |||
- #1667 Audio stream dispose (a2af985) | |||
- #1671 Crosspost throwing InvalidOperationException (9134443) | |||
- #1672 Team is nullable, not optional (be60d81) | |||
- #1681 Emoji url encode (04389a4) | |||
- #1683 SocketGuild.HasAllMembers is false if a user left a guild (47f571e) | |||
- #1686 Revert PremiumSubscriptionCount type (97e71cd) | |||
- #1695 Possible NullReferenceException when receiving InvalidSession (5213916) | |||
- #1702 Rollback Activities to Game (9d7cb39) | |||
- #1727 Move and fix internal AllowedMentions object (4a7f8fe) | |||
- limit request members batch size (084db25) | |||
- UserMentions throwing NullRef (5ed01a3) | |||
- Wrong author for SocketUserMessage.ReferencedMessage (1e9b252) | |||
- Discord sends null when there's no team (05a1f0a) | |||
- IMessage.Embeds docs remarks (a4d32d3) | |||
- Missing MessageReference when sending files (2095701) | |||
### Misc | |||
- #1545 MutualGuilds optimization (323a677) | |||
- #1551 Update webhook regex to support discord.com (7585789) | |||
- #1556 Add SearchUsersAsync (57880de) | |||
- #1561 Minor refactor to switch expression (42826df) | |||
- #1576 Updating comments for privileged intents (c42bfa6) | |||
- #1678 Change ratelimit messages (47ed806) | |||
- #1714 Update summary of SocketVoiceChannel.Users (e385c40) | |||
- #1720 VoiceRegions and related changes (5934c79) | |||
- Add updated libraries for LastModified (d761846) | |||
- Add alternative documentation link (accd351) | |||
- Temporarily disable StyleCops until all the fixes are impl'd (36de7b2) | |||
- Remove redundant CreateGuildRoleParams (3df0539) | |||
- Add minor tweaks to DiscordSocketConfig docs strings (2cd1880) | |||
- Fix MaxWaitBetweenGuildAvailablesBeforeReady docs string (e31cdc7) | |||
- Missing summary tag for GatewayIntents (3a10018) | |||
- Add new method of role ID copy (857ef77) | |||
- Resolve inheritdocs for IAttachment (9ea3291) | |||
- Mark null as a specific langword in summary (13a41f8) | |||
- Cleanup GatewayReconnectException docs (833ee42) | |||
- Update Docfx.Plugins.LastModified to v1.2.4 (28a6f97) | |||
- Update framework version for tests to Core 3.1 to comply with LTS (4988a07) | |||
- Move bulk deletes remarks from <summary> to <remarks> (62539f0) | |||
## [2.2.0] - 2020-04-16 | |||
### Added | |||
- #1247 Implement Client Status Support (9da11b4) | |||
- #1310 id overload for RemoveReactionAsync (c88b1da) | |||
- #1319 BOOST (faf23de) | |||
- #1326 Added a Rest property to DiscordShardedClient (9fede34) | |||
- #1348 Add Quote Formatting (265da99) | |||
- #1354 Add support for setting X-RateLimit-Precision (9482204) | |||
- #1355 Provide ParameterInfo with error ParseResult (3755a02) | |||
- #1357 add the "Stream" permission. (b00da3d) | |||
- #1358 Add ChannelFollowAdd MessageType (794eba5) | |||
- #1369 Add SelfStream voice state property (9bb08c9) | |||
- #1372 support X-RateLimit-Reset-After (7b9029d) | |||
- #1373 update audit log models (c54867f) | |||
- #1377 Support filtering audit log entries on user, action type, and before entry id (68eb71c) | |||
- #1386 support guild subscription opt-out (0d54207) | |||
- #1387 #1381 Guild PreferredLocale support (a61adb0) | |||
- #1406 CustomStatusGame Activity (79a0ea9) | |||
- #1413 Implemented Message Reference Property (f86c39d) | |||
- #1414 add StartedAt, EndsAt, Elapsed and Remaining to SpotifyGame. (2bba324) | |||
- #1432 Add ability to modify the banner for guilds (d734ce0) | |||
- suppress messages (cd28892) | |||
### Fixed | |||
- #1318 #1314 Don't parse tags within code blocks (c977f2e) | |||
- #1333 Remove null coalescing on ToEmbedBuilder Color (120c0f7) | |||
- #1337 Fixed attempting to access a non-present optional value (4edda5b) | |||
- #1346 CommandExecuted event will fire when a parameter precondition fails like what happens when standard precondition fails. (e8cb031) | |||
- #1371 Fix keys of guild update audit (b0a595b) | |||
- #1375 Use double precision for X-Reset-After, set CultureInfo when parsing numeric types (606dac3) | |||
- #1392 patch todo in NamedTypeReader (0bda8a4) | |||
- #1405 add .NET Standard 2.1 support for Color (7f0c0c9) | |||
- #1412 GetUsersAsync to use MaxUsersPerBatch const as limit instead of MaxMessagesPerBatch. (5439cba) | |||
- #1416 false-positive detection of CustomStatusGame based on Id property (a484651) | |||
- #1418 #1335 Add isMentionable parameter to CreateRoleAsync in non-breaking manner (1c63fd4) | |||
- #1421 (3ff4e3d) | |||
- include MessageFlags and SuppressEmbedParams (d6d4429) | |||
### Changed | |||
- #1368 Update ISystemMessage interface to allow reactions (07f4d5f) | |||
- #1417 fix #1415 Re-add support for overwrite permissions for news channels (e627f07) | |||
- use millisecond precision by default (bcb3534) | |||
### Misc | |||
- #1290 Split Unit and Integration tests into separate projects (a797be9) | |||
- #1328 Fix #1327 Color.ToString returns wrong value (1e8aa08) | |||
- #1329 Fix invalid cref values in docs (363d1c6) | |||
- #1330 Fix spelling mistake in ExclusiveBulkDelete warning (c864f48) | |||
- #1331 Change token explanation (0484fe8) | |||
- #1349 Fixed a spelling error. (af79ed5) | |||
- #1353 [ci skip] Removed duplicate "any" from the readme (15b2a36) | |||
- #1359 Fixing GatewayEncoding comment (52565ed) | |||
- #1379 September 2019 Documentation Update (fd3810e) | |||
- #1382 Fix .NET Core 3.0 compatibility + Drop NS1.3 (d199d93) | |||
- #1388 fix coercion error with DateTime/Offset (3d39704) | |||
- #1393 Utilize ValueTuples (99d7135) | |||
- #1400 Fix #1394 Misworded doc for command params args (1c6ee72) | |||
- #1401 Fix package publishing in azure pipelines (a08d529) | |||
- #1402 Fix packaging (65223a6) | |||
- #1403 Cache regex instances in MessageHelper (007b011) | |||
- #1424 Fix the Comparer descriptions not linking the type (911523d) | |||
- #1426 Fix incorrect and missing colour values for Color fields (9ede6b9) | |||
- #1470 Added System.Linq reference (adf823c) | |||
- temporary sanity checking in SocketGuild (c870e67) | |||
- build and deploy docs automatically (2981d6b) | |||
- 2.2.0 (4b602b4) | |||
- target the Process env-var scope (3c6b376) | |||
- fix metapackage build (1794f95) | |||
- copy only \_site to docs-static (a8cdadc) | |||
- do not exit on failed robocopy (fd204ee) | |||
- add idn debugger (91aec9f) | |||
- rename IsStream to IsStreaming (dcd9cdd) | |||
- feature (40844b9) | |||
## [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) |
@@ -1,61 +0,0 @@ | |||
# 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 server](https://discord.gg/dnet) | |||
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/discord-net/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/discord-net/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,90 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<!-- Based on https://github.com/terrafx/terrafx/blob/master/Directory.Build.props --> | |||
<!-- Copyright © Tanner Gooding and Contributors --> | |||
<Project> | |||
<!-- | |||
Directory.Build.props is automatically picked up and imported by | |||
Microsoft.Common.props. This file needs to exist, even if empty so that | |||
files in the parent directory tree, with the same name, are not imported | |||
instead. The import fairly early and only Sdk.props will have been imported | |||
beforehand. We also don't need to add ourselves to MSBuildAllProjects, as | |||
that is done by the file that imports us. | |||
--> | |||
<!-- Settings used for versioning --> | |||
<PropertyGroup> | |||
<PullRequestNumber Condition="$(GITHUB_REF.StartsWith('refs/pull'))">$([System.String]::Copy('$(GITHUB_REF)').Replace('refs/pull/', '').Replace('/merge', ''))</PullRequestNumber> | |||
</PropertyGroup> | |||
<!-- Default settings that are used by other settings --> | |||
<PropertyGroup> | |||
<BaseArtifactsPath>$(MSBuildThisFileDirectory)artifacts/</BaseArtifactsPath> | |||
<BaseArtifactsPathSuffix>$(DiscordNetProjectCategory)/$(MSBuildProjectName)</BaseArtifactsPathSuffix> | |||
<RepositoryUrl>https://github.com/discord-net/Discord.Net</RepositoryUrl> | |||
</PropertyGroup> | |||
<!-- Default settings that explicitly differ from the Sdk.props defaults --> | |||
<PropertyGroup> | |||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> | |||
<BaseIntermediateOutputPath>$(BaseArtifactsPath)obj/$(BaseArtifactsPathSuffix)/</BaseIntermediateOutputPath> | |||
<DebugType>embedded</DebugType> | |||
<EnableDefaultNoneItems>false</EnableDefaultNoneItems> | |||
<Nullable>enable</Nullable> | |||
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance> | |||
<SuppressNETCoreSdkPreviewMessage>true</SuppressNETCoreSdkPreviewMessage> | |||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors> | |||
</PropertyGroup> | |||
<PropertyGroup Condition="'$(Configuration)' == 'Debug'"> | |||
<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow> | |||
</PropertyGroup> | |||
<!-- Default settings that explicitly differ from the Sdk.targets defaults--> | |||
<PropertyGroup> | |||
<Authors>Discord.Net Contributors</Authors> | |||
<BaseOutputPath>$(BaseArtifactsPath)bin/$(BaseArtifactsPathSuffix)/</BaseOutputPath> | |||
<Company>Discord-Net</Company> | |||
<PackageOutputPath Condition="'$(PlatformName)' == 'AnyCPU'">$(BaseArtifactsPath)pkg/$(Configuration)</PackageOutputPath> | |||
<PackageOutputPath Condition="'$(PlatformName)' != 'AnyCPU'">$(BaseArtifactsPath)pkg/$(Configuration)</PackageOutputPath> | |||
<Product>Discord.Net</Product> | |||
<VersionPrefix>3.0.0</VersionPrefix> | |||
<VersionSuffix>alpha</VersionSuffix> | |||
<VersionSuffix Condition="'$(PullRequestNumber)' != ''">pr$(PullRequestNumber)</VersionSuffix> | |||
</PropertyGroup> | |||
<!-- Default settings that are otherwise undefined --> | |||
<PropertyGroup> | |||
<Copyright>Copyright © Discord.Net Contributors.</Copyright> | |||
<Description>An asynchronous API wrapper for Discord.</Description> | |||
<Features>strict</Features> | |||
<GenerateDocumentationFile>true</GenerateDocumentationFile> | |||
<HighEntropyVA>true</HighEntropyVA> | |||
<LangVersion>preview</LangVersion> | |||
<MinClientVersion>4.3</MinClientVersion> | |||
<NeutralLanguage>en-US</NeutralLanguage> | |||
<OverwriteReadOnlyFiles>true</OverwriteReadOnlyFiles> | |||
<PackageIcon>PackageLogo.png</PackageIcon> | |||
<PackageLicenseExpression>MIT</PackageLicenseExpression> | |||
<PackageProjectUrl>$(RepositoryUrl)</PackageProjectUrl> | |||
<ProduceReferenceAssembly>true</ProduceReferenceAssembly> | |||
<PackageTags Condition="'$(PackageTags)' != ''">$(PackageTags);discord;discordapp</PackageTags> | |||
<PackageTags Condition="'$(PackageTags)' == ''">discord;discordapp</PackageTags> | |||
<RepositoryType>git</RepositoryType> | |||
<RestoreSources> | |||
https://api.nuget.org/v3/index.json | |||
</RestoreSources> | |||
<UseSharedCompilation>true</UseSharedCompilation> | |||
</PropertyGroup> | |||
<!-- Package icons --> | |||
<ItemGroup> | |||
<None Include="$(MSBuildThisFileDirectory)/docs/marketing/logo/PackageLogo.png" Pack="True" PackagePath="" /> | |||
</ItemGroup> | |||
<!-- Package references which are consumed by all .NET projects --> | |||
<ItemGroup> | |||
<PackageReference Include="Microsoft.Net.Compilers.Toolset" IsImplicitlyDefined="true" PrivateAssets="all" /> | |||
</ItemGroup> | |||
</Project> |
@@ -0,0 +1,38 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<!-- Based on https://github.com/terrafx/terrafx/blob/master/Directory.Build.props --> | |||
<!-- Copyright © Tanner Gooding and Contributors --> | |||
<Project> | |||
<!-- | |||
Directory.Build.targets is automatically picked up and imported by | |||
Microsoft.Common.targets. This file needs to exist, even if empty so that | |||
files in the parent directory tree, with the same name, are not imported | |||
instead. The import fairly late and most other props/targets will have been | |||
imported beforehand. We also don't need to add ourselves to | |||
MSBuildAllProjects, as that is done by the file that imports us. | |||
--> | |||
<!-- Settings that append the existing setting value --> | |||
<PropertyGroup> | |||
<DefineConstants>$(DefineConstants);$(OS)</DefineConstants> | |||
<NoWarn>$(NoWarn);NU5105</NoWarn> | |||
<PackageVersion Condition="'$(GITHUB_RUN_ID)' != ''">$(Version).$(GITHUB_RUN_ID)</PackageVersion> | |||
</PropertyGroup> | |||
<!-- Package versions for package references across all projects --> | |||
<ItemGroup> | |||
<PackageReference Update="coverlet.collector" Version="3.0.3" /> | |||
<PackageReference Update="Microsoft.Net.Compilers.Toolset" Version="3.10.0-3.final" /> | |||
<PackageReference Update="Microsoft.NET.Test.Sdk" Version="16.10.0" /> | |||
<PackageReference Update="Microsoft.Extensions.Hosting.Abstractions" Version="5.0.0" /> | |||
<PackageReference Update="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0" /> | |||
<PackageReference Update="Microsoft.Extensions.Hosting" Version="5.0.0" /> | |||
<PackageReference Update="Microsoft.Extensions.Options" Version="5.0.0" /> | |||
<PackageReference Update="Microsoft.SourceLink.GitHub" Version="1.0.0" /> | |||
<PackageReference Update="System.IO.Pipelines" Version="5.0.1" /> | |||
<PackageReference Update="System.Text.Json" Version="5.0.2" /> | |||
<PackageReference Update="xunit" Version="2.4.1" /> | |||
<PackageReference Update="xunit.runner.visualstudio" Version="2.4.3" /> | |||
</ItemGroup> | |||
</Project> |
@@ -1,23 +0,0 @@ | |||
{ | |||
"folders": [ | |||
{ | |||
"path": "." | |||
} | |||
], | |||
"settings": { | |||
"editor.rulers": [ | |||
120 | |||
], | |||
"editor.insertSpaces": true, | |||
"files.exclude": { | |||
"**/.git": true, | |||
"**/.svn": true, | |||
"**/.hg": true, | |||
"**/CVS": true, | |||
"**/.DS_Store": true, | |||
"**/obj": true, | |||
"**/bin": true, | |||
"samples/": true, | |||
} | |||
} | |||
} |
@@ -1,50 +1,23 @@ | |||
| |||
Microsoft Visual Studio Solution File, Format Version 12.00 | |||
# Visual Studio Version 17 | |||
VisualStudioVersion = 17.1.31903.286 | |||
MinimumVisualStudioVersion = 10.0.40219.1 | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Core", "src\Discord.Net.Core\Discord.Net.Core.csproj", "{91E9E7BD-75C9-4E98-84AA-2C271922E5C2}" | |||
# Visual Studio Version 16 | |||
VisualStudioVersion = 16.0.31229.75 | |||
MinimumVisualStudioVersion = 15.0.26124.0 | |||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{CD5CFA4B-143E-4495-8BFD-AF419226CBE5}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Rest", "src\Discord.Net.Rest\Discord.Net.Rest.csproj", "{BFC6DC28-0351-4573-926A-D4124244C04F}" | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Gateway", "src\Gateway\Discord.Net.Gateway.csproj", "{DAF502E3-CFE6-4243-8049-9A6157F42111}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Commands", "src\Discord.Net.Commands\Discord.Net.Commands.csproj", "{078DD7E6-943D-4D09-AFC2-D2BA58B76C9C}" | |||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{6D7B7A29-83FE-44F2-85E1-7D44B061EA27}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.WebSocket", "src\Discord.Net.WebSocket\Discord.Net.WebSocket.csproj", "{688FD1D8-7F01-4539-B2E9-F473C5D699C7}" | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PingPong", "samples\PingPong\PingPong.csproj", "{54A6E396-5186-4D79-893B-6EFD1CF658CB}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Webhook", "src\Discord.Net.Webhook\Discord.Net.Webhook.csproj", "{9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}" | |||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{A47FC28E-1835-46C3-AFD5-7C048A43C157}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Examples", "src\Discord.Net.Examples\Discord.Net.Examples.csproj", "{47820065-3CFB-401C-ACEA-862BD564A404}" | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Gateway.UnitTests", "test\Gateway\Discord.Net.Gateway.UnitTests.csproj", "{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Interactions", "src\Discord.Net.Interactions\Discord.Net.Interactions.csproj", "{137DB209-B357-4EE8-A6EE-4B6127F6DEE9}" | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Models", "src\Models\Discord.Net.Models.csproj", "{564A2E82-CE92-42F6-9D4E-8CC09C5CDF17}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Analyzers", "src\Discord.Net.Analyzers\Discord.Net.Analyzers.csproj", "{24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Analyzers.Tests", "test\Discord.Net.Analyzers.Tests\Discord.Net.Analyzers.Tests.csproj", "{FC67057C-E92F-4E1C-98BE-46F839C8AD71}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Tests.Unit", "test\Discord.Net.Tests.Unit\Discord.Net.Tests.Unit.csproj", "{DBF8B16E-5967-4480-8EDE-15D98A0DF0C4}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Tests.Integration", "test\Discord.Net.Tests.Integration\Discord.Net.Tests.Integration.csproj", "{E169E15A-E82C-45BF-8C24-C2CADB7093AA}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_BasicBot", "samples\BasicBot\_BasicBot.csproj", "{F2FF84FB-F6AD-47E5-9EE5-18206CAE136E}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_TextCommandFramework", "samples\TextCommandFramework\_TextCommandFramework.csproj", "{4E1F1F40-B1DD-40C9-A4B1-A2046A4C9C76}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_ShardedClient", "samples\ShardedClient\_ShardedClient.csproj", "{9B4C4AFB-3D15-44C6-9E36-12ED625AAA26}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_InteractionFramework", "samples\InteractionFramework\_InteractionFramework.csproj", "{A23E46D2-1610-4AE5-820F-422D34810887}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_WebhookClient", "samples\WebhookClient\_WebhookClient.csproj", "{B61AAE66-15CC-40E4-873A-C23E697C3411}" | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "idn", "samples\idn\idn.csproj", "{4A03840B-9EBE-47E3-89AB-E0914DF21AFB}" | |||
EndProject | |||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{C7CF5621-7D36-433B-B337-5A2E3C101A71}" | |||
EndProject | |||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Impls", "Impls", "{288C363D-A636-4EAE-9AC1-4698B641B26E}" | |||
EndProject | |||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extensions", "Extensions", "{CC3D4B1C-9DE0-448B-8AE7-F3F1F3EC5C3A}" | |||
EndProject | |||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{BB59D5B5-E7B0-4BF4-8F82-D14431B2799B}" | |||
EndProject | |||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord.Net.BuildOverrides", "experiment\Discord.Net.BuildOverrides\Discord.Net.BuildOverrides.csproj", "{115F4921-B44D-4F69-996B-69796959C99D}" | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Rest", "src\Rest\Discord.Net.Rest.csproj", "{1BD9BEE5-8DAA-429A-8692-A0009D2CB90E}" | |||
EndProject | |||
Global | |||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||
@@ -56,249 +29,78 @@ Global | |||
Release|x86 = Release|x86 | |||
EndGlobalSection | |||
GlobalSection(ProjectConfigurationPlatforms) = postSolution | |||
{91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Debug|x64.Build.0 = Debug|Any CPU | |||
{91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Debug|x86.Build.0 = Debug|Any CPU | |||
{91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Release|x64.ActiveCfg = Release|Any CPU | |||
{91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Release|x64.Build.0 = Release|Any CPU | |||
{91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Release|x86.ActiveCfg = Release|Any CPU | |||
{91E9E7BD-75C9-4E98-84AA-2C271922E5C2}.Release|x86.Build.0 = Release|Any CPU | |||
{BFC6DC28-0351-4573-926A-D4124244C04F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{BFC6DC28-0351-4573-926A-D4124244C04F}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{BFC6DC28-0351-4573-926A-D4124244C04F}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{BFC6DC28-0351-4573-926A-D4124244C04F}.Debug|x64.Build.0 = Debug|Any CPU | |||
{BFC6DC28-0351-4573-926A-D4124244C04F}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{BFC6DC28-0351-4573-926A-D4124244C04F}.Debug|x86.Build.0 = Debug|Any CPU | |||
{BFC6DC28-0351-4573-926A-D4124244C04F}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{BFC6DC28-0351-4573-926A-D4124244C04F}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{BFC6DC28-0351-4573-926A-D4124244C04F}.Release|x64.ActiveCfg = Debug|Any CPU | |||
{BFC6DC28-0351-4573-926A-D4124244C04F}.Release|x64.Build.0 = Debug|Any CPU | |||
{BFC6DC28-0351-4573-926A-D4124244C04F}.Release|x86.ActiveCfg = Debug|Any CPU | |||
{BFC6DC28-0351-4573-926A-D4124244C04F}.Release|x86.Build.0 = Debug|Any CPU | |||
{078DD7E6-943D-4D09-AFC2-D2BA58B76C9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{078DD7E6-943D-4D09-AFC2-D2BA58B76C9C}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{078DD7E6-943D-4D09-AFC2-D2BA58B76C9C}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{078DD7E6-943D-4D09-AFC2-D2BA58B76C9C}.Debug|x64.Build.0 = Debug|Any CPU | |||
{078DD7E6-943D-4D09-AFC2-D2BA58B76C9C}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{078DD7E6-943D-4D09-AFC2-D2BA58B76C9C}.Debug|x86.Build.0 = Debug|Any CPU | |||
{078DD7E6-943D-4D09-AFC2-D2BA58B76C9C}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{078DD7E6-943D-4D09-AFC2-D2BA58B76C9C}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{078DD7E6-943D-4D09-AFC2-D2BA58B76C9C}.Release|x64.ActiveCfg = Debug|Any CPU | |||
{078DD7E6-943D-4D09-AFC2-D2BA58B76C9C}.Release|x64.Build.0 = Debug|Any CPU | |||
{078DD7E6-943D-4D09-AFC2-D2BA58B76C9C}.Release|x86.ActiveCfg = Debug|Any CPU | |||
{078DD7E6-943D-4D09-AFC2-D2BA58B76C9C}.Release|x86.Build.0 = Debug|Any CPU | |||
{688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Debug|x64.Build.0 = Debug|Any CPU | |||
{688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Debug|x86.Build.0 = Debug|Any CPU | |||
{688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Release|x64.ActiveCfg = Release|Any CPU | |||
{688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Release|x64.Build.0 = Release|Any CPU | |||
{688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Release|x86.ActiveCfg = Release|Any CPU | |||
{688FD1D8-7F01-4539-B2E9-F473C5D699C7}.Release|x86.Build.0 = Release|Any CPU | |||
{9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Debug|x64.Build.0 = Debug|Any CPU | |||
{9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Debug|x86.Build.0 = Debug|Any CPU | |||
{9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Release|x64.ActiveCfg = Release|Any CPU | |||
{9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Release|x64.Build.0 = Release|Any CPU | |||
{9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Release|x86.ActiveCfg = Release|Any CPU | |||
{9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30}.Release|x86.Build.0 = Release|Any CPU | |||
{47820065-3CFB-401C-ACEA-862BD564A404}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{47820065-3CFB-401C-ACEA-862BD564A404}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{47820065-3CFB-401C-ACEA-862BD564A404}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{47820065-3CFB-401C-ACEA-862BD564A404}.Debug|x64.Build.0 = Debug|Any CPU | |||
{47820065-3CFB-401C-ACEA-862BD564A404}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{47820065-3CFB-401C-ACEA-862BD564A404}.Debug|x86.Build.0 = Debug|Any CPU | |||
{47820065-3CFB-401C-ACEA-862BD564A404}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{47820065-3CFB-401C-ACEA-862BD564A404}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{47820065-3CFB-401C-ACEA-862BD564A404}.Release|x64.ActiveCfg = Release|Any CPU | |||
{47820065-3CFB-401C-ACEA-862BD564A404}.Release|x64.Build.0 = Release|Any CPU | |||
{47820065-3CFB-401C-ACEA-862BD564A404}.Release|x86.ActiveCfg = Release|Any CPU | |||
{47820065-3CFB-401C-ACEA-862BD564A404}.Release|x86.Build.0 = Release|Any CPU | |||
{137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Debug|x64.Build.0 = Debug|Any CPU | |||
{137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Debug|x86.Build.0 = Debug|Any CPU | |||
{137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Release|x64.ActiveCfg = Release|Any CPU | |||
{137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Release|x64.Build.0 = Release|Any CPU | |||
{137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Release|x86.ActiveCfg = Release|Any CPU | |||
{137DB209-B357-4EE8-A6EE-4B6127F6DEE9}.Release|x86.Build.0 = Release|Any CPU | |||
{24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Debug|x64.Build.0 = Debug|Any CPU | |||
{24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Debug|x86.Build.0 = Debug|Any CPU | |||
{24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Release|x64.ActiveCfg = Release|Any CPU | |||
{24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Release|x64.Build.0 = Release|Any CPU | |||
{24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Release|x86.ActiveCfg = Release|Any CPU | |||
{24C231FD-8CF3-444A-9E7C-45C18BAD4A0D}.Release|x86.Build.0 = Release|Any CPU | |||
{FC67057C-E92F-4E1C-98BE-46F839C8AD71}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{FC67057C-E92F-4E1C-98BE-46F839C8AD71}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{FC67057C-E92F-4E1C-98BE-46F839C8AD71}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{FC67057C-E92F-4E1C-98BE-46F839C8AD71}.Debug|x64.Build.0 = Debug|Any CPU | |||
{FC67057C-E92F-4E1C-98BE-46F839C8AD71}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{FC67057C-E92F-4E1C-98BE-46F839C8AD71}.Debug|x86.Build.0 = Debug|Any CPU | |||
{FC67057C-E92F-4E1C-98BE-46F839C8AD71}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{FC67057C-E92F-4E1C-98BE-46F839C8AD71}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{FC67057C-E92F-4E1C-98BE-46F839C8AD71}.Release|x64.ActiveCfg = Release|Any CPU | |||
{FC67057C-E92F-4E1C-98BE-46F839C8AD71}.Release|x64.Build.0 = Release|Any CPU | |||
{FC67057C-E92F-4E1C-98BE-46F839C8AD71}.Release|x86.ActiveCfg = Release|Any CPU | |||
{FC67057C-E92F-4E1C-98BE-46F839C8AD71}.Release|x86.Build.0 = Release|Any CPU | |||
{DBF8B16E-5967-4480-8EDE-15D98A0DF0C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{DBF8B16E-5967-4480-8EDE-15D98A0DF0C4}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{DBF8B16E-5967-4480-8EDE-15D98A0DF0C4}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{DBF8B16E-5967-4480-8EDE-15D98A0DF0C4}.Debug|x64.Build.0 = Debug|Any CPU | |||
{DBF8B16E-5967-4480-8EDE-15D98A0DF0C4}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{DBF8B16E-5967-4480-8EDE-15D98A0DF0C4}.Debug|x86.Build.0 = Debug|Any CPU | |||
{DBF8B16E-5967-4480-8EDE-15D98A0DF0C4}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{DBF8B16E-5967-4480-8EDE-15D98A0DF0C4}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{DBF8B16E-5967-4480-8EDE-15D98A0DF0C4}.Release|x64.ActiveCfg = Release|Any CPU | |||
{DBF8B16E-5967-4480-8EDE-15D98A0DF0C4}.Release|x64.Build.0 = Release|Any CPU | |||
{DBF8B16E-5967-4480-8EDE-15D98A0DF0C4}.Release|x86.ActiveCfg = Release|Any CPU | |||
{DBF8B16E-5967-4480-8EDE-15D98A0DF0C4}.Release|x86.Build.0 = Release|Any CPU | |||
{E169E15A-E82C-45BF-8C24-C2CADB7093AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{E169E15A-E82C-45BF-8C24-C2CADB7093AA}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{E169E15A-E82C-45BF-8C24-C2CADB7093AA}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{E169E15A-E82C-45BF-8C24-C2CADB7093AA}.Debug|x64.Build.0 = Debug|Any CPU | |||
{E169E15A-E82C-45BF-8C24-C2CADB7093AA}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{E169E15A-E82C-45BF-8C24-C2CADB7093AA}.Debug|x86.Build.0 = Debug|Any CPU | |||
{E169E15A-E82C-45BF-8C24-C2CADB7093AA}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{E169E15A-E82C-45BF-8C24-C2CADB7093AA}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{E169E15A-E82C-45BF-8C24-C2CADB7093AA}.Release|x64.ActiveCfg = Release|Any CPU | |||
{E169E15A-E82C-45BF-8C24-C2CADB7093AA}.Release|x64.Build.0 = Release|Any CPU | |||
{E169E15A-E82C-45BF-8C24-C2CADB7093AA}.Release|x86.ActiveCfg = Release|Any CPU | |||
{E169E15A-E82C-45BF-8C24-C2CADB7093AA}.Release|x86.Build.0 = Release|Any CPU | |||
{F2FF84FB-F6AD-47E5-9EE5-18206CAE136E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{F2FF84FB-F6AD-47E5-9EE5-18206CAE136E}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{F2FF84FB-F6AD-47E5-9EE5-18206CAE136E}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{F2FF84FB-F6AD-47E5-9EE5-18206CAE136E}.Debug|x64.Build.0 = Debug|Any CPU | |||
{F2FF84FB-F6AD-47E5-9EE5-18206CAE136E}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{F2FF84FB-F6AD-47E5-9EE5-18206CAE136E}.Debug|x86.Build.0 = Debug|Any CPU | |||
{F2FF84FB-F6AD-47E5-9EE5-18206CAE136E}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{F2FF84FB-F6AD-47E5-9EE5-18206CAE136E}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{F2FF84FB-F6AD-47E5-9EE5-18206CAE136E}.Release|x64.ActiveCfg = Release|Any CPU | |||
{F2FF84FB-F6AD-47E5-9EE5-18206CAE136E}.Release|x64.Build.0 = Release|Any CPU | |||
{F2FF84FB-F6AD-47E5-9EE5-18206CAE136E}.Release|x86.ActiveCfg = Release|Any CPU | |||
{F2FF84FB-F6AD-47E5-9EE5-18206CAE136E}.Release|x86.Build.0 = Release|Any CPU | |||
{4E1F1F40-B1DD-40C9-A4B1-A2046A4C9C76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{4E1F1F40-B1DD-40C9-A4B1-A2046A4C9C76}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{4E1F1F40-B1DD-40C9-A4B1-A2046A4C9C76}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{4E1F1F40-B1DD-40C9-A4B1-A2046A4C9C76}.Debug|x64.Build.0 = Debug|Any CPU | |||
{4E1F1F40-B1DD-40C9-A4B1-A2046A4C9C76}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{4E1F1F40-B1DD-40C9-A4B1-A2046A4C9C76}.Debug|x86.Build.0 = Debug|Any CPU | |||
{4E1F1F40-B1DD-40C9-A4B1-A2046A4C9C76}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{4E1F1F40-B1DD-40C9-A4B1-A2046A4C9C76}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{4E1F1F40-B1DD-40C9-A4B1-A2046A4C9C76}.Release|x64.ActiveCfg = Release|Any CPU | |||
{4E1F1F40-B1DD-40C9-A4B1-A2046A4C9C76}.Release|x64.Build.0 = Release|Any CPU | |||
{4E1F1F40-B1DD-40C9-A4B1-A2046A4C9C76}.Release|x86.ActiveCfg = Release|Any CPU | |||
{4E1F1F40-B1DD-40C9-A4B1-A2046A4C9C76}.Release|x86.Build.0 = Release|Any CPU | |||
{9B4C4AFB-3D15-44C6-9E36-12ED625AAA26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{9B4C4AFB-3D15-44C6-9E36-12ED625AAA26}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{9B4C4AFB-3D15-44C6-9E36-12ED625AAA26}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{9B4C4AFB-3D15-44C6-9E36-12ED625AAA26}.Debug|x64.Build.0 = Debug|Any CPU | |||
{9B4C4AFB-3D15-44C6-9E36-12ED625AAA26}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{9B4C4AFB-3D15-44C6-9E36-12ED625AAA26}.Debug|x86.Build.0 = Debug|Any CPU | |||
{9B4C4AFB-3D15-44C6-9E36-12ED625AAA26}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{9B4C4AFB-3D15-44C6-9E36-12ED625AAA26}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{9B4C4AFB-3D15-44C6-9E36-12ED625AAA26}.Release|x64.ActiveCfg = Release|Any CPU | |||
{9B4C4AFB-3D15-44C6-9E36-12ED625AAA26}.Release|x64.Build.0 = Release|Any CPU | |||
{9B4C4AFB-3D15-44C6-9E36-12ED625AAA26}.Release|x86.ActiveCfg = Release|Any CPU | |||
{9B4C4AFB-3D15-44C6-9E36-12ED625AAA26}.Release|x86.Build.0 = Release|Any CPU | |||
{A23E46D2-1610-4AE5-820F-422D34810887}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{A23E46D2-1610-4AE5-820F-422D34810887}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{A23E46D2-1610-4AE5-820F-422D34810887}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{A23E46D2-1610-4AE5-820F-422D34810887}.Debug|x64.Build.0 = Debug|Any CPU | |||
{A23E46D2-1610-4AE5-820F-422D34810887}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{A23E46D2-1610-4AE5-820F-422D34810887}.Debug|x86.Build.0 = Debug|Any CPU | |||
{A23E46D2-1610-4AE5-820F-422D34810887}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{A23E46D2-1610-4AE5-820F-422D34810887}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{A23E46D2-1610-4AE5-820F-422D34810887}.Release|x64.ActiveCfg = Release|Any CPU | |||
{A23E46D2-1610-4AE5-820F-422D34810887}.Release|x64.Build.0 = Release|Any CPU | |||
{A23E46D2-1610-4AE5-820F-422D34810887}.Release|x86.ActiveCfg = Release|Any CPU | |||
{A23E46D2-1610-4AE5-820F-422D34810887}.Release|x86.Build.0 = Release|Any CPU | |||
{B61AAE66-15CC-40E4-873A-C23E697C3411}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{B61AAE66-15CC-40E4-873A-C23E697C3411}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{B61AAE66-15CC-40E4-873A-C23E697C3411}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{B61AAE66-15CC-40E4-873A-C23E697C3411}.Debug|x64.Build.0 = Debug|Any CPU | |||
{B61AAE66-15CC-40E4-873A-C23E697C3411}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{B61AAE66-15CC-40E4-873A-C23E697C3411}.Debug|x86.Build.0 = Debug|Any CPU | |||
{B61AAE66-15CC-40E4-873A-C23E697C3411}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{B61AAE66-15CC-40E4-873A-C23E697C3411}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{B61AAE66-15CC-40E4-873A-C23E697C3411}.Release|x64.ActiveCfg = Release|Any CPU | |||
{B61AAE66-15CC-40E4-873A-C23E697C3411}.Release|x64.Build.0 = Release|Any CPU | |||
{B61AAE66-15CC-40E4-873A-C23E697C3411}.Release|x86.ActiveCfg = Release|Any CPU | |||
{B61AAE66-15CC-40E4-873A-C23E697C3411}.Release|x86.Build.0 = Release|Any CPU | |||
{4A03840B-9EBE-47E3-89AB-E0914DF21AFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{4A03840B-9EBE-47E3-89AB-E0914DF21AFB}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{4A03840B-9EBE-47E3-89AB-E0914DF21AFB}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{4A03840B-9EBE-47E3-89AB-E0914DF21AFB}.Debug|x64.Build.0 = Debug|Any CPU | |||
{4A03840B-9EBE-47E3-89AB-E0914DF21AFB}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{4A03840B-9EBE-47E3-89AB-E0914DF21AFB}.Debug|x86.Build.0 = Debug|Any CPU | |||
{4A03840B-9EBE-47E3-89AB-E0914DF21AFB}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{4A03840B-9EBE-47E3-89AB-E0914DF21AFB}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{4A03840B-9EBE-47E3-89AB-E0914DF21AFB}.Release|x64.ActiveCfg = Release|Any CPU | |||
{4A03840B-9EBE-47E3-89AB-E0914DF21AFB}.Release|x64.Build.0 = Release|Any CPU | |||
{4A03840B-9EBE-47E3-89AB-E0914DF21AFB}.Release|x86.ActiveCfg = Release|Any CPU | |||
{4A03840B-9EBE-47E3-89AB-E0914DF21AFB}.Release|x86.Build.0 = Release|Any CPU | |||
{115F4921-B44D-4F69-996B-69796959C99D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{115F4921-B44D-4F69-996B-69796959C99D}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{115F4921-B44D-4F69-996B-69796959C99D}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{115F4921-B44D-4F69-996B-69796959C99D}.Debug|x64.Build.0 = Debug|Any CPU | |||
{115F4921-B44D-4F69-996B-69796959C99D}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{115F4921-B44D-4F69-996B-69796959C99D}.Debug|x86.Build.0 = Debug|Any CPU | |||
{115F4921-B44D-4F69-996B-69796959C99D}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{115F4921-B44D-4F69-996B-69796959C99D}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{115F4921-B44D-4F69-996B-69796959C99D}.Release|x64.ActiveCfg = Release|Any CPU | |||
{115F4921-B44D-4F69-996B-69796959C99D}.Release|x64.Build.0 = Release|Any CPU | |||
{115F4921-B44D-4F69-996B-69796959C99D}.Release|x86.ActiveCfg = Release|Any CPU | |||
{115F4921-B44D-4F69-996B-69796959C99D}.Release|x86.Build.0 = Release|Any CPU | |||
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Debug|x64.Build.0 = Debug|Any CPU | |||
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Debug|x86.Build.0 = Debug|Any CPU | |||
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Release|x64.ActiveCfg = Release|Any CPU | |||
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Release|x64.Build.0 = Release|Any CPU | |||
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Release|x86.ActiveCfg = Release|Any CPU | |||
{DAF502E3-CFE6-4243-8049-9A6157F42111}.Release|x86.Build.0 = Release|Any CPU | |||
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Debug|x64.Build.0 = Debug|Any CPU | |||
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Debug|x86.Build.0 = Debug|Any CPU | |||
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Release|x64.ActiveCfg = Release|Any CPU | |||
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Release|x64.Build.0 = Release|Any CPU | |||
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Release|x86.ActiveCfg = Release|Any CPU | |||
{54A6E396-5186-4D79-893B-6EFD1CF658CB}.Release|x86.Build.0 = Release|Any CPU | |||
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Debug|x64.Build.0 = Debug|Any CPU | |||
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Debug|x86.Build.0 = Debug|Any CPU | |||
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Release|x64.ActiveCfg = Release|Any CPU | |||
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Release|x64.Build.0 = Release|Any CPU | |||
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Release|x86.ActiveCfg = Release|Any CPU | |||
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D}.Release|x86.Build.0 = Release|Any CPU | |||
{564A2E82-CE92-42F6-9D4E-8CC09C5CDF17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{564A2E82-CE92-42F6-9D4E-8CC09C5CDF17}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{564A2E82-CE92-42F6-9D4E-8CC09C5CDF17}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{564A2E82-CE92-42F6-9D4E-8CC09C5CDF17}.Debug|x64.Build.0 = Debug|Any CPU | |||
{564A2E82-CE92-42F6-9D4E-8CC09C5CDF17}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{564A2E82-CE92-42F6-9D4E-8CC09C5CDF17}.Debug|x86.Build.0 = Debug|Any CPU | |||
{564A2E82-CE92-42F6-9D4E-8CC09C5CDF17}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{564A2E82-CE92-42F6-9D4E-8CC09C5CDF17}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{564A2E82-CE92-42F6-9D4E-8CC09C5CDF17}.Release|x64.ActiveCfg = Release|Any CPU | |||
{564A2E82-CE92-42F6-9D4E-8CC09C5CDF17}.Release|x64.Build.0 = Release|Any CPU | |||
{564A2E82-CE92-42F6-9D4E-8CC09C5CDF17}.Release|x86.ActiveCfg = Release|Any CPU | |||
{564A2E82-CE92-42F6-9D4E-8CC09C5CDF17}.Release|x86.Build.0 = Release|Any CPU | |||
{1BD9BEE5-8DAA-429A-8692-A0009D2CB90E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{1BD9BEE5-8DAA-429A-8692-A0009D2CB90E}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{1BD9BEE5-8DAA-429A-8692-A0009D2CB90E}.Debug|x64.ActiveCfg = Debug|Any CPU | |||
{1BD9BEE5-8DAA-429A-8692-A0009D2CB90E}.Debug|x64.Build.0 = Debug|Any CPU | |||
{1BD9BEE5-8DAA-429A-8692-A0009D2CB90E}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
{1BD9BEE5-8DAA-429A-8692-A0009D2CB90E}.Debug|x86.Build.0 = Debug|Any CPU | |||
{1BD9BEE5-8DAA-429A-8692-A0009D2CB90E}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{1BD9BEE5-8DAA-429A-8692-A0009D2CB90E}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{1BD9BEE5-8DAA-429A-8692-A0009D2CB90E}.Release|x64.ActiveCfg = Release|Any CPU | |||
{1BD9BEE5-8DAA-429A-8692-A0009D2CB90E}.Release|x64.Build.0 = Release|Any CPU | |||
{1BD9BEE5-8DAA-429A-8692-A0009D2CB90E}.Release|x86.ActiveCfg = Release|Any CPU | |||
{1BD9BEE5-8DAA-429A-8692-A0009D2CB90E}.Release|x86.Build.0 = Release|Any CPU | |||
EndGlobalSection | |||
GlobalSection(SolutionProperties) = preSolution | |||
HideSolutionNode = FALSE | |||
EndGlobalSection | |||
GlobalSection(NestedProjects) = preSolution | |||
{BFC6DC28-0351-4573-926A-D4124244C04F} = {288C363D-A636-4EAE-9AC1-4698B641B26E} | |||
{078DD7E6-943D-4D09-AFC2-D2BA58B76C9C} = {CC3D4B1C-9DE0-448B-8AE7-F3F1F3EC5C3A} | |||
{688FD1D8-7F01-4539-B2E9-F473C5D699C7} = {288C363D-A636-4EAE-9AC1-4698B641B26E} | |||
{9AFAB80E-D2D3-4EDB-B58C-BACA78D1EA30} = {CC3D4B1C-9DE0-448B-8AE7-F3F1F3EC5C3A} | |||
{47820065-3CFB-401C-ACEA-862BD564A404} = {BB59D5B5-E7B0-4BF4-8F82-D14431B2799B} | |||
{137DB209-B357-4EE8-A6EE-4B6127F6DEE9} = {CC3D4B1C-9DE0-448B-8AE7-F3F1F3EC5C3A} | |||
{24C231FD-8CF3-444A-9E7C-45C18BAD4A0D} = {CC3D4B1C-9DE0-448B-8AE7-F3F1F3EC5C3A} | |||
{FC67057C-E92F-4E1C-98BE-46F839C8AD71} = {C7CF5621-7D36-433B-B337-5A2E3C101A71} | |||
{DBF8B16E-5967-4480-8EDE-15D98A0DF0C4} = {C7CF5621-7D36-433B-B337-5A2E3C101A71} | |||
{E169E15A-E82C-45BF-8C24-C2CADB7093AA} = {C7CF5621-7D36-433B-B337-5A2E3C101A71} | |||
{F2FF84FB-F6AD-47E5-9EE5-18206CAE136E} = {BB59D5B5-E7B0-4BF4-8F82-D14431B2799B} | |||
{4E1F1F40-B1DD-40C9-A4B1-A2046A4C9C76} = {BB59D5B5-E7B0-4BF4-8F82-D14431B2799B} | |||
{9B4C4AFB-3D15-44C6-9E36-12ED625AAA26} = {BB59D5B5-E7B0-4BF4-8F82-D14431B2799B} | |||
{A23E46D2-1610-4AE5-820F-422D34810887} = {BB59D5B5-E7B0-4BF4-8F82-D14431B2799B} | |||
{B61AAE66-15CC-40E4-873A-C23E697C3411} = {BB59D5B5-E7B0-4BF4-8F82-D14431B2799B} | |||
{4A03840B-9EBE-47E3-89AB-E0914DF21AFB} = {BB59D5B5-E7B0-4BF4-8F82-D14431B2799B} | |||
{115F4921-B44D-4F69-996B-69796959C99D} = {CC3D4B1C-9DE0-448B-8AE7-F3F1F3EC5C3A} | |||
{DAF502E3-CFE6-4243-8049-9A6157F42111} = {CD5CFA4B-143E-4495-8BFD-AF419226CBE5} | |||
{54A6E396-5186-4D79-893B-6EFD1CF658CB} = {6D7B7A29-83FE-44F2-85E1-7D44B061EA27} | |||
{7EC53EB6-6C15-4FD7-9B83-95F96025C14D} = {A47FC28E-1835-46C3-AFD5-7C048A43C157} | |||
{564A2E82-CE92-42F6-9D4E-8CC09C5CDF17} = {CD5CFA4B-143E-4495-8BFD-AF419226CBE5} | |||
{1BD9BEE5-8DAA-429A-8692-A0009D2CB90E} = {CD5CFA4B-143E-4495-8BFD-AF419226CBE5} | |||
EndGlobalSection | |||
GlobalSection(ExtensibilityGlobals) = postSolution | |||
SolutionGuid = {D2404771-EEC8-45F2-9D71-F3373F6C1495} | |||
EndGlobalSection | |||
GlobalSection(CodealikeProperties) = postSolution | |||
SolutionGuid = a45217b4-a401-4dbf-8654-34d2ec034cd9 | |||
SolutionGuid = {36B0BFC9-AF79-4D25-89D4-2EE3C961612B} | |||
EndGlobalSection | |||
EndGlobal |
@@ -1,16 +0,0 @@ | |||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> | |||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Cacheable/@EntryIndexedValue">True</s:Boolean> | |||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Downloader/@EntryIndexedValue">True</s:Boolean> | |||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Emoji/@EntryIndexedValue">True</s:Boolean> | |||
<s:Boolean x:Key="/Default/UserDictionary/Words/=libsodium/@EntryIndexedValue">True</s:Boolean> | |||
<s:Boolean x:Key="/Default/UserDictionary/Words/=NSFW/@EntryIndexedValue">True</s:Boolean> | |||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Ratelimit/@EntryIndexedValue">True</s:Boolean> | |||
<s:Boolean x:Key="/Default/UserDictionary/Words/=seeked/@EntryIndexedValue">True</s:Boolean> | |||
<s:Boolean x:Key="/Default/UserDictionary/Words/=sharded/@EntryIndexedValue">True</s:Boolean> | |||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Spotify/@EntryIndexedValue">True</s:Boolean> | |||
<s:Boolean x:Key="/Default/UserDictionary/Words/=unban/@EntryIndexedValue">True</s:Boolean> | |||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Uncache/@EntryIndexedValue">True</s:Boolean> | |||
<s:Boolean x:Key="/Default/UserDictionary/Words/=webhook/@EntryIndexedValue">True</s:Boolean> | |||
<s:Boolean x:Key="/Default/UserDictionary/Words/=webhooks/@EntryIndexedValue">True</s:Boolean> | |||
<s:Boolean x:Key="/Default/UserDictionary/Words/=webhook_0027s/@EntryIndexedValue">True</s:Boolean> | |||
<s:Boolean x:Key="/Default/UserDictionary/Words/=ZWSP/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary> |
@@ -1,29 +0,0 @@ | |||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||
<PropertyGroup> | |||
<VersionPrefix>3.9.0</VersionPrefix> | |||
<LangVersion>latest</LangVersion> | |||
<Authors>Discord.Net Contributors</Authors> | |||
<PackageTags>discord;discordapp</PackageTags> | |||
<PackageProjectUrl>https://github.com/Discord-Net/Discord.Net</PackageProjectUrl> | |||
<PackageLicenseExpression>MIT</PackageLicenseExpression> | |||
<PackageIcon>PackageLogo.png</PackageIcon> | |||
<RepositoryType>git</RepositoryType> | |||
<RepositoryUrl>git://github.com/Discord-Net/Discord.Net</RepositoryUrl> | |||
</PropertyGroup> | |||
<PropertyGroup Condition=" '$(BuildNumber)' == '' "> | |||
<VersionSuffix Condition=" '$(VersionSuffix)' != ''">$(VersionSuffix)-dev</VersionSuffix> | |||
<VersionSuffix Condition=" '$(VersionSuffix)' == ''">dev</VersionSuffix> | |||
</PropertyGroup> | |||
<PropertyGroup Condition=" '$(BuildNumber)' != '' And $(IsTagBuild) != 'true' "> | |||
<VersionSuffix Condition=" '$(VersionSuffix)' != '' ">$(VersionSuffix)-$(BuildNumber)</VersionSuffix> | |||
<VersionSuffix Condition=" '$(VersionSuffix)' == '' ">build-$(BuildNumber)</VersionSuffix> | |||
</PropertyGroup> | |||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' "> | |||
<NoWarn>$(NoWarn);CS1573;CS1591</NoWarn> | |||
<WarningsAsErrors>true</WarningsAsErrors> | |||
<GenerateDocumentationFile>true</GenerateDocumentationFile> | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<None Include="../../docs/marketing/logo/PackageLogo.png" Pack="true" PackagePath=""/> | |||
</ItemGroup> | |||
</Project> |
@@ -1,6 +1,6 @@ | |||
The MIT License (MIT) | |||
Copyright (c) 2015-2022 Discord.Net Contributors | |||
Copyright (c) 2015-2021 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 | |||
@@ -1,124 +0,0 @@ | |||
<p align="center"> | |||
<a href="https://discordnet.dev/" title="Click to visit the documentation!"> | |||
<img src="https://raw.githubusercontent.com/discord-net/Discord.Net/dev/docs/marketing/logo/SVG/Combinationmark%20White%20Border.svg" alt="Logo"> | |||
</a> | |||
<br /> | |||
<br /> | |||
<a href="https://www.nuget.org/packages/Discord.Net/"> | |||
<img src="https://img.shields.io/nuget/vpre/Discord.Net.svg?maxAge=2592000?style=plastic" alt="NuGet"> | |||
</a> | |||
<a href="https://www.myget.org/feed/Packages/discord-net"> | |||
<img src="https://img.shields.io/myget/discord-net/vpre/Discord.Net.svg" alt="MyGet"> | |||
</a> | |||
<a href="https://dev.azure.com/discord-net/Discord.Net/_build/latest?definitionId=1&branchName=dev"> | |||
<img src="https://dev.azure.com/discord-net/Discord.Net/_apis/build/status/discord-net.Discord.Net?branchName=dev" alt="Build Status"> | |||
</a> | |||
<a href="https://discord.gg/dnet"> | |||
<img src="https://discord.com/api/guilds/848176216011046962/widget.png" alt="Discord"> | |||
</a> | |||
</p> | |||
Discord.Net is an unofficial .NET API Wrapper for the Discord client (https://discord.com). | |||
## 📄 Documentation | |||
- https://discordnet.dev | |||
## 📥 Installation | |||
### Stable (NuGet) | |||
Our stable builds available from NuGet through the Discord.Net metapackage: | |||
- [Discord.Net](https://www.nuget.org/packages/Discord.Net/) | |||
The individual components may also be installed from NuGet: | |||
- _Webhooks_ | |||
- [Discord.Net.Webhook](https://www.nuget.org/packages/Discord.Net.Webhook/) | |||
- _Text-Command & Interaction services._ | |||
- [Discord.Net.Commands](https://www.nuget.org/packages/Discord.Net.Commands/) | |||
- [Discord.Net.Interactions](https://www.nuget.org/packages/Discord.Net.Interactions/) | |||
- _Complete API coverage._ | |||
- [Discord.Net.WebSocket](https://www.nuget.org/packages/Discord.Net.WebSocket/) | |||
- [Discord.Net.Rest](https://www.nuget.org/packages/Discord.Net.Rest/) | |||
- _The API core. Implements only entities and barebones functionality._ | |||
- [Discord.Net.Core](https://www.nuget.org/packages/Discord.Net.Core/) | |||
### Unstable | |||
Nightly builds are available through our MyGet feed (`https://www.myget.org/F/discord-net/api/v3/index.json`). | |||
These builds target the dev branch. | |||
## 🛑 Known Issues | |||
### WebSockets (Win7 and earlier) | |||
.NET Core 1.1 does not support WebSockets on Win7 and earlier. | |||
This issue has been fixed since the release of .NET Core 2.1. | |||
It is recommended to target .NET Core 2.1 or above for your project if you wish to run your bot on legacy platforms; | |||
alternatively, you may choose to install the | |||
[Discord.Net.Providers.WS4Net](https://www.nuget.org/packages/Discord.Net.Providers.WS4Net/) package. | |||
### TLS on .NET Framework. | |||
Discord supports only TLS1.2+ on all their websites including the API since 07/19/2022. | |||
.NET Framework does not support this protocol by default. | |||
If you depend on .NET Framework, it is suggested to upgrade your project to `net6-windows`. | |||
This framework supports most of the windows-only features introduced by fx, and resolves startup errors from the TLS protocol mismatch. | |||
## 🗃️ Versioning Guarantees | |||
This library generally abides by [Semantic Versioning](https://semver.org). Packages are published in `MAJOR.MINOR.PATCH` version format. | |||
### Patch component | |||
An increment of the **PATCH** component always indicates that an internal-only change was made, generally a bugfix. These changes will not affect the public-facing API in any way, and are always guaranteed to be forward- and backwards-compatible with your codebase, any pre-compiled dependencies of your codebase. | |||
### Minor component | |||
An increment of the **MINOR** component indicates that some addition was made to the library, | |||
and this addition is not backwards-compatible with prior versions. | |||
However, Discord.Net **does not guarantee forward-compatibility** on minor additions. | |||
In other words, we permit a limited set of breaking changes on a minor version bump. | |||
Due to the nature of the Discord API, we will oftentimes need to add a property to an entity to support the latest API changes. | |||
Discord.Net provides interfaces as a method of consuming entities; and as such, introducing a new field to an entity is technically a breaking change. | |||
Major version bumps generally indicate some major change to the library, | |||
and as such we are hesitant to bump the major version for every minor addition to the library. | |||
To compromise, we have decided that interfaces should be treated as **consumable only**, | |||
and your applications should typically not be implementing interfaces. | |||
> For applications where interfaces are implemented, such as in test mocks, we apologize for this inconsistency with SemVer. | |||
While we will never break the API (outside of interface changes) on minor builds, | |||
we will occasionally need to break the ABI, by introducing parameters to a method to match changes upstream with Discord. | |||
As such, a minor version increment may require you to recompile your code, and dependencies, | |||
such as addons, may also need to be recompiled and republished on the newer version. | |||
When a binary breaking change is made, the change will be noted in the release notes. | |||
### Major component | |||
An increment of the **MAJOR** component indicates that breaking changes have been made to the library; | |||
consumers should check the release notes to determine what changes need to be made. | |||
## 📚 Branches | |||
### Release/X.X | |||
Release branch following Major.Minor. Upon release, patches will be pushed to these branches. | |||
New NuGet releases will be tagged on these branches. | |||
### Dev | |||
Development branch, available on MyGet. This branch is what pull requests are targetted to. | |||
### Feature/X | |||
Branches that target Dev, adding new features. Feel free to explore these branches and give feedback where necessary. | |||
### Docs/X | |||
Usually targets Dev. These branches are used to update documentation with either new features or existing feature rework. |
@@ -1,9 +1,9 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||
<!-- <ItemGroup> | |||
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.205" PrivateAssets="all" /> | |||
<ItemGroup> | |||
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.333" PrivateAssets="all" /> | |||
</ItemGroup> | |||
<PropertyGroup> | |||
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild> | |||
</PropertyGroup> --> | |||
</PropertyGroup> | |||
</Project> |
@@ -1,41 +0,0 @@ | |||
variables: | |||
buildConfiguration: Release | |||
buildTag: $[ startsWith(variables['Build.SourceBranch'], 'refs/tags') ] | |||
buildNumber: $[ variables['Build.BuildNumber'] ] | |||
trigger: | |||
tags: | |||
include: | |||
- '*' | |||
branches: | |||
include: | |||
- '*' | |||
jobs: | |||
- job: Linux | |||
pool: | |||
vmImage: 'ubuntu-latest' | |||
steps: | |||
- template: azure/build.yml | |||
- job: Windows_build | |||
pool: | |||
vmImage: 'windows-latest' | |||
condition: ne(variables['Build.SourceBranch'], 'refs/heads/dev') | |||
steps: | |||
- template: azure/build.yml | |||
- job: Windows_deploy | |||
pool: | |||
vmImage: 'windows-latest' | |||
condition: | | |||
and ( | |||
succeeded(), | |||
or ( | |||
eq(variables['Build.SourceBranch'], 'refs/heads/dev'), | |||
eq(variables['buildTag'], True) | |||
) | |||
) | |||
steps: | |||
- template: azure/build.yml | |||
- template: azure/deploy.yml |
@@ -1,34 +0,0 @@ | |||
steps: | |||
- task: UseDotNet@2 | |||
displayName: 'Use .NET Core sdk' | |||
inputs: | |||
packageType: 'sdk' | |||
version: '6.0.x' | |||
includePreviewVersions: true | |||
- task: DotNetCoreCLI@2 | |||
inputs: | |||
command: 'restore' | |||
projects: 'Discord.Net.sln' | |||
feedsToUse: 'select' | |||
verbosityRestore: 'Minimal' | |||
displayName: Restore packages | |||
- script: dotnet build "Discord.Net.sln" --no-restore -v minimal -c $(buildConfiguration) /p:BuildNumber=$(buildNumber) /p:IsTagBuild=$(buildTag) | |||
displayName: Build projects | |||
- script: dotnet test "test/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj" --no-restore --no-build -v minimal -c $(buildConfiguration) --logger trx | |||
displayName: Unit Tests | |||
- script: dotnet test "test/Discord.Net.Analyzers.Tests/Discord.Net.Analyzers.Tests.csproj" --no-restore --no-build -v minimal -c $(buildConfiguration) --logger trx | |||
displayName: Analyzer Tests | |||
# - script: dotnet test "test/Discord.Net.Tests.Integration/Discord.Net.Tests.Integration.csproj" --no-restore --no-build -v minimal -c $(buildConfiguration) --logger trx | |||
# condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/dev')) | |||
- task: PublishTestResults@2 | |||
displayName: Publish test results | |||
condition: succeededOrFailed() | |||
inputs: | |||
testRunner: VSTest | |||
testResultsFiles: '**/*.trx' |
@@ -1,42 +0,0 @@ | |||
steps: | |||
- script: | | |||
dotnet pack "src\Discord.Net.Core\Discord.Net.Core.csproj" --no-restore --no-build -v minimal -c $(buildConfiguration) -o "$(Build.ArtifactStagingDirectory)" /p:BuildNumber=$(buildNumber) /p:IsTagBuild=$(buildTag) | |||
dotnet pack "src\Discord.Net.Rest\Discord.Net.Rest.csproj" --no-restore --no-build -v minimal -c $(buildConfiguration) -o "$(Build.ArtifactStagingDirectory)" /p:BuildNumber=$(buildNumber) /p:IsTagBuild=$(buildTag) | |||
dotnet pack "src\Discord.Net.WebSocket\Discord.Net.WebSocket.csproj" --no-restore --no-build -v minimal -c $(buildConfiguration) -o "$(Build.ArtifactStagingDirectory)" /p:BuildNumber=$(buildNumber) /p:IsTagBuild=$(buildTag) | |||
dotnet pack "src\Discord.Net.Commands\Discord.Net.Commands.csproj" --no-restore --no-build -v minimal -c $(buildConfiguration) -o "$(Build.ArtifactStagingDirectory)" /p:BuildNumber=$(buildNumber) /p:IsTagBuild=$(buildTag) | |||
dotnet pack "src\Discord.Net.Webhook\Discord.Net.Webhook.csproj" --no-restore --no-build -v minimal -c $(buildConfiguration) -o "$(Build.ArtifactStagingDirectory)" /p:BuildNumber=$(buildNumber) /p:IsTagBuild=$(buildTag) | |||
dotnet pack "src\Discord.Net.Providers.WS4Net\Discord.Net.Providers.WS4Net.csproj" --no-restore --no-build -v minimal -c $(buildConfiguration) -o "$(Build.ArtifactStagingDirectory)" /p:BuildNumber=$(buildNumber) /p:IsTagBuild=$(buildTag) | |||
dotnet pack "src\Discord.Net.Analyzers\Discord.Net.Analyzers.csproj" --no-restore --no-build -v minimal -c $(buildConfiguration) -o "$(Build.ArtifactStagingDirectory)" /p:BuildNumber=$(buildNumber) /p:IsTagBuild=$(buildTag) | |||
dotnet pack "src\Discord.Net.Interactions\Discord.Net.Interactions.csproj" --no-restore --no-build -v minimal -c $(buildConfiguration) -o "$(Build.ArtifactStagingDirectory)" /p:BuildNumber=$(buildNumber) /p:IsTagBuild=$(buildTag) | |||
dotnet pack "experiment\Discord.Net.BuildOverrides\Discord.Net.BuildOverrides.csproj" --no-restore --no-build -v minimal -c $(buildConfiguration) -o "$(Build.ArtifactStagingDirectory)" /p:BuildNumber=$(buildNumber) /p:IsTagBuild=$(buildTag) | |||
displayName: Pack projects | |||
- task: NuGetToolInstaller@1 | |||
displayName: Download and Cache Nuget.exe | |||
inputs: | |||
versionSpec: 6.4.0 | |||
- task: NuGetCommand@2 | |||
displayName: Pack metapackage (release mode) | |||
condition: eq(variables['buildTag'], True) | |||
inputs: | |||
command: 'pack' | |||
packagesToPack: 'src/Discord.Net/Discord.Net.nuspec' | |||
versioningScheme: 'off' | |||
- task: NuGetCommand@2 | |||
displayName: Pack metapackage | |||
condition: eq(variables['buildTag'], False) | |||
inputs: | |||
command: 'pack' | |||
packagesToPack: 'src/Discord.Net/Discord.Net.nuspec' | |||
versioningScheme: 'off' | |||
buildProperties: 'suffix=-$(buildNumber)' | |||
- task: NuGetCommand@2 | |||
displayName: Push to NuGet | |||
inputs: | |||
command: push | |||
nuGetFeedType: external | |||
packagesToPush: '$(Build.ArtifactStagingDirectory)/*.nupkg' | |||
publishFeedCredentials: myget-discord |
@@ -1,15 +0,0 @@ | |||
ECHO clone docs-static | |||
git clone git@github.com:discord-net/docs-static.git || EXIT /B 1 | |||
ECHO remove old 'latest' | |||
ECHO Y | RMDIR /S docs-static\latest || EXIT /B 1 | |||
ECHO build docs | |||
docfx.console\tools\docfx.exe docs/docfx.json -o docs-staging || EXIT /B 1 | |||
ROBOCOPY docs-staging\_site docs-static\latest /MIR | |||
ECHO commit and deploy | |||
git config --global user.name "Discord.Net CI Robot" && git config --global user.email "robot@foxbot.me" | |||
git -C docs-static add -A || EXIT /B 1 | |||
git -C docs-static commit -m "[ci deploy] %date% %time%: %Build.BuildId%" || EXIT /B 1 | |||
git -C docs-static push --force || EXIT /B 1 |
@@ -1,16 +0,0 @@ | |||
steps: | |||
- task: InstallSSHKey@0 | |||
displayName: Install deploy key for docs | |||
inputs: | |||
knownHostsEntry: '|1|gFD+Dvd+09xvjlKReWSg3wE7q1A=|WJnD0RZ5H4HX5U0nA4Kt+R5yf+w= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==' | |||
sshPublicKey: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDN1oXiGqKblqfO+vr3cMLSiV6paD5BT+2RXfeCpVkRWSFCB7dfP2m1osJSBqqoCHvJGfbX1brGa+3fnmBgbqQ9vl1NkAmdjHYz4yfTKAt6KShYKXmPpTWBfbAqO2DUzTfTJ18XxNutK931vbWRtOjAMt7Aohw0FYm541QPr2IHIabTvVTPujVExHnMTB9cyKa8xzMD9W3zRLXJbhwOi0LtpgxX6OC/HpwdWod6TfxKdnkPMmVCOo7GTJITyd1GEFg+eNShBIaAZ557nAr8rm2ybEqYvhqFQI0cYMXbfr934yPoNN5yONE1PxDarr1T3GE3ZCWQw2Rc9CAKxrMTez7h | |||
sshKeySecureFile: docs-static_rsa | |||
- task: NuGetCommand@2 | |||
displayName: Install DocFx | |||
inputs: | |||
command: custom | |||
arguments: install docfx.console -ExcludeVersion | |||
- script: azure/docs.bat | |||
displayName: Build and deploy docs |
@@ -1,10 +0,0 @@ | |||
############### | |||
# folder # | |||
############### | |||
/**/DROP/ | |||
/**/TEMP/ | |||
/**/packages/ | |||
/**/bin/ | |||
/**/obj/ | |||
_site |
@@ -1,60 +1,62 @@ | |||
# Contributing to Docs | |||
# Contributing | |||
First of all, thank you for your interest in contributing to our | |||
documentation work. We really appreciate it! That being said, | |||
there are several guidelines you should attempt to follow when adding | |||
to/changing the documentation. | |||
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: | |||
## General Guidelines | |||
## Development Cycle | |||
* Keep code samples in each section's `samples` folder | |||
* When referencing an object in the API, link to its page in the | |||
API documentation | |||
* Documentation should be written in an FAQ/Wiki-style format | |||
* Documentation should be written in clear and proper English* | |||
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. | |||
\* If anyone is interested in translating documentation into other | |||
languages, please open an issue or contact `foxbot#0282` on | |||
Discord. | |||
Issues that are tagged as "up for grabs" are free to be picked up by | |||
any member of the community. | |||
## XML Docstrings Guidelines | |||
### Pull Requests | |||
* When using the `<summary>` tag, use concise verbs. For example: | |||
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. | |||
```cs | |||
/// <summary> Gets or sets the guild user in this object. </summary> | |||
public IGuildUser GuildUser { get; set; } | |||
``` | |||
## Semantic Versioning | |||
* The `<summary>` tag should not be more than 3 lines long. Consider | |||
simplifying the terms or using the `<remarks>` tag instead. | |||
* When using the `<code>` tag, put the code sample within the | |||
`src/Discord.Net.Examples` project under the corresponding path of | |||
the object and surround the code with a `#region` tag. | |||
* If the remarks you are looking to write are too long, consider | |||
writing a shorter version in the XML docs while keeping the longer | |||
version in the `overwrites` folder using the DocFX overwrites syntax. | |||
* You may find an example of this in the samples provided within | |||
the folder. | |||
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. | |||
## Docs Guide Guidelines | |||
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). | |||
* Use a ruler set at 70 characters (use the docs workspace provided | |||
if you are using Visual Studio Code) | |||
* Links should use long syntax | |||
* Pages should be short and concise, not broad and long | |||
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. | |||
Example of long link syntax: | |||
Obsoleting a method is considered a **minor** increment. | |||
```md | |||
Please consult the [API Documentation] for more information. | |||
## Coding Style | |||
[API Documentation]: xref:System.String | |||
``` | |||
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. | |||
## Recommended Reads | |||
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. | |||
* [Microsoft Docs](https://docs.microsoft.com) | |||
* [Flask Docs](https://flask.pocoo.org/docs/1.0/) | |||
* [DocFX Manual](https://dotnet.github.io/docfx/) | |||
* [Sandcastle XML Guide](http://ewsoftware.github.io/XMLCommentsGuide) | |||
### 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) |
@@ -1,21 +0,0 @@ | |||
{ | |||
"folders": [ | |||
{ | |||
"path": "." | |||
} | |||
], | |||
"settings": { | |||
"editor.rulers": [ | |||
70 | |||
], | |||
"files.exclude": { | |||
"**/.git": true, | |||
"**/.svn": true, | |||
"**/.hg": true, | |||
"**/CVS": true, | |||
"**/.DS_Store": true, | |||
"obj/": true, | |||
"_site/": true, | |||
} | |||
} | |||
} |
@@ -1,15 +1,56 @@ | |||
# Instructions for Building Documentation | |||
# Discord.Net # | |||
The documentation for the Discord.Net library uses [DocFX][docfx-main]. | |||
Instructions for installing this tool can be found [here][docfx-installing]. | |||
[](https://discord.gg/discord-api) | |||
1. Navigate to the root of the repository. | |||
2. Build the docs using `docfx docs/docfx.json`. Add the `--serve` | |||
parameter to preview the site locally. Some elements of the page | |||
may appear incorrectly when hosted offline. | |||
An unofficial .NET library for the [Discord API](https://discordapp.com/). | |||
Please note that if you intend to target a specific version, ensure | |||
that you have the correct version checked out. | |||
## Installation ## | |||
[docfx-main]: https://dotnet.github.io/docfx/ | |||
[docfx-installing]: https://dotnet.github.io/docfx/tutorial/docfx_getting_started.html | |||
Our stable builds available from NuGet through the Discord.Net metapackage: | |||
[Discord.Net](https://www.nuget.org/packages/Discord.Net/) | |||
Unstable "nightly" builds are available through our MyGet feed: | |||
`https://www.myget.org/F/discord-net/api/v3/index.json` | |||
## Building ## | |||
At minimum, .NET Core 2.1 is required to successfully build Discord.Net, | |||
but .NET Core 3.1 is recommended. You should install the appropriate tools and | |||
components for your editor to open the Discord.Net solution file: | |||
- The .NET Core workload for Visual Studio | |||
- The C# build tools for Visual Studio Code | |||
- The .NET Core SDK for command line | |||
### Versioning ### | |||
As a rule, Discord.Net attempts to follow | |||
[Semantic Versioning](https://semver.org). This means `MAJOR.MINOR.PATCH` | |||
versioning. | |||
However, as Discord evolves and adds or changes existing endpoints, we may need | |||
to add code to support these changes. To do this, we increment the minor version | |||
when adding new API surfaces to the library. To counter any inevitable breaking | |||
changes, we have decided that our public interfaces should be for | |||
*consumption only* - bot developers should not need to implement these | |||
interfaces for normal code. | |||
Additionally, as the Discord API changes, we may need to add, remove, or change | |||
parameters to certain methods. To ensure this breaks as little code as | |||
possible, we use the following approach to deprecate old APIs and redirect | |||
users to new APIs, while retaining binary compatibility: | |||
```cs | |||
// OLD API | |||
[Obsolete("This API has been superseded by GetUserAsync.", false)] | |||
[EditorBrowsable(EditorBrowsableState.Never)] | |||
public ValueTask<IUser> GetUserAsync(ulong userId) | |||
=> GetUserAsync(userId, "default"); | |||
// NEW API | |||
public ValueTask<IUser> GetUserAsync(ulong userId, | |||
string additionalParameter = "default"); | |||
``` | |||
These obsolete methods will be removed in the next major version, and will be | |||
clearly documented in our change logs. |
@@ -1,31 +0,0 @@ | |||
--- | |||
uid: Discord.Commands.CommandException | |||
remarks: *content | |||
--- | |||
This @System.Exception class is typically used when diagnosing | |||
an error thrown during the execution of a command. You will find the | |||
thrown exception passed into | |||
[LogMessage.Exception](xref:Discord.LogMessage.Exception), which is | |||
sent to your [CommandService.Log](xref:Discord.Commands.CommandService.Log) | |||
event handler. | |||
--- | |||
uid: Discord.Commands.CommandException | |||
example: [*content] | |||
--- | |||
You may use this information to handle runtime exceptions after | |||
execution. Below is an example of how you may use this: | |||
```cs | |||
public Task LogHandlerAsync(LogMessage logMessage) | |||
{ | |||
// Note that this casting method requires C#7 and up. | |||
if (logMessage?.Exception is CommandException cmdEx) | |||
{ | |||
Console.WriteLine($"{cmdEx.GetBaseException().GetType()} was thrown while executing {cmdEx.Command.Aliases.First()} in {cmdEx.Context.Channel} by {cmdEx.Context.User}."); | |||
} | |||
return Task.CompletedTask; | |||
} | |||
``` |
@@ -1,22 +0,0 @@ | |||
--- | |||
uid: Discord.Commands.DontAutoLoadAttribute | |||
remarks: *content | |||
--- | |||
The attribute can be applied to a public class that inherits | |||
@Discord.Commands.ModuleBase. By applying this attribute, | |||
@Discord.Commands.CommandService.AddModulesAsync* will not discover and | |||
add the marked module to the CommandService. | |||
--- | |||
uid: Discord.Commands.DontAutoLoadAttribute | |||
example: [*content] | |||
--- | |||
```cs | |||
[DontAutoLoad] | |||
public class MyModule : ModuleBase<SocketCommandContext> | |||
{ | |||
// ... | |||
} | |||
``` |
@@ -1,27 +0,0 @@ | |||
--- | |||
uid: Discord.Commands.DontInjectAttribute | |||
remarks: *content | |||
--- | |||
The attribute can be applied to a public settable property inside a | |||
@Discord.Commands.ModuleBase based class. By applying this attribute, | |||
the marked property will not be automatically injected of the | |||
dependency. See @Guides.Commands.DI to learn more. | |||
--- | |||
uid: Discord.Commands.DontInjectAttribute | |||
example: [*content] | |||
--- | |||
```cs | |||
public class MyModule : ModuleBase<SocketCommandContext> | |||
{ | |||
[DontInject] | |||
public MyService MyService { get; set; } | |||
public MyModule() | |||
{ | |||
MyService = new MyService(); | |||
} | |||
} | |||
``` |
@@ -1,5 +0,0 @@ | |||
An example of how this class is used the command system can be seen | |||
below: | |||
[!code[Sample module](../../guides/text_commands/samples/intro/empty-module.cs)] | |||
[!code[Command handler](../../guides/text_commands/samples/intro/command_handler.cs)] |
@@ -1,27 +0,0 @@ | |||
--- | |||
uid: Discord.Commands.ICommandContext | |||
example: [*content] | |||
--- | |||
[!include[Example Section](ICommandContext.Inclusion.md)] | |||
--- | |||
uid: Discord.Commands.CommandContext | |||
example: [*content] | |||
--- | |||
[!include[Example Section](ICommandContext.Inclusion.md)] | |||
--- | |||
uid: Discord.Commands.SocketCommandContext | |||
example: [*content] | |||
--- | |||
[!include[Example Section](ICommandContext.Inclusion.md)] | |||
--- | |||
uid: Discord.Commands.ShardCommandContext | |||
example: [*content] | |||
--- | |||
[!include[Example Section](ICommandContext.Inclusion.md)] |
@@ -1,103 +0,0 @@ | |||
--- | |||
uid: Discord.Commands.PreconditionAttribute | |||
remarks: *content | |||
--- | |||
This precondition attribute can be applied on module-level or | |||
method-level for a command. | |||
[!include[Additional Remarks](PreconditionAttribute.Remarks.Inclusion.md)] | |||
--- | |||
uid: Discord.Commands.ParameterPreconditionAttribute | |||
remarks: *content | |||
--- | |||
This precondition attribute can be applied on parameter-level for a | |||
command. | |||
[!include[Additional Remarks](PreconditionAttribute.Remarks.Inclusion.md)] | |||
--- | |||
uid: Discord.Commands.PreconditionAttribute | |||
example: [*content] | |||
--- | |||
The following example creates a precondition to see if the user has | |||
sufficient role required to access the command. | |||
```cs | |||
public class RequireRoleAttribute : PreconditionAttribute | |||
{ | |||
private readonly ulong _roleId; | |||
public RequireRoleAttribute(ulong roleId) | |||
{ | |||
_roleId = roleId; | |||
} | |||
public override async Task<PreconditionResult> CheckPermissionsAsync(ICommandContext context, | |||
CommandInfo command, IServiceProvider services) | |||
{ | |||
var guildUser = context.User as IGuildUser; | |||
if (guildUser == null) | |||
return PreconditionResult.FromError("This command cannot be executed outside of a guild."); | |||
var guild = guildUser.Guild; | |||
if (guild.Roles.All(r => r.Id != _roleId)) | |||
return PreconditionResult.FromError( | |||
$"The guild does not have the role ({_roleId}) required to access this command."); | |||
return guildUser.RoleIds.Any(rId => rId == _roleId) | |||
? PreconditionResult.FromSuccess() | |||
: PreconditionResult.FromError("You do not have the sufficient role required to access this command."); | |||
} | |||
} | |||
``` | |||
--- | |||
uid: Discord.Commands.ParameterPreconditionAttribute | |||
example: [*content] | |||
--- | |||
The following example creates a precondition on a parameter-level to | |||
see if the targeted user has a lower hierarchy than the user who | |||
executed the command. | |||
```cs | |||
public class RequireHierarchyAttribute : ParameterPreconditionAttribute | |||
{ | |||
public override async Task<PreconditionResult> CheckPermissionsAsync(ICommandContext context, | |||
ParameterInfo parameter, object value, IServiceProvider services) | |||
{ | |||
// Hierarchy is only available under the socket variant of the user. | |||
if (!(context.User is SocketGuildUser guildUser)) | |||
return PreconditionResult.FromError("This command cannot be used outside of a guild."); | |||
SocketGuildUser targetUser; | |||
switch (value) | |||
{ | |||
case SocketGuildUser targetGuildUser: | |||
targetUser = targetGuildUser; | |||
break; | |||
case ulong userId: | |||
targetUser = await context.Guild.GetUserAsync(userId).ConfigureAwait(false) as SocketGuildUser; | |||
break; | |||
default: | |||
throw new ArgumentOutOfRangeException(); | |||
} | |||
if (targetUser == null) | |||
return PreconditionResult.FromError("Target user not found."); | |||
if (guildUser.Hierarchy < targetUser.Hierarchy) | |||
return PreconditionResult.FromError("You cannot target anyone else whose roles are higher than yours."); | |||
var currentUser = await context.Guild.GetCurrentUserAsync().ConfigureAwait(false) as SocketGuildUser; | |||
if (currentUser?.Hierarchy < targetUser.Hierarchy) | |||
return PreconditionResult.FromError("The bot's role is lower than the targeted user."); | |||
return PreconditionResult.FromSuccess(); | |||
} | |||
} | |||
``` |
@@ -1,6 +0,0 @@ | |||
A "precondition" in the command system is used to determine if a | |||
condition is met before entering the command task. Using a | |||
precondition may aid in keeping a well-organized command logic. | |||
The most common use case being whether a user has sufficient | |||
permission to execute the command. |
@@ -1,29 +0,0 @@ | |||
--- | |||
uid: Discord.DiscordComparers.ChannelComparer | |||
summary: *content | |||
--- | |||
Gets an [IEqualityComparer](xref:System.Collections.Generic.IEqualityComparer`1)<<xref:Discord.IChannel>> to be used to compare channels. | |||
--- | |||
uid: Discord.DiscordComparers.GuildComparer | |||
summary: *content | |||
--- | |||
Gets an [IEqualityComparer](xref:System.Collections.Generic.IEqualityComparer`1)<<xref:Discord.IGuild>> to be used to compare guilds. | |||
--- | |||
uid: Discord.DiscordComparers.MessageComparer | |||
summary: *content | |||
--- | |||
Gets an [IEqualityComparer](xref:System.Collections.Generic.IEqualityComparer`1)<<xref:Discord.IMessage>> to be used to compare messages. | |||
--- | |||
uid: Discord.DiscordComparers.RoleComparer | |||
summary: *content | |||
--- | |||
Gets an [IEqualityComparer](xref:System.Collections.Generic.IEqualityComparer`1)<<xref:Discord.IRole>> to be used to compare roles. | |||
--- | |||
uid: Discord.DiscordComparers.UserComparer | |||
summary: *content | |||
--- | |||
Gets an [IEqualityComparer](xref:System.Collections.Generic.IEqualityComparer`1)<<xref:Discord.IUser>> to be used to compare users. |
@@ -1,69 +0,0 @@ | |||
--- | |||
uid: Discord.EmbedBuilder | |||
seealso: | |||
- linkId: Discord.EmbedFooterBuilder | |||
- linkId: Discord.EmbedAuthorBuilder | |||
- linkId: Discord.EmbedFieldBuilder | |||
remarks: *content | |||
--- | |||
This builder class is used to build an @Discord.Embed (rich embed) | |||
object that will be ready to be sent via @Discord.IMessageChannel.SendMessageAsync* | |||
after @Discord.EmbedBuilder.Build* is called. | |||
--- | |||
uid: Discord.EmbedBuilder | |||
example: [*content] | |||
--- | |||
#### Basic Usage | |||
The example below builds an embed and sends it to the chat using the | |||
command system. | |||
```cs | |||
[Command("embed")] | |||
public async Task SendRichEmbedAsync() | |||
{ | |||
var embed = new EmbedBuilder | |||
{ | |||
// Embed property can be set within object initializer | |||
Title = "Hello world!", | |||
Description = "I am a description set by initializer." | |||
}; | |||
// Or with methods | |||
embed.AddField("Field title", | |||
"Field value. I also support [hyperlink markdown](https://example.com)!") | |||
.WithAuthor(Context.Client.CurrentUser) | |||
.WithFooter(footer => footer.Text = "I am a footer.") | |||
.WithColor(Color.Blue) | |||
.WithTitle("I overwrote \"Hello world!\"") | |||
.WithDescription("I am a description.") | |||
.WithUrl("https://example.com") | |||
.WithCurrentTimestamp(); | |||
//Your embed needs to be built before it is able to be sent | |||
await ReplyAsync(embed: embed.Build()); | |||
} | |||
``` | |||
 | |||
#### Usage with Local Images | |||
The example below sends an image and has the image embedded in the rich | |||
embed. See @Discord.IMessageChannel.SendFileAsync* for more information | |||
about uploading a file or image. | |||
```cs | |||
[Command("embedimage")] | |||
public async Task SendEmbedWithImageAsync() | |||
{ | |||
var fileName = "image.png"; | |||
var embed = new EmbedBuilder() | |||
{ | |||
ImageUrl = $"attachment://{fileName}" | |||
}.Build(); | |||
await Context.Channel.SendFileAsync(fileName, embed: embed); | |||
} | |||
``` |
@@ -1,25 +0,0 @@ | |||
The example will build a rich embed with an author field, a footer | |||
field, and 2 normal fields using an @Discord.EmbedBuilder: | |||
```cs | |||
var exampleAuthor = new EmbedAuthorBuilder() | |||
.WithName("I am a bot") | |||
.WithIconUrl("https://discord.com/assets/e05ead6e6ebc08df9291738d0aa6986d.png"); | |||
var exampleFooter = new EmbedFooterBuilder() | |||
.WithText("I am a nice footer") | |||
.WithIconUrl("https://discord.com/assets/28174a34e77bb5e5310ced9f95cb480b.png"); | |||
var exampleField = new EmbedFieldBuilder() | |||
.WithName("Title of Another Field") | |||
.WithValue("I am an [example](https://example.com).") | |||
.WithInline(true); | |||
var otherField = new EmbedFieldBuilder() | |||
.WithName("Title of a Field") | |||
.WithValue("Notice how I'm inline with that other field next to me.") | |||
.WithInline(true); | |||
var embed = new EmbedBuilder() | |||
.AddField(exampleField) | |||
.AddField(otherField) | |||
.WithAuthor(exampleAuthor) | |||
.WithFooter(exampleFooter) | |||
.Build(); | |||
``` |
@@ -1,20 +0,0 @@ | |||
--- | |||
uid: Discord.EmbedAuthorBuilder | |||
example: [*content] | |||
--- | |||
[!include[Embed Object Builder Sample](EmbedObjectBuilder.Inclusion.md)] | |||
--- | |||
uid: Discord.EmbedFooterBuilder | |||
example: [*content] | |||
--- | |||
[!include[Embed Object Builder Sample](EmbedObjectBuilder.Inclusion.md)] | |||
--- | |||
uid: Discord.EmbedFieldBuilder | |||
example: [*content] | |||
--- | |||
[!include[Embed Object Builder Sample](EmbedObjectBuilder.Inclusion.md)] |
@@ -1,26 +0,0 @@ | |||
The sample below sends a message and adds an @Discord.Emoji and a custom | |||
@Discord.Emote to the message. | |||
```cs | |||
public async Task SendAndReactAsync(ISocketMessageChannel channel) | |||
{ | |||
var message = await channel.SendMessageAsync("I am a message."); | |||
// Creates a Unicode-based emoji based on the Unicode string. | |||
// This is effectively the same as new Emoji("💕"). | |||
var heartEmoji = new Emoji("\U0001f495"); | |||
// Reacts to the message with the Emoji. | |||
await message.AddReactionAsync(heartEmoji); | |||
// Parses a custom emote based on the provided Discord emote format. | |||
// Please note that this does not guarantee the existence of | |||
// the emote. | |||
var emote = Emote.Parse("<:thonkang:282745590985523200>"); | |||
// Reacts to the message with the Emote. | |||
await message.AddReactionAsync(emote); | |||
} | |||
``` | |||
#### Result | |||
 |
@@ -1,81 +0,0 @@ | |||
--- | |||
uid: Discord.IEmote | |||
seealso: | |||
- linkId: Discord.Emote | |||
- linkId: Discord.Emoji | |||
- linkId: Discord.GuildEmote | |||
- linkId: Discord.IUserMessage | |||
remarks: *content | |||
--- | |||
This interface is often used with reactions. It can represent an | |||
unicode-based @Discord.Emoji, or a custom @Discord.Emote. | |||
--- | |||
uid: Discord.Emote | |||
seealso: | |||
- linkId: Discord.IEmote | |||
- linkId: Discord.GuildEmote | |||
- linkId: Discord.Emoji | |||
- linkId: Discord.IUserMessage | |||
remarks: *content | |||
--- | |||
> [!NOTE] | |||
> A valid @Discord.Emote format is `<:emoteName:emoteId>`. This can be | |||
> obtained by escaping with a `\` in front of the emote using the | |||
> Discord chat client. | |||
This class represents a custom emoji. This type of emoji can be | |||
created via the @Discord.Emote.Parse* or @Discord.Emote.TryParse* | |||
method. | |||
--- | |||
uid: Discord.Emoji | |||
seealso: | |||
- linkId: Discord.Emote | |||
- linkId: Discord.GuildEmote | |||
- linkId: Discord.Emoji | |||
- linkId: Discord.IUserMessage | |||
remarks: *content | |||
--- | |||
> [!NOTE] | |||
> A valid @Discord.Emoji format is Unicode-based. This means only | |||
> something like `🙃` or `\U0001f643` would work, instead of | |||
> `:upside_down:`. | |||
> | |||
> A Unicode-based emoji can be obtained by escaping with a `\` in | |||
> front of the emote using the Discord chat client or by looking up on | |||
> [Emojipedia](https://emojipedia.org). | |||
This class represents a standard Unicode-based emoji. This type of emoji | |||
can be created by passing the Unicode into the constructor. | |||
--- | |||
uid: Discord.IEmote | |||
example: [*content] | |||
--- | |||
[!include[Example Section](IEmote.Inclusion.md)] | |||
--- | |||
uid: Discord.Emoji | |||
example: [*content] | |||
--- | |||
[!include[Example Section](IEmote.Inclusion.md)] | |||
--- | |||
uid: Discord.Emote | |||
example: [*content] | |||
--- | |||
[!include[Example Section](IEmote.Inclusion.md)] | |||
--- | |||
uid: Discord.GuildEmote | |||
example: [*content] | |||
--- | |||
[!include[Example Section](IEmote.Inclusion.md)] |
@@ -1,174 +0,0 @@ | |||
--- | |||
uid: Discord.GuildChannelProperties | |||
example: [*content] | |||
--- | |||
The following example uses @Discord.IGuildChannel.ModifyAsync* to | |||
apply changes specified in the properties, | |||
```cs | |||
var channel = _client.GetChannel(id) as IGuildChannel; | |||
if (channel == null) return; | |||
await channel.ModifyAsync(x => | |||
{ | |||
x.Name = "new-name"; | |||
x.Position = channel.Position - 1; | |||
}); | |||
``` | |||
--- | |||
uid: Discord.TextChannelProperties | |||
example: [*content] | |||
--- | |||
The following example uses @Discord.ITextChannel.ModifyAsync* to | |||
apply changes specified in the properties, | |||
```cs | |||
var channel = _client.GetChannel(id) as ITextChannel; | |||
if (channel == null) return; | |||
await channel.ModifyAsync(x => | |||
{ | |||
x.Name = "cool-guys-only"; | |||
x.Topic = "This channel is only for cool guys and adults!!!"; | |||
x.Position = channel.Position - 1; | |||
x.IsNsfw = true; | |||
}); | |||
``` | |||
--- | |||
uid: Discord.VoiceChannelProperties | |||
example: [*content] | |||
--- | |||
The following example uses @Discord.IVoiceChannel.ModifyAsync* to | |||
apply changes specified in the properties, | |||
```cs | |||
var channel = _client.GetChannel(id) as IVoiceChannel; | |||
if (channel == null) return; | |||
await channel.ModifyAsync(x => | |||
{ | |||
x.UserLimit = 5; | |||
}); | |||
``` | |||
--- | |||
uid: Discord.EmoteProperties | |||
example: [*content] | |||
--- | |||
The following example uses @Discord.IGuild.ModifyEmoteAsync* to | |||
apply changes specified in the properties, | |||
```cs | |||
await guild.ModifyEmoteAsync(x => | |||
{ | |||
x.Name = "blobo"; | |||
}); | |||
``` | |||
--- | |||
uid: Discord.MessageProperties | |||
example: [*content] | |||
--- | |||
The following example uses @Discord.IUserMessage.ModifyAsync* to | |||
apply changes specified in the properties, | |||
```cs | |||
var message = await channel.SendMessageAsync("boo"); | |||
await Task.Delay(TimeSpan.FromSeconds(1)); | |||
await message.ModifyAsync(x => x.Content = "boi"); | |||
``` | |||
--- | |||
uid: Discord.GuildProperties | |||
example: [*content] | |||
--- | |||
The following example uses @Discord.IGuild.ModifyAsync* to | |||
apply changes specified in the properties, | |||
```cs | |||
var guild = _client.GetGuild(id); | |||
if (guild == null) return; | |||
await guild.ModifyAsync(x => | |||
{ | |||
x.Name = "VERY Fast Discord Running at Incredible Hihg Speed"; | |||
}); | |||
``` | |||
--- | |||
uid: Discord.RoleProperties | |||
example: [*content] | |||
--- | |||
The following example uses @Discord.IRole.ModifyAsync* to | |||
apply changes specified in the properties, | |||
```cs | |||
var role = guild.GetRole(id); | |||
if (role == null) return; | |||
await role.ModifyAsync(x => | |||
{ | |||
x.Name = "cool boi"; | |||
x.Color = Color.Gold; | |||
x.Hoist = true; | |||
x.Mentionable = true; | |||
}); | |||
``` | |||
--- | |||
uid: Discord.GuildUserProperties | |||
example: [*content] | |||
--- | |||
The following example uses @Discord.IGuildUser.ModifyAsync* to | |||
apply changes specified in the properties, | |||
```cs | |||
var user = guild.GetUser(id); | |||
if (user == null) return; | |||
await user.ModifyAsync(x => | |||
{ | |||
x.Nickname = "I need healing"; | |||
}); | |||
``` | |||
--- | |||
uid: Discord.SelfUserProperties | |||
example: [*content] | |||
--- | |||
The following example uses @Discord.ISelfUser.ModifyAsync* to | |||
apply changes specified in the properties, | |||
```cs | |||
await selfUser.ModifyAsync(x => | |||
{ | |||
x.Username = "Mercy"; | |||
}); | |||
``` | |||
--- | |||
uid: Discord.WebhookProperties | |||
example: [*content] | |||
--- | |||
The following example uses @Discord.IWebhook.ModifyAsync* to | |||
apply changes specified in the properties, | |||
```cs | |||
await webhook.ModifyAsync(x => | |||
{ | |||
x.Name = "very fast fox"; | |||
x.ChannelId = newChannelId; | |||
}); | |||
``` |
@@ -1,24 +0,0 @@ | |||
--- | |||
uid: Discord.Commands.OverrideTypeReaderAttribute | |||
remarks: *content | |||
--- | |||
This attribute is used to override a command parameter's type reading | |||
behaviour. This may be useful when you have multiple custom | |||
@Discord.Commands.TypeReader and would like to specify one. | |||
--- | |||
uid: Discord.Commands.OverrideTypeReaderAttribute | |||
examples: [*content] | |||
--- | |||
The following example will override the @Discord.Commands.TypeReader | |||
of @Discord.IUser to `MyUserTypeReader`. | |||
```cs | |||
public async Task PrintUserAsync( | |||
[OverrideTypeReader(typeof(MyUserTypeReader))] IUser user) | |||
{ | |||
//... | |||
} | |||
``` |
@@ -1,29 +0,0 @@ | |||
MIT License | |||
Copyright (c) 2018 Still Hsu | |||
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. | |||
============================================================================== | |||
Humanizer (https://github.com/Humanizr/Humanizer) | |||
The MIT License (MIT) | |||
Copyright (c) .NET Foundation and Contributors | |||
============================================================================== |
@@ -1,29 +0,0 @@ | |||
MIT License | |||
Copyright (c) 2018 Still Hsu | |||
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. | |||
============================================================================== | |||
Humanizer (https://github.com/Humanizr/Humanizer) | |||
The MIT License (MIT) | |||
Copyright (c) .NET Foundation and Contributors | |||
============================================================================== |
@@ -1,4 +0,0 @@ | |||
<configuration> | |||
<dllmap os="linux" cpu="x86-64" wordsize="64" dll="git2-6777db8" target="lib/linux-x64/libgit2-6777db8.so" /> | |||
<dllmap os="osx" cpu="x86,x86-64" dll="git2-6777db8" target="lib/osx/libgit2-6777db8.dylib" /> | |||
</configuration> |
@@ -1,21 +0,0 @@ | |||
MIT License | |||
Copyright (c) 2019 Oscar Vásquez | |||
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. |
@@ -1,34 +0,0 @@ | |||
{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}} | |||
<div class="hidden-sm col-md-2" role="complementary"> | |||
<div class="sideaffix"> | |||
<div class="theme-switch-field"> | |||
<p>Theme</p> | |||
<select id="theme-switcher"> | |||
<option value="dark">Dark</option> | |||
<option value="gray">Gray</option> | |||
<option value="light">Light</option> | |||
</select> | |||
</div> | |||
{{^_disableContribution}} | |||
<div class="contribution"> | |||
<ul class="nav"> | |||
{{#docurl}} | |||
<li> | |||
<a href="{{docurl}}" class="contribution-link">{{__global.improveThisDoc}}</a> | |||
</li> | |||
{{/docurl}} | |||
{{#sourceurl}} | |||
<li> | |||
<a href="{{sourceurl}}" class="contribution-link">{{__global.viewSource}}</a> | |||
</li> | |||
{{/sourceurl}} | |||
</ul> | |||
</div> | |||
{{/_disableContribution}} | |||
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix"> | |||
<h5>{{__global.inThisArticle}}</h5> | |||
<div></div> | |||
</nav> | |||
</div> | |||
</div> |
@@ -1,33 +0,0 @@ | |||
{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}} | |||
<head> | |||
<meta charset="utf-8"> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> | |||
<title>{{#title}}{{title}}{{/title}}{{^title}}{{>partials/title}}{{/title}} {{#_appTitle}}| {{_appTitle}} {{/_appTitle}}</title> | |||
<meta name="viewport" content="width=device-width"> | |||
<meta property="og:title" content="{{#title}}{{title}}{{/title}}{{^title}}{{>partials/title}}{{/title}} {{#_appTitle}}| {{_appTitle}} {{/_appTitle}}"> | |||
{{#_description}}<meta property="og:description" content="{{_description}}">{{/_description}} | |||
<meta property="og:locale" content="en-us"> | |||
<meta property="og:type" content="website"> | |||
<meta property="og:site_name" content="Discord.Net Docs"> | |||
<meta property="og:image" content="https://raw.githubusercontent.com/Discord-Net/Discord.Net/dev/docs/marketing/logo/PackageLogo.png"> | |||
<meta property="og:image:alt" content="Discord.Net Logo"> | |||
<meta name="theme-color" content="#995EA7"/> | |||
<meta name="generator" content="docfx {{_docfxVersion}}"> | |||
<meta property="docfx:navrel" content="{{_navRel}}"> | |||
<meta property="docfx:tocrel" content="{{_tocRel}}"> | |||
<meta id="docfx-style:rel" content="{{_rel}}"> | |||
<link rel="preload" href="{{_rel}}styles/search-worker.js" as="script"> | |||
<link rel="preload" href="{{_rel}}fonts/glyphicons-halflings-regular.woff2" as="font" type="font/woff2" crossorigin="anonymous"> | |||
<link rel="shortcut icon" href="{{_rel}}{{{_appFaviconPath}}}{{^_appFaviconPath}}favicon.ico{{/_appFaviconPath}}"> | |||
<link rel="stylesheet" href="{{_rel}}styles/docfx.vendor.minify.css"> | |||
<link rel="stylesheet" href="{{_rel}}styles/docfx.css"> | |||
<link rel="stylesheet" href="{{_rel}}styles/master.css"> | |||
<link rel="stylesheet" href="{{_rel}}styles/main.css"> | |||
<link rel="stylesheet" href="{{_rel}}styles/material.css"> | |||
<link rel="stylesheet" href="{{_rel}}styles/theme-switcher.css"> | |||
<link href="https://cdn.rawgit.com/noelboss/featherlight/1.7.6/release/featherlight.min.css" type="text/css" rel="stylesheet" /> | |||
{{#_noindex}}<meta name="searchOption" content="noindex">{{/_noindex}} | |||
{{#_enableSearch}}<meta property="docfx:rel" content="{{_rel}}">{{/_enableSearch}} | |||
{{#_enableNewTab}}<meta property="docfx:newtab" content="true">{{/_enableNewTab}} | |||
</head> |
@@ -1,8 +0,0 @@ | |||
{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}} | |||
<script type="text/javascript" src="{{_rel}}styles/docfx.vendor.js"></script> | |||
<script type="text/javascript" src="{{_rel}}styles/docfx.js"></script> | |||
<script type="text/javascript" src="{{_rel}}styles/main.js"></script> | |||
<script type="text/javascript" src="{{_rel}}styles/styleswitcher.js"></script> | |||
<script type="text/javascript" src="https://malsup.github.io/jquery.corner.js"></script> | |||
<script type="text/javascript" src="{{_rel}}styles/cornerify.js"></script> |
@@ -1,3 +0,0 @@ | |||
window.onload = function (e) { | |||
$('img').corner(); | |||
} |
@@ -1,322 +0,0 @@ | |||
/* Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. See License.txt in the project root for license information. */ | |||
@import url('vs2015.css'); | |||
html, | |||
body { | |||
background: #212121; | |||
color: #C0C0C0; | |||
} | |||
h1, | |||
h2, | |||
h3, | |||
h4, | |||
h5, | |||
h6 { | |||
color: #E0E0E0; | |||
} | |||
button, | |||
a { | |||
color: #64B5F6; | |||
} | |||
.sidenav{ | |||
background-color: rgb(30, 30, 30); | |||
} | |||
button:hover, | |||
button:focus, | |||
a:hover, | |||
a:focus, | |||
.btn:focus, | |||
.btn:hover{ | |||
color: #2196F3; | |||
} | |||
a.disable, | |||
a.disable:hover { | |||
color: #EEEEEE; | |||
} | |||
.divider { | |||
color: #37474F; | |||
} | |||
hr { | |||
border-color: #37474F; | |||
} | |||
.subnav { | |||
background: #383838 | |||
} | |||
.inheritance h5, | |||
.inheritedMembers h5 { | |||
border-bottom: 1px solid #37474F; | |||
} | |||
article h4 { | |||
border-bottom: 1px solid #37474F; | |||
} | |||
.docs-search { | |||
background: #424242; | |||
} | |||
.search-results-group-heading { | |||
color: #424242; | |||
} | |||
.search-close { | |||
color: #424242; | |||
} | |||
.sidetoc { | |||
background-color: #1b1b1b; | |||
border-left: 0px solid #37474F; | |||
border-right: 0px solid #37474F; | |||
} | |||
.sideaffix { | |||
overflow: visible; | |||
} | |||
.sideaffix>div.contribution>ul>li>a.contribution-link:hover { | |||
background-color: #333333; | |||
} | |||
/* toc */ | |||
.toc .nav>li>a { | |||
color: rgb(218, 218, 218); | |||
} | |||
.toc .nav>li>a:hover, | |||
.toc .nav>li>a:focus { | |||
color: #E0E0E0; | |||
} | |||
.toc .nav>li.active>a { | |||
color: #90CAF9; | |||
} | |||
.toc .nav>li.active>a:hover, | |||
.toc .nav>li.active>a:focus { | |||
background-color: #37474F; | |||
color: #4FC3F7; | |||
} | |||
.sidefilter { | |||
background-color: #1b1b1b; | |||
border-left: 0px solid #37474F; | |||
border-right: 0px solid #37474F; | |||
} | |||
.affix ul>li>a:hover { | |||
background: none; | |||
color: #EEEEEE; | |||
} | |||
.affix ul>li.active>a, | |||
.affix ul>li.active>a:before { | |||
color: #B3E5FC; | |||
} | |||
.affix ul>li>a { | |||
color: #EEEEEE; | |||
} | |||
.affix>ul>li.active>a, | |||
.affix>ul>li.active>a:before { | |||
color: #B3E5FC; | |||
} | |||
.tryspan { | |||
border-color: #37474F; | |||
} | |||
.footer { | |||
border-top: 1px solid #5F5F5F; | |||
background: #616161; | |||
} | |||
/* alert */ | |||
.alert-info { | |||
color: #d9edf7; | |||
background: #004458; | |||
border-color: #005873; | |||
} | |||
.alert-warning { | |||
color: #fffaf2; | |||
background: #80551a; | |||
border-color: #99661f; | |||
} | |||
.alert-danger { | |||
color: #fff2f2; | |||
background: #4d0000; | |||
border-color: #660000; | |||
} | |||
/* For tabbed content */ | |||
.tabGroup { | |||
margin-top: 1rem; | |||
} | |||
.tabGroup ul[role="tablist"] { | |||
margin: 0; | |||
padding: 0; | |||
list-style: none; | |||
} | |||
.tabGroup ul[role="tablist"]>li { | |||
list-style: none; | |||
display: inline-block; | |||
} | |||
.tabGroup a[role="tab"] { | |||
color: white; | |||
box-sizing: border-box; | |||
display: inline-block; | |||
padding: 5px 7.5px; | |||
text-decoration: none; | |||
border-bottom: 2px solid #fff; | |||
} | |||
.tabGroup a[role="tab"]:hover, | |||
.tabGroup a[role="tab"]:focus, | |||
.tabGroup a[role="tab"][aria-selected="true"] { | |||
border-bottom: 2px solid #607D8B; | |||
} | |||
.tabGroup a[role="tab"][aria-selected="true"] { | |||
color: #81D4FA; | |||
} | |||
.tabGroup a[role="tab"]:hover, | |||
.tabGroup a[role="tab"]:focus { | |||
color: #29B6F6; | |||
} | |||
.tabGroup a[role="tab"]:focus { | |||
outline: 1px solid #607D8B; | |||
outline-offset: -1px; | |||
} | |||
@media (min-width: 768px) { | |||
.tabGroup a[role="tab"] { | |||
padding: 5px 15px; | |||
} | |||
} | |||
.tabGroup section[role="tabpanel"] { | |||
border: 1px solid #607D8B; | |||
padding: 15px; | |||
margin: 0; | |||
overflow: hidden; | |||
} | |||
.tabGroup section[role="tabpanel"]>.codeHeader, | |||
.tabGroup section[role="tabpanel"]>pre { | |||
margin-left: -16px; | |||
margin-right: -16px; | |||
} | |||
.tabGroup section[role="tabpanel"]> :first-child { | |||
margin-top: 0; | |||
} | |||
.tabGroup section[role="tabpanel"]>pre:last-child { | |||
display: block; | |||
margin-bottom: -16px; | |||
} | |||
.mainContainer[dir='rtl'] main ul[role="tablist"] { | |||
margin: 0; | |||
} | |||
/* code */ | |||
code { | |||
color: white; | |||
background-color: #4a4c52; | |||
border-radius: 4px; | |||
padding: 3px 7px; | |||
} | |||
pre { | |||
background-color: #282a36; | |||
} | |||
/* table */ | |||
.table-striped>tbody>tr:nth-of-type(odd) { | |||
background-color: #333333; | |||
color: #d3d3d3 | |||
} | |||
tbody>tr { | |||
background-color: #424242; | |||
color: #c0c0c0 | |||
} | |||
.table>tbody+tbody { | |||
border-top: 2px solid rgb(173, 173, 173) | |||
} | |||
/* top navbar */ | |||
.navbar-inverse[role="navigation"] { | |||
background-color: #2C2F33; | |||
} | |||
/* select */ | |||
select { | |||
background-color: #3b3b3b; | |||
border-color: #2e2e2e; | |||
} | |||
/* | |||
Following code regarding collapse container are fetched | |||
or modified from the Materialize project. | |||
The MIT License (MIT) | |||
Copyright (c) 2014-2018 Materialize | |||
https://github.com/Dogfalo/materialize | |||
*/ | |||
/* all collapse container */ | |||
.collapse-container.last-modified { | |||
-webkit-box-shadow: 0 2px 2px 0 rgba(50, 50, 50, 0.64), 0 3px 1px -2px rgba(50, 50, 50, 0.62), 0 1px 5px 0 rgba(50, 50, 50, 0.7); | |||
box-shadow: 0 2px 2px 0 rgba(50, 50, 50, 0.64), 0 3px 1px -2px rgba(50, 50, 50, 0.62), 0 1px 5px 0 rgba(50, 50, 50, 0.7); | |||
border-top: 1px solid rgba(96, 96, 96, 0.7); | |||
border-right: 1px solid rgba(96, 96, 96, 0.7); | |||
border-left: 1px solid rgba(96, 96, 96, 0.7); | |||
} | |||
/* header */ | |||
.collapse-container.last-modified>:nth-child(odd) { | |||
background-color: #3f3f3f; | |||
border-bottom: 1px solid rgba(96, 96, 96, 0.7); | |||
} | |||
/* body */ | |||
.collapse-container.last-modified>:nth-child(even) { | |||
border-bottom: 1px solid rgba(96, 96, 96, 0.7); | |||
background-color: inherit; | |||
} | |||
span.arrow-d{ | |||
border-top: 5px solid white | |||
} | |||
span.arrow-r{ | |||
border-left: 5px solid white | |||
} | |||
.logo-switcher { | |||
background: url("../marketing/logo/SVG/Combinationmark White.svg") no-repeat; | |||
} |
@@ -1,324 +0,0 @@ | |||
/* Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. See License.txt in the project root for license information. */ | |||
@import url('vs2015.css'); | |||
html, | |||
body { | |||
background: #23272A; | |||
color: #dddddd; | |||
} | |||
h1, | |||
h2, | |||
h3, | |||
h4, | |||
h5, | |||
h6 { | |||
color: #EEEEEE; | |||
} | |||
button, | |||
a { | |||
color: #64B5F6; | |||
} | |||
.sidenav{ | |||
background-color: rgb(30, 30, 30); | |||
} | |||
button:hover, | |||
button:focus, | |||
a:hover, | |||
a:focus, | |||
.btn:focus, | |||
.btn:hover{ | |||
color: #2196F3; | |||
} | |||
a.disable, | |||
a.disable:hover { | |||
color: #EEEEEE; | |||
} | |||
.divider { | |||
color: #37474F; | |||
} | |||
hr { | |||
border-color: #37474F; | |||
} | |||
/* top navbar */ | |||
/*.navbar-inverse[role="navigation"] { | |||
background-color: #2C2F33; | |||
}*/ | |||
/* sub navbar (below top) */ | |||
.subnav { | |||
background: rgb(69, 75, 82) | |||
} | |||
.inheritance h5, | |||
.inheritedMembers h5 { | |||
border-bottom: 1px solid #37474F; | |||
} | |||
article h4 { | |||
border-bottom: 1px solid #37474F; | |||
} | |||
.docs-search { | |||
background: #424242; | |||
} | |||
.search-results-group-heading { | |||
color: #424242; | |||
} | |||
.search-close { | |||
color: #424242; | |||
} | |||
.sidetoc { | |||
background-color: #1b1b1b; | |||
border-left: 0px solid #37474F; | |||
border-right: 0px solid #37474F; | |||
} | |||
.sideaffix { | |||
overflow: visible; | |||
} | |||
.sideaffix>div.contribution>ul>li>a.contribution-link:hover { | |||
background-color: #333333; | |||
} | |||
/* toc */ | |||
.toc .nav>li>a { | |||
color: rgb(218, 218, 218); | |||
} | |||
.toc .nav>li>a:hover, | |||
.toc .nav>li>a:focus { | |||
color: #E0E0E0; | |||
} | |||
.toc .nav>li.active>a { | |||
color: #90CAF9; | |||
} | |||
.toc .nav>li.active>a:hover, | |||
.toc .nav>li.active>a:focus { | |||
background-color: #37474F; | |||
color: #4FC3F7; | |||
} | |||
.sidefilter { | |||
background-color: #1b1b1b; | |||
border-left: 0px solid #37474F; | |||
border-right: 0px solid #37474F; | |||
} | |||
.affix ul>li>a:hover { | |||
background: none; | |||
color: #EEEEEE; | |||
} | |||
.affix ul>li.active>a, | |||
.affix ul>li.active>a:before { | |||
color: #B3E5FC; | |||
} | |||
.affix ul>li>a { | |||
color: #EEEEEE; | |||
} | |||
.affix>ul>li.active>a, | |||
.affix>ul>li.active>a:before { | |||
color: #B3E5FC; | |||
} | |||
.tryspan { | |||
border-color: #37474F; | |||
} | |||
.footer { | |||
border-top: 1px solid #5F5F5F; | |||
background: #2C2F33; | |||
} | |||
/* alert */ | |||
.alert-info { | |||
color: #f3fdff; | |||
background: #40788A; | |||
border-color: #2F7A95; | |||
} | |||
.alert-warning { | |||
color: #fffaf2; | |||
background: #936C36; | |||
border-color: #AE8443; | |||
} | |||
.alert-danger { | |||
color: #fff4f4; | |||
background: #834040; | |||
border-color: #8C2F2F | |||
} | |||
/* For tabbed content */ | |||
.tabGroup { | |||
margin-top: 1rem; | |||
} | |||
.tabGroup ul[role="tablist"] { | |||
margin: 0; | |||
padding: 0; | |||
list-style: none; | |||
} | |||
.tabGroup ul[role="tablist"]>li { | |||
list-style: none; | |||
display: inline-block; | |||
} | |||
.tabGroup a[role="tab"] { | |||
color: white; | |||
box-sizing: border-box; | |||
display: inline-block; | |||
padding: 5px 7.5px; | |||
text-decoration: none; | |||
border-bottom: 2px solid #fff; | |||
} | |||
.tabGroup a[role="tab"]:hover, | |||
.tabGroup a[role="tab"]:focus, | |||
.tabGroup a[role="tab"][aria-selected="true"] { | |||
border-bottom: 2px solid #607D8B; | |||
} | |||
.tabGroup a[role="tab"][aria-selected="true"] { | |||
color: #81D4FA; | |||
} | |||
.tabGroup a[role="tab"]:hover, | |||
.tabGroup a[role="tab"]:focus { | |||
color: #29B6F6; | |||
} | |||
.tabGroup a[role="tab"]:focus { | |||
outline: 1px solid #607D8B; | |||
outline-offset: -1px; | |||
} | |||
@media (min-width: 768px) { | |||
.tabGroup a[role="tab"] { | |||
padding: 5px 15px; | |||
} | |||
} | |||
.tabGroup section[role="tabpanel"] { | |||
border: 1px solid #607D8B; | |||
padding: 15px; | |||
margin: 0; | |||
overflow: hidden; | |||
} | |||
.tabGroup section[role="tabpanel"]>.codeHeader, | |||
.tabGroup section[role="tabpanel"]>pre { | |||
margin-left: -16px; | |||
margin-right: -16px; | |||
} | |||
.tabGroup section[role="tabpanel"]> :first-child { | |||
margin-top: 0; | |||
} | |||
.tabGroup section[role="tabpanel"]>pre:last-child { | |||
display: block; | |||
margin-bottom: -16px; | |||
} | |||
.mainContainer[dir='rtl'] main ul[role="tablist"] { | |||
margin: 0; | |||
} | |||
/* code */ | |||
code { | |||
color: white; | |||
background-color: #5B646B; | |||
border-radius: 4px; | |||
padding: 3px 7px; | |||
} | |||
pre { | |||
background-color: #282a36; | |||
} | |||
/* table */ | |||
.table-striped>tbody>tr:nth-of-type(odd) { | |||
background-color: #333333; | |||
color: #d3d3d3 | |||
} | |||
tbody>tr { | |||
background-color: #424242; | |||
color: #c0c0c0 | |||
} | |||
.table>tbody+tbody { | |||
border-top: 2px solid rgb(173, 173, 173) | |||
} | |||
/* select */ | |||
select { | |||
background-color: #3b3b3b; | |||
border-color: #2e2e2e; | |||
} | |||
/* | |||
Following code regarding collapse container are fetched | |||
or modified from the Materialize project. | |||
The MIT License (MIT) | |||
Copyright (c) 2014-2018 Materialize | |||
https://github.com/Dogfalo/materialize | |||
*/ | |||
/* all collapse container */ | |||
.collapse-container.last-modified { | |||
-webkit-box-shadow: 0 2px 2px 0 rgba(50, 50, 50, 0.64), 0 3px 1px -2px rgba(50, 50, 50, 0.62), 0 1px 5px 0 rgba(50, 50, 50, 0.7); | |||
box-shadow: 0 2px 2px 0 rgba(50, 50, 50, 0.64), 0 3px 1px -2px rgba(50, 50, 50, 0.62), 0 1px 5px 0 rgba(50, 50, 50, 0.7); | |||
border-top: 1px solid rgba(96, 96, 96, 0.7); | |||
border-right: 1px solid rgba(96, 96, 96, 0.7); | |||
border-left: 1px solid rgba(96, 96, 96, 0.7); | |||
} | |||
/* header */ | |||
.collapse-container.last-modified>:nth-child(odd) { | |||
background-color: #3f3f3f; | |||
border-bottom: 1px solid rgba(96, 96, 96, 0.7); | |||
} | |||
/* body */ | |||
.collapse-container.last-modified>:nth-child(even) { | |||
border-bottom: 1px solid rgba(96, 96, 96, 0.7); | |||
background-color: inherit; | |||
} | |||
span.arrow-d{ | |||
border-top: 5px solid white | |||
} | |||
span.arrow-r{ | |||
border-left: 5px solid white | |||
} | |||
.logo-switcher { | |||
background: url("../marketing/logo/SVG/Combinationmark White.svg") no-repeat; | |||
} |
@@ -1,117 +0,0 @@ | |||
/* Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. See License.txt in the project root for license information. */ | |||
@import url('tomorrow.css'); | |||
html, | |||
body { | |||
background: #fff; | |||
color: #000; | |||
} | |||
.sideaffix { | |||
overflow: visible; | |||
} | |||
/* links */ | |||
a:active, a:hover, a:visited { | |||
color: #0078d7; | |||
} | |||
a { | |||
color: #0050c5; | |||
cursor: pointer; | |||
text-decoration: none; | |||
word-wrap: break-word; | |||
} | |||
/* alert */ | |||
.alert-info { | |||
color: #165e82; | |||
background-color: #c1e0ef; | |||
border-color: #8cbfd8; | |||
} | |||
.alert-warning { | |||
color: #825e16; | |||
background-color: #efe0c1; | |||
border-color: #d8bf8c; | |||
} | |||
.alert-danger { | |||
color: #821616; | |||
background-color: #efc1c1; | |||
border-color: #d88c8c; | |||
} | |||
/* code */ | |||
code { | |||
color: #9c3a3f; | |||
background-color: #ececec; | |||
border-radius: 4px; | |||
padding: 3px 7px; | |||
} | |||
/* table */ | |||
.table-striped>tbody>tr:nth-of-type(odd) { | |||
color: #333333; | |||
background-color: #d3d3d3 | |||
} | |||
tbody>tr { | |||
color: #424242; | |||
background-color: #c0c0c0 | |||
} | |||
.table>tbody+tbody { | |||
border-top: 2px solid rgb(173, 173, 173) | |||
} | |||
/* select */ | |||
select { | |||
background-color: #fcfcfc; | |||
border-color: #aeb1b5; | |||
} | |||
/* | |||
Following code regarding collapse container are fetched | |||
or modified from the Materialize project. | |||
The MIT License (MIT) | |||
Copyright (c) 2014-2018 Materialize | |||
https://github.com/Dogfalo/materialize | |||
*/ | |||
/* all collapse container */ | |||
.collapse-container.last-modified { | |||
-webkit-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2); | |||
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2); | |||
border-top: 1px solid #ddd; | |||
border-right: 1px solid #ddd; | |||
border-left: 1px solid #ddd; | |||
} | |||
/* header */ | |||
.collapse-container.last-modified>:nth-child(odd) { | |||
background-color: #fff; | |||
border-bottom: 1px solid #ddd; | |||
} | |||
/* body */ | |||
.collapse-container.last-modified>:nth-child(even) { | |||
border-bottom: 1px solid #ddd; | |||
} | |||
span.arrow-d{ | |||
border-top: 5px solid black | |||
} | |||
span.arrow-r{ | |||
border-left: 5px solid black | |||
} | |||
.logo-switcher { | |||
background: url("../marketing/logo/SVG/Combinationmark.svg") no-repeat; | |||
} |
@@ -1,234 +0,0 @@ | |||
@import url('https://fonts.googleapis.com/css?family=Roboto|Muli|Fira+Mono'); | |||
html, | |||
body { | |||
font-family: 'Roboto', 'Segoe UI', Tahoma, Helvetica, sans-serif; | |||
font-display: optional; | |||
height: 100%; | |||
font-size: 15px; | |||
} | |||
code{ | |||
font-family: 'Fira Mono', 'Courier New', Courier, monospace | |||
} | |||
h1, | |||
h2, | |||
h3, | |||
h4, | |||
h5, | |||
h6 { | |||
font-family: 'Muli', Verdana, Geneva, Tahoma, sans-serif; | |||
line-height: 130%; | |||
} | |||
h1, | |||
.h1, | |||
h2, | |||
.h2, | |||
h3, | |||
.h3 { | |||
font-weight: 600; | |||
} | |||
#logo | |||
{ | |||
max-width: 100px; | |||
max-height: 100px; | |||
width: 38pt; | |||
height: 38pt; | |||
padding: 8pt; | |||
} | |||
p, | |||
li, | |||
.toc { | |||
text-rendering: optimizeLegibility; | |||
line-height: 160%; | |||
} | |||
.toc-filter{ | |||
background: inherit !important; | |||
} | |||
.affix ul>li.active>ul, .affix ul>li.active>a:before, .affix ul>li>a:hover:before{ | |||
white-space: normal; | |||
} | |||
img { | |||
box-shadow: 0px 0px 3px 0px rgb(66, 66, 66); | |||
max-width: 95% !important; | |||
margin-top: 15px; | |||
margin-bottom: 15px; | |||
} | |||
.big-logo { | |||
display: block; | |||
box-shadow: none !important; | |||
/* Width value was taken from the original size of the combomark svg */ | |||
width: 951pt; | |||
/* Height was arbitrarily determined */ | |||
min-height: 100pt; | |||
max-width: 90%; | |||
} | |||
article.content p{ | |||
-webkit-transition: all .75s ease-in-out; | |||
transition: all .75s ease-in-out; | |||
} | |||
article.content h1, | |||
article.content h2, | |||
article.content h3, | |||
article.content h4, | |||
article.content h5, | |||
article.content h6{ | |||
-webkit-transition: all .25s ease-in-out; | |||
transition: all .25s ease-in-out; | |||
} | |||
.sideaffix { | |||
line-height: 140%; | |||
} | |||
.sideaffix > div.contribution { | |||
margin-bottom: 0; | |||
} | |||
header .navbar { | |||
border-width: 0 0 0px; | |||
border-radius: 0; | |||
} | |||
body .toc { | |||
background-color: inherit; | |||
overflow: visible; | |||
} | |||
select { | |||
display: inline-block; | |||
overflow: auto; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0 30px 0 6px; | |||
vertical-align: middle; | |||
height: 28px; | |||
border: 1px solid #e3e3e3; | |||
line-height: 16px; | |||
outline: 0; | |||
text-overflow: ellipsis; | |||
-webkit-appearance: none; | |||
-moz-appearance: none; | |||
cursor: pointer; | |||
background-image: linear-gradient(45deg, transparent 50%, #707070 0), linear-gradient(135deg, #707070 50%, transparent 0); | |||
background-position: calc(100% - 13px) 11px, calc(100% - 8px) 11px; | |||
background-size: 5px 5px, 5px 6px; | |||
background-repeat: no-repeat; | |||
} | |||
/* | |||
Following code are fetched or modified from | |||
the Materialize project. | |||
The MIT License (MIT) | |||
Copyright (c) 2014-2018 Materialize | |||
https://github.com/Dogfalo/materialize | |||
*/ | |||
/* all collapse container */ | |||
.collapse-container.last-modified { | |||
margin: 0.5rem 0 1rem 0; | |||
} | |||
/* header */ | |||
.collapse-container.last-modified>:nth-child(odd):focus { | |||
outline: 0; | |||
} | |||
.collapse-container.last-modified>:nth-child(odd) { | |||
display: -webkit-box; | |||
display: -webkit-flex; | |||
display: -ms-flexbox; | |||
display: flex; | |||
cursor: pointer; | |||
-webkit-tap-highlight-color: transparent; | |||
line-height: 1.5; | |||
padding: 0.75rem; | |||
background-image: none; | |||
border: 0px; | |||
} | |||
/* body */ | |||
.collapse-container.last-modified>:nth-child(even) { | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
padding: 1rem; | |||
border: 0px; | |||
} | |||
/* nav bar */ | |||
.nav { | |||
margin: 0; | |||
} | |||
.nav li { | |||
-webkit-transition: background-color .3s, color .3s; | |||
transition: background-color .3s, color .3s; | |||
} | |||
.nav a { | |||
-webkit-transition: background-color .3s, color .3s; | |||
transition: background-color .3s, color .3s; | |||
cursor: pointer; | |||
} | |||
/* arrow */ | |||
span.arrow-d{ | |||
top: 6px; position: relative; | |||
} | |||
span.arrow-r{ | |||
top: 6px; position: relative; | |||
} | |||
/* widen viewport */ | |||
@media (min-width: 1085px) { | |||
.container { | |||
width: calc(100% - 15vw); | |||
max-width: calc(100% - 15vw); | |||
} | |||
} | |||
/* fix level indentation */ | |||
.level2 { | |||
padding: 0 5px; | |||
} | |||
.level3 { | |||
padding: 0 5px; | |||
font-size: 90%; | |||
} | |||
.level4 { | |||
padding: 0 5px; | |||
font-size: 85%; | |||
} | |||
.level5 { | |||
padding: 0 5px; | |||
font-size: 80%; | |||
} | |||
.level6 { | |||
padding: 0 5px; | |||
font-size: 75%; | |||
} |
@@ -1,199 +0,0 @@ | |||
body { | |||
color: #34393e; | |||
line-height: 1.5; | |||
/*font-size: 16px;*/ | |||
-ms-text-size-adjust: 100%; | |||
-webkit-text-size-adjust: 100%; | |||
word-wrap: break-word | |||
} | |||
/* HEADINGS */ | |||
h1 { | |||
font-weight: 600; | |||
font-size: 32px; | |||
} | |||
h2 { | |||
font-weight: 600; | |||
font-size: 24px; | |||
line-height: 1.8; | |||
} | |||
h3 { | |||
font-weight: 600; | |||
font-size: 20px; | |||
line-height: 1.8; | |||
} | |||
h5 { | |||
font-size: 14px; | |||
padding: 10px 0px; | |||
} | |||
article h1, | |||
article h2, | |||
article h3, | |||
article h4 { | |||
margin-top: 35px; | |||
margin-bottom: 15px; | |||
} | |||
article h4 { | |||
padding-bottom: 8px; | |||
border-bottom: 2px solid #ddd; | |||
} | |||
/* NAVBAR */ | |||
.navbar-brand>img { | |||
color: #fff; | |||
} | |||
.navbar { | |||
border: none; | |||
/* Both navbars use box-shadow */ | |||
-webkit-box-shadow: 0px 1px 3px 0px rgba(100, 100, 100, 0.5); | |||
-moz-box-shadow: 0px 1px 3px 0px rgba(100, 100, 100, 0.5); | |||
box-shadow: 0px 1px 3px 0px rgba(100, 100, 100, 0.5); | |||
} | |||
.subnav { | |||
border-top: 1px solid #ddd; | |||
background-color: #fff; | |||
} | |||
.navbar-inverse { | |||
background-color: #0d47a1; | |||
z-index: 100; | |||
} | |||
.navbar-inverse .navbar-nav>li>a, | |||
.navbar-inverse .navbar-text { | |||
color: #fff; | |||
/*background-color: #0d47a1;*/ | |||
border-bottom: 3px solid transparent; | |||
padding-bottom: 12px; | |||
} | |||
.navbar-inverse .navbar-nav>li>a:focus, | |||
.navbar-inverse .navbar-nav>li>a:hover { | |||
color: #fff; | |||
background-color: #1157c0; | |||
border-bottom: 3px solid white; | |||
} | |||
.navbar-inverse .navbar-nav>.active>a, | |||
.navbar-inverse .navbar-nav>.active>a:focus, | |||
.navbar-inverse .navbar-nav>.active>a:hover { | |||
color: #fff; | |||
background-color: #1157c0; | |||
border-bottom: 3px solid white; | |||
} | |||
.navbar-form .form-control { | |||
border: none; | |||
border-radius: 20px; | |||
} | |||
/* SIDEBAR */ | |||
/*.toc .level1>li { | |||
font-weight: 400; | |||
}*/ | |||
.toc .nav>li>a { | |||
color: #34393e; | |||
} | |||
.sidefilter { | |||
background-color: #fff; | |||
border-left: none; | |||
border-right: none; | |||
} | |||
.sidefilter { | |||
background-color: #fff; | |||
border-left: none; | |||
border-right: none; | |||
} | |||
.toc-filter { | |||
padding: 10px; | |||
margin: 0; | |||
} | |||
.toc-filter>input { | |||
border: 2px solid #ddd; | |||
border-radius: 20px; | |||
} | |||
.toc-filter>.filter-icon { | |||
display: none; | |||
} | |||
.sidetoc>.toc { | |||
overflow-x: hidden; | |||
} | |||
.sidetoc { | |||
border: none; | |||
} | |||
/* ALERTS */ | |||
.alert { | |||
padding: 0px 0px 5px 0px; | |||
color: inherit; | |||
background-color: inherit; | |||
border: none; | |||
box-shadow: 0px 2px 2px 0px rgba(100, 100, 100, 0.4); | |||
} | |||
.alert>p { | |||
margin-bottom: 0; | |||
padding: 5px 10px; | |||
} | |||
.alert>ul { | |||
margin-bottom: 0; | |||
padding: 5px 40px; | |||
} | |||
.alert>h5 { | |||
padding: 10px 15px; | |||
margin-top: 0; | |||
text-transform: uppercase; | |||
font-weight: bold; | |||
border-radius: 4px 4px 0 0; | |||
} | |||
.alert-info>h5 { | |||
color: #1976d2; | |||
border-bottom: 4px solid #1976d2; | |||
background-color: #e3f2fd; | |||
} | |||
.alert-warning>h5 { | |||
color: #f57f17; | |||
border-bottom: 4px solid #f57f17; | |||
background-color: #fff3e0; | |||
} | |||
.alert-danger>h5 { | |||
color: #d32f2f; | |||
border-bottom: 4px solid #d32f2f; | |||
background-color: #ffebee; | |||
} | |||
/* CODE HIGHLIGHT */ | |||
pre { | |||
padding: 9.5px; | |||
margin: 10px 10px 10px; | |||
font-size: 13px; | |||
word-break: break-all; | |||
word-wrap: break-word; | |||
/*background-color: #fffaef;*/ | |||
border-radius: 4px; | |||
box-shadow: 0px 1px 4px 1px rgba(100, 100, 100, 0.4); | |||
} |
@@ -1,26 +0,0 @@ | |||
const baseUrl = document.getElementById("docfx-style:rel").content; | |||
function onThemeSelect(event) { | |||
const theme = event.target.value; | |||
window.localStorage.setItem("theme", theme); | |||
window.themeElement.href = getUrl(theme); | |||
} | |||
function getUrl(slug) { | |||
return baseUrl + "styles/" + slug + ".css"; | |||
} | |||
const themeElement = document.createElement("link"); | |||
themeElement.rel = "stylesheet"; | |||
const theme = window.localStorage.getItem("theme") || "light"; | |||
themeElement.href = getUrl(theme); | |||
document.head.appendChild(themeElement); | |||
window.themeElement = themeElement; | |||
document.addEventListener("DOMContentLoaded", function() { | |||
const themeSwitcher = document.getElementById("theme-switcher"); | |||
themeSwitcher.onchange = onThemeSelect; | |||
themeSwitcher.value = theme; | |||
}, false); |
@@ -1,9 +0,0 @@ | |||
div.theme-switch-field { | |||
padding-left: 10px; | |||
padding-bottom: 15px | |||
} | |||
div.theme-switch-field > p{ | |||
font-weight: bold; | |||
font-size: 1.2em; | |||
} |
@@ -1,72 +0,0 @@ | |||
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ | |||
/* Tomorrow Comment */ | |||
.hljs-comment, | |||
.hljs-quote { | |||
color: #8e908c; | |||
} | |||
/* Tomorrow Red */ | |||
.hljs-variable, | |||
.hljs-template-variable, | |||
.hljs-tag, | |||
.hljs-name, | |||
.hljs-selector-id, | |||
.hljs-selector-class, | |||
.hljs-regexp, | |||
.hljs-deletion { | |||
color: #c82829; | |||
} | |||
/* Tomorrow Orange */ | |||
.hljs-number, | |||
.hljs-built_in, | |||
.hljs-builtin-name, | |||
.hljs-literal, | |||
.hljs-type, | |||
.hljs-params, | |||
.hljs-meta, | |||
.hljs-link { | |||
color: #f5871f; | |||
} | |||
/* Tomorrow Yellow */ | |||
.hljs-attribute { | |||
color: #eab700; | |||
} | |||
/* Tomorrow Green */ | |||
.hljs-string, | |||
.hljs-symbol, | |||
.hljs-bullet, | |||
.hljs-addition { | |||
color: #718c00; | |||
} | |||
/* Tomorrow Blue */ | |||
.hljs-title, | |||
.hljs-section { | |||
color: #4271ae; | |||
} | |||
/* Tomorrow Purple */ | |||
.hljs-keyword, | |||
.hljs-selector-tag { | |||
color: #8959a8; | |||
} | |||
.hljs { | |||
display: block; | |||
overflow-x: auto; | |||
background: white; | |||
color: #4d4d4c; | |||
padding: 0.5em; | |||
} | |||
.hljs-emphasis { | |||
font-style: italic; | |||
} | |||
.hljs-strong { | |||
font-weight: bold; | |||
} |
@@ -1,115 +0,0 @@ | |||
/* | |||
* Visual Studio 2015 dark style | |||
* Author: Nicolas LLOBERA <nllobera@gmail.com> | |||
*/ | |||
.hljs { | |||
display: block; | |||
overflow-x: auto; | |||
padding: 0.5em; | |||
background: #282a36; | |||
color: #DCDCDC; | |||
} | |||
.hljs-keyword, | |||
.hljs-literal, | |||
.hljs-symbol, | |||
.hljs-name { | |||
color: #569CD6; | |||
} | |||
.hljs-link { | |||
color: #569CD6; | |||
text-decoration: underline; | |||
} | |||
.hljs-built_in, | |||
.hljs-type { | |||
color: #4EC9B0; | |||
} | |||
.hljs-number, | |||
.hljs-class { | |||
color: #B8D7A3; | |||
} | |||
.hljs-string, | |||
.hljs-meta-string { | |||
color: #D69D85; | |||
} | |||
.hljs-regexp, | |||
.hljs-template-tag { | |||
color: #9A5334; | |||
} | |||
.hljs-subst, | |||
.hljs-function, | |||
.hljs-title, | |||
.hljs-params, | |||
.hljs-formula { | |||
color: #DCDCDC; | |||
} | |||
.hljs-comment, | |||
.hljs-quote { | |||
color: #57A64A; | |||
font-style: italic; | |||
} | |||
.hljs-doctag { | |||
color: #608B4E; | |||
} | |||
.hljs-meta, | |||
.hljs-meta-keyword, | |||
.hljs-tag { | |||
color: #9B9B9B; | |||
} | |||
.hljs-variable, | |||
.hljs-template-variable { | |||
color: #BD63C5; | |||
} | |||
.hljs-attr, | |||
.hljs-attribute, | |||
.hljs-builtin-name { | |||
color: #9CDCFE; | |||
} | |||
.hljs-section { | |||
color: gold; | |||
} | |||
.hljs-emphasis { | |||
font-style: italic; | |||
} | |||
.hljs-strong { | |||
font-weight: bold; | |||
} | |||
/*.hljs-code { | |||
font-family:'Monospace'; | |||
}*/ | |||
.hljs-bullet, | |||
.hljs-selector-tag, | |||
.hljs-selector-id, | |||
.hljs-selector-class, | |||
.hljs-selector-attr, | |||
.hljs-selector-pseudo { | |||
color: #D7BA7D; | |||
} | |||
.hljs-addition { | |||
background-color: #144212; | |||
display: inline-block; | |||
width: 100%; | |||
} | |||
.hljs-deletion { | |||
background-color: #600; | |||
display: inline-block; | |||
width: 100%; | |||
} |
@@ -1,6 +0,0 @@ | |||
############### | |||
# temp file # | |||
############### | |||
*.yml | |||
.manifest |
@@ -1,16 +0,0 @@ | |||
--- | |||
uid: API.Docs | |||
--- | |||
# API Documentation | |||
This is where you will find documentation for all members and objects in Discord.Net. | |||
# Commonly Used Entities | |||
* @Discord.WebSocket | |||
* @Discord.WebSocket.DiscordSocketClient | |||
* @Discord.WebSocket.SocketGuildChannel | |||
* @Discord.WebSocket.SocketGuildUser | |||
* @Discord.WebSocket.SocketMessage | |||
* @Discord.WebSocket.SocketRole |
@@ -1,70 +0,0 @@ | |||
{ | |||
"metadata": [ | |||
{ | |||
"src": [ | |||
{ | |||
"src": "../src", | |||
"files": ["**.csproj"] | |||
} | |||
], | |||
"dest": "api", | |||
"filter": "filterConfig.yml", | |||
"properties": { | |||
"TargetFramework": "net5.0" | |||
} | |||
} | |||
], | |||
"build": { | |||
"content": [ | |||
{ | |||
"files": ["api/**.yml", "api/index.md"] | |||
}, | |||
{ | |||
"files": ["toc.yml", "index.md"] | |||
}, | |||
{ | |||
"files": ["faq/**.md", "faq/**/toc.yml"] | |||
}, | |||
{ | |||
"files": ["guides/**.md", "guides/**/toc.yml"] | |||
}, | |||
{ | |||
"src": "../", | |||
"files": ["CHANGELOG.md"] | |||
} | |||
], | |||
"resource": [ | |||
{ | |||
"files": [ | |||
"**/images/**", | |||
"**/samples/**", | |||
"langwordMapping.yml", | |||
"marketing/logo/**.svg", | |||
"marketing/logo/**.png", | |||
"favicon.ico" | |||
] | |||
} | |||
], | |||
"dest": "_site", | |||
"template": [ | |||
"default", | |||
"_template/light-dark-theme", | |||
"_template/last-modified", | |||
"_template/description-generator" | |||
], | |||
"postProcessors": [ | |||
"ExtractSearchIndex", | |||
"LastModifiedPostProcessor", | |||
"DescriptionPostProcessor" | |||
], | |||
"overwrite": "_overwrites/**/**.md", | |||
"globalMetadata": { | |||
"_appTitle": "Discord.Net Documentation", | |||
"_appFooter": "Discord.Net (c) 2015-2022 3.9.0", | |||
"_enableSearch": true, | |||
"_appLogoPath": "marketing/logo/SVG/Logomark Purple.svg", | |||
"_appFaviconPath": "favicon.ico" | |||
}, | |||
"xrefService": ["https://xref.docs.microsoft.com/query?uid={uid}"] | |||
} | |||
} |
@@ -1,123 +0,0 @@ | |||
--- | |||
uid: FAQ.Basics.BasicOp | |||
title: Questions about Basic Operations | |||
--- | |||
# Basic Operations Questions | |||
In the following section, you will find commonly asked questions and | |||
answers regarding basic usage of the library, as well as | |||
language-specific tips when using this library. | |||
## How should I safely check a type? | |||
> [!WARNING] | |||
> Direct casting (e.g., `(Type)type`) is **the least recommended** | |||
> way of casting, as it _can_ throw an [InvalidCastException] | |||
> when the object isn't the desired type. | |||
> | |||
> Please refer to [this post] for more details. | |||
In Discord.Net, the idea of polymorphism is used throughout. You may | |||
need to cast the object as a certain type before you can perform any | |||
action. | |||
A good and safe casting example: | |||
[!code-csharp[Casting](samples/cast.cs)] | |||
[invalidcastexception]: https://docs.microsoft.com/en-us/dotnet/api/system.invalidcastexception | |||
[this post]: https://docs.microsoft.com/en-us/dotnet/csharp/how-to/safely-cast-using-pattern-matching-is-and-as-operators | |||
## How do I send a message? | |||
> [!TIP] | |||
> The [GetChannel] method by default returns an [IChannel], allowing | |||
> channel types such as [IVoiceChannel], [ICategoryChannel] | |||
> to be returned; consequently, you cannot send a message | |||
> to channels like those. | |||
Any implementation of [IMessageChannel] has a [SendMessageAsync] | |||
method. You can get the channel via [GetChannel] under the client. | |||
Remember, when using Discord.Net, polymorphism is a common recurring | |||
theme. This means an object may take in many shapes or form, which | |||
means casting is your friend. You should attempt to cast the channel | |||
as an [IMessageChannel] or any other entity that implements it to be | |||
able to message. | |||
[sendmessageasync]: xref:Discord.IMessageChannel.SendMessageAsync* | |||
[getchannel]: xref:Discord.WebSocket.DiscordSocketClient.GetChannel* | |||
## How can I tell if a message is from X, Y, Z channel? | |||
You may check the message channel type. Visit [Glossary] to see the | |||
various types of channels. | |||
[Glossary]: xref:Guides.Entities.Glossary#channels | |||
## How can I get the guild from a message? | |||
There are 2 ways to do this. You can do either of the following, | |||
1. Cast the user as an [IGuildUser] and use its [IGuild] property. | |||
2. Cast the channel as an [IGuildChannel] and use its [IGuild] property. | |||
## How do I add hyperlink text to an embed? | |||
Embeds can use standard [markdown] in the description field as well | |||
as in field values. With that in mind, links can be added with | |||
`[text](link)`. | |||
[markdown]: https://support.discordapp.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline- | |||
## How do I add reactions to a message? | |||
Any entity that implements [IUserMessage] has an [AddReactionAsync] | |||
method. This method expects an [IEmote] as a parameter. | |||
In Discord.Net, an Emote represents a custom-image emote, while an | |||
Emoji is a Unicode emoji (standard emoji). Both [Emoji] and [Emote] | |||
implement [IEmote] and are valid options. | |||
# [Adding a reaction to another message](#tab/emoji-others) | |||
[!code-csharp[Emoji](samples/emoji-others.cs)] | |||
# [Adding a reaction to a sent message](#tab/emoji-self) | |||
[!code-csharp[Emoji](samples/emoji-self.cs)] | |||
--- | |||
[addreactionasync]: xref:Discord.IMessage.AddReactionAsync* | |||
## What is a "preemptive rate limit?" | |||
A preemptive rate limit is Discord.Net's way of telling you to slow | |||
down before you get hit by the real rate limit. Hitting a real rate | |||
limit might prevent your entire client from sending any requests for | |||
a period of time. This is calculated based on the HTTP header | |||
returned by a Discord response. | |||
## Why am I getting so many preemptive rate limits when I try to add more than one reactions? | |||
This is due to how HTML header works, mistreating | |||
0.25sec/action to 1sec. This causes the lib to throw preemptive rate | |||
limit more frequently than it should for methods such as adding | |||
reactions. | |||
## Can I opt-out of preemptive rate limits? | |||
Unfortunately, not at the moment. See [#401](https://github.com/discord-net/Discord.Net/issues/401). | |||
[IChannel]: xref:Discord.IChannel | |||
[ICategoryChannel]: xref:Discord.ICategoryChannel | |||
[IGuildChannel]: xref:Discord.IGuildChannel | |||
[ITextChannel]: xref:Discord.ITextChannel | |||
[IGuild]: xref:Discord.IGuild | |||
[IVoiceChannel]: xref:Discord.IVoiceChannel | |||
[IGuildUser]: xref:Discord.IGuildUser | |||
[IMessageChannel]: xref:Discord.IMessageChannel | |||
[IUserMessage]: xref:Discord.IUserMessage | |||
[IEmote]: xref:Discord.IEmote | |||
[Emote]: xref:Discord.Emote | |||
[Emoji]: xref:Discord.Emoji |
@@ -1,148 +0,0 @@ | |||
--- | |||
uid: FAQ.Basics.ClientBasics | |||
title: Basic Questions about Client | |||
--- | |||
# Client Basics Questions | |||
In the following section, you will find commonly asked questions and | |||
answers about common issues that you may face when utilizing the | |||
various clients offered by the library. | |||
## I keep having trouble with intents! | |||
As Discord.NET has upgraded from Discord API v6 to API v9, | |||
`GatewayIntents` must now be specified in the socket config, as well as on the [developer portal]. | |||
```cs | |||
// Where ever you declared your websocket client. | |||
DiscordSocketClient _client; | |||
... | |||
var config = new DiscordSocketConfig() | |||
{ | |||
.. // Other config options can be presented here. | |||
GatewayIntents = GatewayIntents.All | |||
} | |||
_client = new DiscordSocketClient(config); | |||
``` | |||
### Common intents: | |||
- AllUnprivileged: This is a group of most common intents, that do NOT require any [developer portal] intents to be enabled. | |||
This includes intents that receive messages such as: `GatewayIntents.GuildMessages, GatewayIntents.DirectMessages` | |||
- GuildMembers: An intent disabled by default, as you need to enable it in the [developer portal]. | |||
- GuildPresences: Also disabled by default, this intent together with `GuildMembers` are the only intents not included in `AllUnprivileged`. | |||
- All: All intents, it is ill advised to use this without care, as it _can_ cause a memory leak from presence. | |||
The library will give responsive warnings if you specify unnecessary intents. | |||
> [!NOTE] | |||
> All gateway intents, their Discord API counterpart and their enum value are listed | |||
> [HERE](xref:Discord.GatewayIntents) | |||
### Stacking intents: | |||
It is common that you require several intents together. | |||
The example below shows how this can be done. | |||
```cs | |||
GatewayIntents = GatewayIntents.AllUnprivileged | GatewayIntents.GuildMembers | .. | |||
``` | |||
> [!NOTE] | |||
> Further documentation on the ` | ` operator can be found | |||
> [HERE](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators) | |||
[developer portal]: https://discord.com/developers/ | |||
## My client keeps returning 401 upon logging in! | |||
> [!WARNING] | |||
> Userbot/selfbot (logging in with a user token) is no | |||
> longer supported with this library starting from 2.0, as | |||
> logging in under a user account may result in account termination. | |||
> | |||
> For more information, see issue [827] & [958], as well as the official | |||
> [Discord API Terms of Service]. | |||
There are few possible reasons why this may occur. | |||
1. You are not using the appropriate [TokenType]. If you are using a | |||
bot account created from the Discord Developer portal, you should | |||
be using `TokenType.Bot`. | |||
2. You are not using the correct login credentials. Please keep in | |||
mind that a token is **different** from a *client secret*. | |||
[TokenType]: xref:Discord.TokenType | |||
[827]: https://github.com/discord-net/Discord.Net/issues/827 | |||
[958]: https://github.com/discord-net/Discord.Net/issues/958 | |||
[Discord API Terms of Service]: https://discord.com/developers/docs/legal | |||
## How do I do X, Y, Z when my bot connects/logs on? Why do I get a `NullReferenceException` upon calling any client methods after connect? | |||
Your bot should **not** attempt to interact in any way with | |||
guilds/servers until the [Ready] event fires. When the bot | |||
connects, it first has to download guild information from | |||
Discord for you to get access to any server | |||
information; the client is not ready at this point. | |||
Technically, the [GuildAvailable] event fires once the data for a | |||
particular guild has downloaded; however, it is best to wait for all | |||
guilds to be downloaded. Once all downloads are complete, the [Ready] | |||
event is triggered, then you can proceed to do whatever you like. | |||
[Ready]: xref:Discord.WebSocket.DiscordSocketClient.Ready | |||
[GuildAvailable]: xref:Discord.WebSocket.BaseSocketClient.GuildAvailable | |||
## How do I get a message's previous content when that message is edited? | |||
If you need to do anything with messages (e.g., checking Reactions, | |||
checking the content of edited/deleted messages), you must set the | |||
[MessageCacheSize] in your [DiscordSocketConfig] settings in order to | |||
use the cached message entity. Read more about it [here](xref:Guides.Concepts.Events#cacheable). | |||
1. Message Cache must be enabled. | |||
2. Hook the MessageUpdated event. This event provides a *before* and | |||
*after* object. | |||
3. Only messages received *after* the bot comes online will be | |||
available in the cache. | |||
[MessageCacheSize]: xref:Discord.WebSocket.DiscordSocketConfig.MessageCacheSize | |||
[DiscordSocketConfig]: xref:Discord.WebSocket.DiscordSocketConfig | |||
[MessageUpdated]: xref:Discord.WebSocket.BaseSocketClient.MessageUpdated | |||
## What is a shard/sharded client, and how is it different from the `DiscordSocketClient`? | |||
As your bot grows in popularity, it is recommended that you should section your bot off into separate processes. | |||
The [DiscordShardedClient] is essentially a class that allows you to easily create and manage multiple [DiscordSocketClient] | |||
instances, with each one serving a different amount of guilds. | |||
There are very few differences from the [DiscordSocketClient] class, and it is very straightforward | |||
to modify your existing code to use a [DiscordShardedClient] when necessary. | |||
1. You can specify the total amount of shards, or shard ids, via [DiscordShardedClient]'s constructors. | |||
If the total shards are not specified then the library will get the recommended shard count via the | |||
[Get Gateway Bot](https://discord.com/developers/docs/topics/gateway#get-gateway-bot) route. | |||
2. The [Connected], [Disconnected], [Ready], and [LatencyUpdated] events | |||
are replaced with [ShardConnected], [ShardDisconnected], [ShardReady], and [ShardLatencyUpdated]. | |||
3. Every event handler you apply/remove to the [DiscordShardedClient] is applied/removed to each shard. | |||
If you wish to control a specific shard's events, you can access an individual shard through the `Shards` property. | |||
If you do not wish to use the [DiscordShardedClient] and instead reuse the same [DiscordSocketClient] code and manually shard them, | |||
you can do so by specifying the [ShardId] for the [DiscordSocketConfig] and pass that to the [DiscordSocketClient]'s constructor. | |||
[DiscordSocketClient]: xref:Discord.WebSocket.DiscordSocketClient | |||
[DiscordShardedClient]: xref:Discord.WebSocket.DiscordShardedClient | |||
[Connected]: xref:Discord.WebSocket.DiscordSocketClient.Connected | |||
[Disconnected]: xref:Discord.WebSocket.DiscordSocketClient.Disconnected | |||
[LatencyUpdated]: xref:Discord.WebSocket.DiscordSocketClient.LatencyUpdated | |||
[ShardConnected]: xref:Discord.WebSocket.DiscordShardedClient.ShardConnected | |||
[ShardDisconnected]: xref:Discord.WebSocket.DiscordShardedClient.ShardDisconnected | |||
[ShardReady]: xref:Discord.WebSocket.DiscordShardedClient.ShardReady | |||
[ShardLatencyUpdated]: xref:Discord.WebSocket.DiscordShardedClient.ShardLatencyUpdated | |||
[ShardId]: xref:Discord.WebSocket.DiscordSocketConfig.ShardId |
@@ -1,46 +0,0 @@ | |||
--- | |||
uid: FAQ.Basics.DI | |||
title: Questions about Dependency Injection. | |||
--- | |||
# Dependency-injection-related Questions | |||
In the following section, you will find common questions and answers | |||
to utilizing dependency injection with @Discord.Commands and @Discord.Interactions, as well as | |||
common troubleshooting steps regarding DI. | |||
## What is a service? Why does my module not hold any data after execution? | |||
In Discord.Net, modules are created similarly to ASP.NET, meaning | |||
that they have a transient nature; modules are spawned whenever a | |||
request is received, and are killed from memory when the execution | |||
finishes. In other words, you cannot store persistent | |||
data inside a module. Consider using a service if you wish to | |||
workaround this. | |||
Service is often used to hold data externally so that they persist | |||
throughout execution. Think of it like a chest that holds | |||
whatever you throw at it that won't be affected by anything unless | |||
you want it to. Note that you should also learn Microsoft's | |||
implementation of [Dependency Injection] \([video]) before proceeding. | |||
A brief example of service and dependency injection can be seen below. | |||
[!code-csharp[DI](samples/DI.cs)] | |||
[Dependency Injection]: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection | |||
[video]: https://www.youtube.com/watch?v=QtDTfn8YxXg | |||
## Why is my Command/Interaction Service complaining about a missing dependency? | |||
If you encounter an error similar to `Failed to create MyModule, | |||
dependency MyExternalDependency was not found.`, you may have | |||
forgotten to add the external dependency to the dependency container. | |||
For example, if your module, `MyModule`, requests a `DatabaseService` | |||
in its constructor, the `DatabaseService` must be present in the | |||
[IServiceProvider] when registering `MyModule`. | |||
[!code-csharp[Missing Dependencies](samples/missing-dep.cs)] | |||
[IServiceProvider]: xref:System.IServiceProvider |
@@ -1,96 +0,0 @@ | |||
--- | |||
uid: FAQ.Basics.GetStarted | |||
title: Beginner Questions / How to Get Started | |||
--- | |||
# Basic Concepts / Getting Started | |||
In this following section, you will find commonly asked questions and | |||
answers about how to get started with Discord.Net, as well as basic | |||
introduction to the Discord API ecosystem. | |||
## How do I add my bot to my server/guild? | |||
Inviting your bot can be done by using the OAuth2 url generator provided by the [Discord Developer Portal]. | |||
Permissions can be granted by selecting the `bot` scope in the scopes section. | |||
 | |||
A permissions tab will appear below the scope selection, | |||
from which you can pick any permissions your bot may require to function. | |||
When invited, the role this bot is granted will include these permissions. | |||
If you grant no permissions, no role will be created for your bot upon invitation as there is no need for one. | |||
 | |||
When done selecting permissions, you can use the link below in your browser to invite the bot | |||
to servers where you have the `Manage Server` permission. | |||
 | |||
If you are planning to play around with slash/context commands, | |||
make sure to check the `application commands` scope before inviting your bot! | |||
> [!NOTE] | |||
> You do not have to kick and reinvite your bot to update permissions/scopes later on. | |||
> Simply reusing the invite link with provided scopes/perms will update it accordingly. | |||
[Discord Developer Portal]: https://discord.com/developers/applications/ | |||
## What is a token? | |||
A token is a credential used to log into an account. This information | |||
should be kept **private** and for your eyes only. Anyone with your | |||
token can log into your account. This risk applies to both user | |||
and bot accounts. That also means that you should **never** hardcode | |||
your token or add it into source control, as your identity may be | |||
stolen by scrape bots on the internet that scours through | |||
constantly to obtain a token. | |||
## What is a client/user/object ID? | |||
Each user and object on Discord has its own snowflake ID generated | |||
based on various conditions. | |||
 | |||
Anyone can see the ID; it is public. It is merely used to | |||
identify an object in the Discord ecosystem. Many things in the | |||
Discord ecosystem require an ID to retrieve or identify the said | |||
object. | |||
There are 2 common ways to obtain the said ID. | |||
### [Discord Developer Mode](#tab/dev-mode) | |||
By enabling the developer mode you can right click on most objects | |||
to obtain their snowflake IDs (please note that this may not apply to | |||
all objects, such as role IDs, or DM channel IDs). | |||
 | |||
### [Escape Character](#tab/escape-char) | |||
You can escape an object by using `\` in front the object in the | |||
Discord client. For example, when you do `\@Example#1234` in chat, | |||
it will return the user ID of the aforementioned user. | |||
 | |||
*** | |||
## How do I get the role ID? | |||
> [!WARNING] | |||
> Right-clicking on the role and copying the ID will **not** work. | |||
> This will only copy the message ID. | |||
Several common ways to do this: | |||
1. (Easiest) Right click on the role either in the Server Settings | |||
or in the user's role list. | |||
 | |||
2. Make the role mentionable and mention the role, and escape it | |||
using the `\` character in front. | |||
3. Inspect the roles collection within the guild via your debugger. |