| @@ -1,113 +1,380 @@ | |||||
| ############################################################################### | |||||
| # EditorConfig is awesome: http://EditorConfig.org | # EditorConfig is awesome: http://EditorConfig.org | ||||
| ############################################################################### | |||||
| ############################################################################### | |||||
| # Top-most EditorConfig file | |||||
| ############################################################################### | |||||
| root = true | 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 | charset = utf-8 | ||||
| end_of_line = lf | end_of_line = lf | ||||
| insert_final_newline = true | insert_final_newline = true | ||||
| indent_size = 4 | |||||
| indent_style = space | indent_style = space | ||||
| indent_size = 4 | |||||
| trim_trailing_whitespace = true | 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_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 | 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] | [*.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_collection_initializer = true:suggestion | ||||
| dotnet_style_explicit_tuple_names = true:suggestion | dotnet_style_explicit_tuple_names = true:suggestion | ||||
| dotnet_style_coalesce_expression = true:suggestion | |||||
| dotnet_style_null_propagation = 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_catch = true | ||||
| csharp_new_line_before_else = true | |||||
| csharp_new_line_before_finally = 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_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_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_cast = false | ||||
| csharp_space_after_colon_in_inheritance_clause = true | |||||
| csharp_space_after_comma = true | |||||
| csharp_space_after_dot = false | |||||
| csharp_space_after_keywords_in_control_flow_statements = true | csharp_space_after_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 | ## Ignore Visual Studio temporary files, build results, and | ||||
| ## files generated by popular Visual Studio add-ons. | ## files generated by popular Visual Studio add-ons. | ||||
| ## | |||||
| ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore | |||||
| # User-specific files | # User-specific files | ||||
| *.rsuser | |||||
| *.suo | *.suo | ||||
| *.user | *.user | ||||
| *.userosscache | *.userosscache | ||||
| @@ -10,18 +13,30 @@ | |||||
| # User-specific files (MonoDevelop/Xamarin Studio) | # User-specific files (MonoDevelop/Xamarin Studio) | ||||
| *.userprefs | *.userprefs | ||||
| # Mono auto generated files | |||||
| mono_crash.* | |||||
| # Build results | # Build results | ||||
| [Dd]ebug/ | [Dd]ebug/ | ||||
| [Dd]ebugPublic/ | [Dd]ebugPublic/ | ||||
| [Rr]elease/ | [Rr]elease/ | ||||
| [Rr]eleases/ | [Rr]eleases/ | ||||
| build/ | |||||
| x64/ | |||||
| x86/ | |||||
| [Aa][Rr][Mm]/ | |||||
| [Aa][Rr][Mm]64/ | |||||
| bld/ | bld/ | ||||
| [Bb]in/ | [Bb]in/ | ||||
| [Oo]bj/ | [Oo]bj/ | ||||
| [Ll]og/ | |||||
| # Visual Studo 2015 cache/options directory | |||||
| # Visual Studio 2015/2017 cache/options directory | |||||
| .vs/ | .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 | # MSTest test Results | ||||
| [Tt]est[Rr]esult*/ | [Tt]est[Rr]esult*/ | ||||
| @@ -36,14 +51,28 @@ TestResult.xml | |||||
| [Rr]eleasePS/ | [Rr]eleasePS/ | ||||
| dlldata.c | 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 | *_i.c | ||||
| *_p.c | *_p.c | ||||
| *_i.h | |||||
| *_h.h | |||||
| *.ilk | *.ilk | ||||
| *.meta | *.meta | ||||
| *.obj | *.obj | ||||
| *.iobj | |||||
| *.pch | *.pch | ||||
| *.pdb | *.pdb | ||||
| *.ipdb | |||||
| *.pgc | *.pgc | ||||
| *.pgd | *.pgd | ||||
| *.rsp | *.rsp | ||||
| @@ -53,6 +82,7 @@ dlldata.c | |||||
| *.tlh | *.tlh | ||||
| *.tmp | *.tmp | ||||
| *.tmp_proj | *.tmp_proj | ||||
| *_wpftmp.csproj | |||||
| *.log | *.log | ||||
| *.vspscc | *.vspscc | ||||
| *.vssscc | *.vssscc | ||||
| @@ -68,14 +98,21 @@ _Chutzpah* | |||||
| ipch/ | ipch/ | ||||
| *.aps | *.aps | ||||
| *.ncb | *.ncb | ||||
| *.opendb | |||||
| *.opensdf | *.opensdf | ||||
| *.sdf | *.sdf | ||||
| *.cachefile | *.cachefile | ||||
| *.VC.db | |||||
| *.VC.VC.opendb | |||||
| # Visual Studio profiler | # Visual Studio profiler | ||||
| *.psess | *.psess | ||||
| *.vsp | *.vsp | ||||
| *.vspx | *.vspx | ||||
| *.sap | |||||
| # Visual Studio Trace Files | |||||
| *.e2e | |||||
| # TFS 2012 Local Workspace | # TFS 2012 Local Workspace | ||||
| $tf/ | $tf/ | ||||
| @@ -88,7 +125,7 @@ _ReSharper*/ | |||||
| *.[Rr]e[Ss]harper | *.[Rr]e[Ss]harper | ||||
| *.DotSettings.user | *.DotSettings.user | ||||
| # JustCode is a .NET coding addin-in | |||||
| # JustCode is a .NET coding add-in | |||||
| .JustCode | .JustCode | ||||
| # TeamCity is a build add-in | # TeamCity is a build add-in | ||||
| @@ -97,9 +134,18 @@ _TeamCity* | |||||
| # DotCover is a Code Coverage Tool | # DotCover is a Code Coverage Tool | ||||
| *.dotCover | *.dotCover | ||||
| # AxoCover is a Code Coverage Tool | |||||
| .axoCover/* | |||||
| !.axoCover/settings.json | |||||
| # Visual Studio code coverage results | |||||
| *.coverage | |||||
| *.coveragexml | |||||
| # NCrunch | # NCrunch | ||||
| _NCrunch_* | _NCrunch_* | ||||
| .*crunch*.local.xml | .*crunch*.local.xml | ||||
| nCrunchTemp_* | |||||
| # MightyMoose | # MightyMoose | ||||
| *.mm.* | *.mm.* | ||||
| @@ -127,38 +173,69 @@ publish/ | |||||
| # Publish Web Output | # Publish Web Output | ||||
| *.[Pp]ublish.xml | *.[Pp]ublish.xml | ||||
| *.azurePubxml | *.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 | # but database connection strings (with potential passwords) will be unencrypted | ||||
| *.pubxml | *.pubxml | ||||
| *.publishproj | *.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 | # NuGet Packages | ||||
| *.nupkg | *.nupkg | ||||
| # The packages folder can be ignored because of Package Restore | # The packages folder can be ignored because of Package Restore | ||||
| **/packages/* | |||||
| **/[Pp]ackages/* | |||||
| # except build/, which is used as an MSBuild target. | # 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 | # 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/ | csx/ | ||||
| *.build.csdef | *.build.csdef | ||||
| # Windows Store app package directory | |||||
| # Microsoft Azure Emulator | |||||
| ecf/ | |||||
| rcf/ | |||||
| # Windows Store app package directories and files | |||||
| AppPackages/ | 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 | # Others | ||||
| *.[Cc]ache | |||||
| ClientBin/ | ClientBin/ | ||||
| ~$* | ~$* | ||||
| *~ | *~ | ||||
| *.dbmdl | *.dbmdl | ||||
| *.dbproj.schemaview | *.dbproj.schemaview | ||||
| *.jfm | |||||
| *.pfx | *.pfx | ||||
| *.publishsettings | *.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 | # RIA/Silverlight projects | ||||
| Generated_Code/ | Generated_Code/ | ||||
| @@ -170,21 +247,30 @@ _UpgradeReport_Files/ | |||||
| Backup*/ | Backup*/ | ||||
| UpgradeLog*.XML | UpgradeLog*.XML | ||||
| UpgradeLog*.htm | UpgradeLog*.htm | ||||
| ServiceFabricBackup/ | |||||
| *.rptproj.bak | |||||
| # SQL Server files | # SQL Server files | ||||
| *.mdf | *.mdf | ||||
| *.ldf | *.ldf | ||||
| *.ndf | |||||
| # Business Intelligence projects | # Business Intelligence projects | ||||
| *.rdl.data | *.rdl.data | ||||
| *.bim.layout | *.bim.layout | ||||
| *.bim_*.settings | *.bim_*.settings | ||||
| *.rptproj.rsuser | |||||
| *- Backup*.rdl | |||||
| # Microsoft Fakes | # Microsoft Fakes | ||||
| FakesAssemblies/ | FakesAssemblies/ | ||||
| # GhostDoc plugin setting file | |||||
| *.GhostDoc.xml | |||||
| # Node.js Tools for Visual Studio | # Node.js Tools for Visual Studio | ||||
| .ntvs_analysis.dat | .ntvs_analysis.dat | ||||
| node_modules/ | |||||
| # Visual Studio 6 build log | # Visual Studio 6 build log | ||||
| *.plg | *.plg | ||||
| @@ -192,17 +278,152 @@ FakesAssemblies/ | |||||
| # Visual Studio 6 workspace options file | # Visual Studio 6 workspace options file | ||||
| *.opt | *.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 | *.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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | EndProject | ||||
| Global | Global | ||||
| GlobalSection(SolutionConfigurationPlatforms) = preSolution | GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||
| @@ -56,249 +29,78 @@ Global | |||||
| Release|x86 = Release|x86 | Release|x86 = Release|x86 | ||||
| EndGlobalSection | EndGlobalSection | ||||
| GlobalSection(ProjectConfigurationPlatforms) = postSolution | 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 | EndGlobalSection | ||||
| GlobalSection(SolutionProperties) = preSolution | GlobalSection(SolutionProperties) = preSolution | ||||
| HideSolutionNode = FALSE | HideSolutionNode = FALSE | ||||
| EndGlobalSection | EndGlobalSection | ||||
| GlobalSection(NestedProjects) = preSolution | 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 | EndGlobalSection | ||||
| GlobalSection(ExtensibilityGlobals) = postSolution | 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 | EndGlobalSection | ||||
| EndGlobal | 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) | 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 | Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | 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"?> | <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | <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> | </ItemGroup> | ||||
| <PropertyGroup> | <PropertyGroup> | ||||
| <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild> | <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild> | ||||
| </PropertyGroup> --> | |||||
| </PropertyGroup> | |||||
| </Project> | </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. | |||||