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