From dac614e2ad510052412bb5cae96165d0ce40b2d1 Mon Sep 17 00:00:00 2001 From: Armano den Boef Date: Mon, 14 Feb 2022 13:47:19 +0100 Subject: [PATCH] FAQ rework, replacing outdated info, better interaction faq --- .../dependency-injection.md | 18 ++----- docs/faq/basics/getting-started.md | 38 +++++++++----- docs/faq/basics/images/link.png | Bin 0 -> 5229 bytes docs/faq/basics/images/permissions.png | Bin 0 -> 60409 bytes docs/faq/basics/images/scopes.png | Bin 0 -> 28566 bytes docs/faq/{commands => basics}/samples/DI.cs | 0 .../samples/missing-dep.cs | 9 ++-- .../framework.md} | 43 ++++++++++----- .../general.md} | 49 +++++------------- .../images/scope.png | Bin docs/faq/int_framework/manual.md | 45 ++++++++++++++++ .../samples/interactionsyncing.cs | 6 +++ .../samples/propertyinjection.cs | 8 +++ .../samples/registerint.cs | 0 docs/faq/misc/legacy.md | 21 +++++++- .../{commands => text_commands}/general.md | 17 +++--- .../samples/Remainder.cs | 0 .../samples/runmode-cmdattrib.cs | 0 .../samples/runmode-cmdconfig.cs | 0 docs/faq/toc.yml | 22 ++++---- 20 files changed, 179 insertions(+), 97 deletions(-) rename docs/faq/{commands => basics}/dependency-injection.md (71%) create mode 100644 docs/faq/basics/images/link.png create mode 100644 docs/faq/basics/images/permissions.png create mode 100644 docs/faq/basics/images/scopes.png rename docs/faq/{commands => basics}/samples/DI.cs (100%) rename docs/faq/{commands => basics}/samples/missing-dep.cs (82%) rename docs/faq/{commands/interaction.md => int_framework/framework.md} (52%) rename docs/faq/{basics/interactions.md => int_framework/general.md} (54%) rename docs/faq/{basics => int_framework}/images/scope.png (100%) create mode 100644 docs/faq/int_framework/manual.md create mode 100644 docs/faq/int_framework/samples/interactionsyncing.cs create mode 100644 docs/faq/int_framework/samples/propertyinjection.cs rename docs/faq/{basics => int_framework}/samples/registerint.cs (100%) rename docs/faq/{commands => text_commands}/general.md (89%) rename docs/faq/{commands => text_commands}/samples/Remainder.cs (100%) rename docs/faq/{commands => text_commands}/samples/runmode-cmdattrib.cs (100%) rename docs/faq/{commands => text_commands}/samples/runmode-cmdconfig.cs (100%) diff --git a/docs/faq/commands/dependency-injection.md b/docs/faq/basics/dependency-injection.md similarity index 71% rename from docs/faq/commands/dependency-injection.md rename to docs/faq/basics/dependency-injection.md index d6b7f8b58..fe5686797 100644 --- a/docs/faq/commands/dependency-injection.md +++ b/docs/faq/basics/dependency-injection.md @@ -1,12 +1,12 @@ --- -uid: FAQ.Commands.DI -title: Questions about Dependency Injection with Commands +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, as well as +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? @@ -22,8 +22,7 @@ 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, -as well as how it works in [Discord.Net](xref:Guides.TextCommands.DI#usage-in-modules). +implementation of [Dependency Injection] \([video]) before proceeding. A brief example of service and dependency injection can be seen below. @@ -32,18 +31,12 @@ A brief example of service and dependency injection can be seen below. [Dependency Injection]: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection [video]: https://www.youtube.com/watch?v=QtDTfn8YxXg -## Why is my `CommandService` complaining about a missing dependency? +## 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. -Starting from Discord.Net 2.0, all dependencies required by each -module must be present when the module is loaded into the -[CommandService]. This means when loading the module, you must pass a -valid [IServiceProvider] with the dependency loaded before the module -can be successfully registered. - For example, if your module, `MyModule`, requests a `DatabaseService` in its constructor, the `DatabaseService` must be present in the [IServiceProvider] when registering `MyModule`. @@ -51,4 +44,3 @@ in its constructor, the `DatabaseService` must be present in the [!code-csharp[Missing Dependencies](samples/missing-dep.cs)] [IServiceProvider]: xref:System.IServiceProvider -[CommandService]: xref:Discord.Commands.CommandService diff --git a/docs/faq/basics/getting-started.md b/docs/faq/basics/getting-started.md index dc4b11548..6774a36f9 100644 --- a/docs/faq/basics/getting-started.md +++ b/docs/faq/basics/getting-started.md @@ -11,18 +11,32 @@ introduction to the Discord API ecosystem. ## How do I add my bot to my server/guild? -You can do so by using the [permission calculator] provided -by [FiniteReality]. -This tool allows you to set permissions that the bot will be assigned -with, and invite the bot into your guild. With this method, bots will -also be assigned a unique role that a regular user cannot use; this -is what we call a `Managed` role. Because you cannot assign this -role to any other users, it is much safer than creating a single -role which, intentionally or not, can be applied to other users -to escalate their privilege. - -[FiniteReality]: https://github.com/FiniteReality/permissions-calculator -[permission calculator]: https://finitereality.github.io/permissions-calculator +Inviting your bot can be done by using the O2Auth url generator provided by the [Discord Developer Portal]. + +Permissions can be granted by selecting the `bot` scope in the scopes section. + +![Scopes](images/scopes.png) + +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. + +![Permissions](images/permissions.png) + +When done selecting permissions, you can use the link below in your browser to invite the bot +to servers you have `Manage Server` permission of. + +![Invite](images/link.png) + +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? diff --git a/docs/faq/basics/images/link.png b/docs/faq/basics/images/link.png new file mode 100644 index 0000000000000000000000000000000000000000..dd6b520abd2accd4104c880ba547a9656224d607 GIT binary patch literal 5229 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%0DB$G7^^e8uQERTx=J~VShq9p)zliugn%S5k# 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 Eq~_7i)rtU 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

nGtrRhT+4r(htzqndPk?t=>#M<^-(jW3 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 literal 0 HcmV?d00001 diff --git a/docs/faq/basics/images/scopes.png b/docs/faq/basics/images/scopes.png new file mode 100644 index 0000000000000000000000000000000000000000..8511908d525730c97b52729a94ed111880bfb732 GIT binary patch literal 28566 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 - .AddService(client) + .AddSingleton() + .AddSingleton(client) // We are missing DatabaseService! .BuildServiceProvider(); } @@ -25,5 +25,8 @@ public class CommandHandler // registered in this instance of _services. await _commands.AddModulesAsync(Assembly.GetEntryAssembly(), _services); // ... + + // The same approach applies to the interaction service. + // Make sure to resolve these issues! } -} \ No newline at end of file +} diff --git a/docs/faq/commands/interaction.md b/docs/faq/int_framework/framework.md similarity index 52% rename from docs/faq/commands/interaction.md rename to docs/faq/int_framework/framework.md index db61bc3f5..793b44d3e 100644 --- a/docs/faq/commands/interaction.md +++ b/docs/faq/int_framework/framework.md @@ -1,34 +1,54 @@ --- -uid: FAQ.Commands.Interactions -title: Interaction service +uid: FAQ.Interactions.Framework +title: Interaction Framework --- -# Interaction commands in services +# The Interaction Framework -A chapter talking about the interaction service framework. -For questions about interactions in general, refer to the [Interactions FAQ] +Common misconceptions and questions about the Interaction Framework. + +## How can I restrict some of my commands so only specific users can execute them? + +Based on how you want to implement the restrictions, you can use the +built-in `RequireUserPermission` precondition, which allows you to +restrict the command based on the user's current permissions in the +guild or channel (*e.g., `GuildPermission.Administrator`, +`ChannelPermission.ManageMessages`*). + +[RequireUserPermission]: xref:Discord.Commands.RequireUserPermissionAttribute + +> [!NOTE] +> There are many more preconditions to use, including being able to make some yourself. +> Examples on self-made preconditions can be found +> [here](https://github.com/discord-net/Discord.Net/blob/dev/samples/InteractionFramework/Attributes/RequireOwnerAttribute.cs) + +## Why do preconditions not hide my commands? + +In the current permission design by Discord, +it is not very straight forward to limit vision of slash/context commands to users. +If you want to hide commands, you should take a look at the commands' `DefaultPermissions` parameter. ## Module dependencies aren't getting populated by Property Injection? Make sure the properties are publicly accessible and publicly settable. -## How do I use this * interaction specific method/property? - -If your interaction context holds a down-casted version of the interaction object, you need to up-cast it. -Ideally, use pattern matching to make sure its the type of interaction you are expecting it to be. +[!code-csharp[Property Injection](samples/propertyinjection.cs)] ## `InteractionService.ExecuteAsync()` always returns a successful result, how do i access the failed command execution results? -If you are using `RunMode.Async` you need to setup your post-execution pipeline around `CommandExecuted` events. +If you are using `RunMode.Async` you need to setup your post-execution pipeline around +`..Executed` events exposed by the Interaction Service. ## How do I check if the executing user has * permission? Refer to the [documentation about preconditions] +[documentation about preconditions]: xref:Guides.ChatCommands.Preconditions + ## How do I send the HTTP Response from inside the command modules. Set the `RestResponseCallback` property of [InteractionServiceConfig] with a delegate for handling HTTP Responses and use -`RestInteractionModuleBase` to create your command modules. `RespondAsync()` and `DeferAsync()` methods of this module base will use the +`RestInteractionModuleBase` to create your command modules. `RespondWithModalAsync()`, `RespondAsync()` and `DeferAsync()` methods of this module base will use the `RestResponseCallback` to create interaction responses. ## Is there a cleaner way of creating parameter choices other than using `[Choice]`? @@ -49,4 +69,3 @@ It compares the _target base type_ key of the [TypeConverter]: xref:Discord.Interactions.TypeConverter [Interactions FAQ]: xref: FAQ.Basics.Interactions [InteractionServiceConfig]: xref:Discord.Interactions.InteractionServiceConfig -[documentation about preconditions]: xref: Guides.ChatCommands.Preconditions diff --git a/docs/faq/basics/interactions.md b/docs/faq/int_framework/general.md similarity index 54% rename from docs/faq/basics/interactions.md rename to docs/faq/int_framework/general.md index 33b89ac2d..c3157e608 100644 --- a/docs/faq/basics/interactions.md +++ b/docs/faq/int_framework/general.md @@ -1,11 +1,13 @@ --- -uid: FAQ.Basics.InteractionBasics -title: Basics of interactions, common practice +uid: FAQ.Interactions.General +title: Interactions --- -# Interactions basics, where to get started +# Interaction basics -This section answers basic questions and common mistakes in handling application commands, and responding to them. +This chapter mostly refers to interactions in general, +and will include questions that are common among users of the Interaction Framework +as well as users that register and handle commands manually. ## What's the difference between RespondAsync, DeferAsync and FollowupAsync? @@ -24,33 +26,20 @@ DeferAsync will not send out a response, RespondAsync will. ## Im getting System.TimeoutException: 'Cannot respond to an interaction after 3 seconds!' -This happens because your computers clock is out of sync or your trying to respond after 3 seconds. If your clock is out of sync and you cant fix it, you can set the `UseInteractionSnowflakeDate` to false in the config. +This happens because your computers clock is out of sync or your trying to respond after 3 seconds. +If your clock is out of sync and you can't fix it, you can set the `UseInteractionSnowflakeDate` to false in the [DiscordSocketConfig]. -## Bad form Exception when I try to create my commands, why do I get this? +[!code-csharp[Interaction Sync](samples/interactionsyncing.cs)] -Bad form exceptions are thrown if the slash, user or message command builder has invalid values. -The following options could resolve your error. +[DiscordClientConfig]: xref:Discord.WebSocket.DiscordSocketConfig -#### Is your command name lowercase? +## How do I use this * interaction specific method/property? -If your command name is not lowercase, it is not seen as a valid command entry. -`Avatar` is invalid; `avatar` is valid. - -#### Are your values below or above the required amount? (This also applies to message components) - -Discord expects all values to be below maximum allowed. -Going over this maximum amount of characters causes an exception. +If your interaction context holds a down-casted version of the interaction object, you need to up-cast it. +Ideally, use pattern matching to make sure its the type of interaction you are expecting it to be. > [!NOTE] -> All maximum and minimum value requirements can be found in the [Discord Developer Docs]. -> For components, structure documentation is found [here]. - -[Discord Developer Docs]: https://discord.com/developers/docs/interactions/application-commands#application-commands -[here]: https://discord.com/developers/docs/interactions/message-components#message-components - -#### Is your subcommand branching correct? - -Branching structure is covered properly here: xref:Guides.SlashCommands.SubCommand +> Further documentation on pattern matching can be found [here](xref:Guides.Entities.Casting). ## My interaction commands are not showing up? @@ -65,16 +54,6 @@ Did you register a guild command (should be instant), or waited more than an hou - Do you have the application commands scope checked when adding your bot to guilds? -![Scope check](images/scope.png) - -## There are many options for creating commands, which do I use? - -[!code-csharp[Register examples](samples/registerint.cs)] - -> [!NOTE] -> You can use bulkoverwrite even if there are no commands in guild, nor globally. -> The bulkoverwrite method disposes the old set of commands and replaces it with the new. - ## Do I need to create commands on startup? If you are registering your commands for the first time, it is required to create them once. diff --git a/docs/faq/basics/images/scope.png b/docs/faq/int_framework/images/scope.png similarity index 100% rename from docs/faq/basics/images/scope.png rename to docs/faq/int_framework/images/scope.png diff --git a/docs/faq/int_framework/manual.md b/docs/faq/int_framework/manual.md new file mode 100644 index 000000000..a47ca0c7a --- /dev/null +++ b/docs/faq/int_framework/manual.md @@ -0,0 +1,45 @@ +--- +uid: FAQ.Interactions.Basics +title: Interaction Basics +--- + +# Manually handing interactions. + +This section talks about the manual building and responding to interactions. +If you are using the interaction framework (highly recommended) this section does not apply to you. + +## Bad form Exception when I try to create my commands, why do I get this? + +Bad form exceptions are thrown if the slash, user or message command builder has invalid values. +The following options could resolve your error. + +#### Is your command name lowercase? + +If your command name is not lowercase, it is not seen as a valid command entry. +`Avatar` is invalid; `avatar` is valid. + +#### Are your values below or above the required amount? (This also applies to message components) + +Discord expects all values to be below maximum allowed. +Going over this maximum amount of characters causes an exception. + +> [!NOTE] +> All maximum and minimum value requirements can be found in the [Discord Developer Docs]. +> For components, structure documentation is found [here]. + +[Discord Developer Docs]: https://discord.com/developers/docs/interactions/application-commands#application-commands +[here]: https://discord.com/developers/docs/interactions/message-components#message-components + +#### Is your subcommand branching correct? + +Branching structure is covered properly here: xref:Guides.SlashCommands.SubCommand + +![Scope check](images/scope.png) + +## There are many options for creating commands, which do I use? + +[!code-csharp[Register examples](samples/registerint.cs)] + +> [!NOTE] +> You can use bulkoverwrite even if there are no commands in guild, nor globally. +> The bulkoverwrite method disposes the old set of commands and replaces it with the new. diff --git a/docs/faq/int_framework/samples/interactionsyncing.cs b/docs/faq/int_framework/samples/interactionsyncing.cs new file mode 100644 index 000000000..64066194a --- /dev/null +++ b/docs/faq/int_framework/samples/interactionsyncing.cs @@ -0,0 +1,6 @@ +DiscordSocketConfig config = new() +{ + UseInteractionSnowflakeDate = false +}; + +DiscordSocketclient client = new(config); diff --git a/docs/faq/int_framework/samples/propertyinjection.cs b/docs/faq/int_framework/samples/propertyinjection.cs new file mode 100644 index 000000000..fcacd52d1 --- /dev/null +++ b/docs/faq/int_framework/samples/propertyinjection.cs @@ -0,0 +1,8 @@ +public class MyModule +{ + // Intended. + public InteractionService Service { get; set; } + + // Will not work. A private setter cannot be accessed by the serviceprovider. + private InteractionService Service { get; private set; } +} diff --git a/docs/faq/basics/samples/registerint.cs b/docs/faq/int_framework/samples/registerint.cs similarity index 100% rename from docs/faq/basics/samples/registerint.cs rename to docs/faq/int_framework/samples/registerint.cs diff --git a/docs/faq/misc/legacy.md b/docs/faq/misc/legacy.md index fbfb41ac2..0b0b51159 100644 --- a/docs/faq/misc/legacy.md +++ b/docs/faq/misc/legacy.md @@ -8,15 +8,32 @@ title: Questions about Legacy Versions This section refers to legacy library-related questions that do not apply to the latest or recent version of the Discord.Net library. +## Migrating your commands to application commands. + +The new interaction service was designed to act like the previous service for text-based commands. +Your pre-existing code will continue to work, but you will need to migrate your modules and response functions to use the new +interaction service methods. Documentation on this can be found in the [Guides](xref:Guides.IntFw.Intro). + +## Gateway event parameters changed, why? + +With 3.0, a higher focus on [Cacheable]'s was introduced. +[Cacheable]'s get an entity from cache, rather than making an API call to retrieve it's data. +The entity can be retrieved from cache by calling `GetOrDownloadAsync()` on the [Cacheable] type. + +> [!NOTE] +> GetOrDownloadAsync will download the entity if its not available directly from the cache. + +[Cacheable]: xref:Discord.Cacheable + ## X, Y, Z does not work! It doesn't return a valid value anymore. If you are currently using an older version of the stable branch, -please upgrade to the latest pre-release version to ensure maximum +please upgrade to the latest release version to ensure maximum compatibility. Several features may be broken in older versions and will likely not be fixed in the version branch due to their breaking nature. -Visit the repo's [release tag] to see the latest public pre-release. +Visit the repo's [release tag] to see the latest public release. [release tag]: https://github.com/discord-net/Discord.Net/releases diff --git a/docs/faq/commands/general.md b/docs/faq/text_commands/general.md similarity index 89% rename from docs/faq/commands/general.md rename to docs/faq/text_commands/general.md index cff078746..202ceb299 100644 --- a/docs/faq/commands/general.md +++ b/docs/faq/text_commands/general.md @@ -1,6 +1,6 @@ --- -uid: FAQ.Commands.General -title: General Questions about chat Commands +uid: FAQ.TextCommands.General +title: General Questions about Text Commands --- # Chat Command-related Questions @@ -10,21 +10,16 @@ answered regarding general command usage when using @Discord.Commands. ## How can I restrict some of my commands so only specific users can execute them? -Based on how you want to implement the restrictions, you can use the -built-in [RequireUserPermission] precondition, which allows you to +You can use the built-in `RequireUserPermission` precondition, which allows you to restrict the command based on the user's current permissions in the guild or channel (*e.g., `GuildPermission.Administrator`, `ChannelPermission.ManageMessages`*). -If, however, you wish to restrict the commands based on the user's -role, you can either create your custom precondition or use -Joe4evr's [Preconditions Addons] that provides a few custom -preconditions that aren't provided in the stock library. -Its source can also be used as an example for creating your -custom preconditions. +> [!NOTE] +> There are many more preconditions to use, including being able to make some yourself. +> Precondition documentation is covered [here](xref:Guides.TextCommands.Preconditions) [RequireUserPermission]: xref:Discord.Commands.RequireUserPermissionAttribute -[Preconditions Addons]: https://github.com/Joe4evr/Discord.Addons/tree/master/src/Discord.Addons.Preconditions ## Why am I getting an error about `Assembly.GetEntryAssembly`? diff --git a/docs/faq/commands/samples/Remainder.cs b/docs/faq/text_commands/samples/Remainder.cs similarity index 100% rename from docs/faq/commands/samples/Remainder.cs rename to docs/faq/text_commands/samples/Remainder.cs diff --git a/docs/faq/commands/samples/runmode-cmdattrib.cs b/docs/faq/text_commands/samples/runmode-cmdattrib.cs similarity index 100% rename from docs/faq/commands/samples/runmode-cmdattrib.cs rename to docs/faq/text_commands/samples/runmode-cmdattrib.cs diff --git a/docs/faq/commands/samples/runmode-cmdconfig.cs b/docs/faq/text_commands/samples/runmode-cmdconfig.cs similarity index 100% rename from docs/faq/commands/samples/runmode-cmdconfig.cs rename to docs/faq/text_commands/samples/runmode-cmdconfig.cs diff --git a/docs/faq/toc.yml b/docs/faq/toc.yml index 2f04dc98c..97e327aba 100644 --- a/docs/faq/toc.yml +++ b/docs/faq/toc.yml @@ -6,15 +6,19 @@ topicUid: FAQ.Basics.BasicOp - name: Client Basics topicUid: FAQ.Basics.ClientBasics - - name: Interactions - topicUid: FAQ.Basics.InteractionBasics -- name: Commands - items: - - name: String commands - topicUid: FAQ.Commands.General - - name: Interaction commands - topicUid: FAQ.Commands.Interactions - name: Dependency Injection - topicUid: FAQ.Commands.DI + topicUid: FAQ.Basics.DI +- name: Interactions + items: + - name: Starting out + topicUid: FAQ.Interactions.General + - name: Interaction Service/Framework + topicUid: FAQ.Interactions.Framework + - name: Manual handling + topicUid: FAQ.Interactions.Manual +- name: Text Commands + items: + - name: Text Command basics + topicUid: FAQ.TextCommands.General - name: Legacy or Upgrade topicUid: FAQ.Legacy