DNet Labs is mostly the same as DNet as it just adds additional features. Discord.NET-labs adds several features Discord.NET does not. Examples of this are: Threads, application commands, message components, stage channels, role icons & more small functionality changes. More details here.
DNet Labs implements new experimental/unstable features and generally shouldn't be used in production environments. You should only use it if you want to test out new Discord features. As DNet Labs builds on top of DNet, you can not use both at the same time, however DNet Labs should be a pretty straight forward drop-in replacement for DNet.
Double check you are on the most recent version of Discord .Net labs, if you are and it looks like an issue, report it on Discord or create an issue on GitHub
When someone adds it. If a new Discord feature is currently untouched, submit an issue on GitHub regarding the request.
The difference between these 3 functions is in how you handle the command response. RespondAsync and DeferAsync let the API know you have succesfully received the command. This is also called 'acknowledging' a command. DeferAsync will not send out a response, RespondAsync will not. FollowupAsync follows up on succesful acknowledgement.
Warning
If you have not acknowledged the command FollowupAsync will not work.
What's the difference between global commands and guild commands? (Why isn't my command show up in discord?)
Global commands can be used in every guild your bot is in. However, it can take up to an hour for every guild to have access to the commands. Guild commands can only be used in specific guilds. They are available within a few minutes. (This is great for testing purposes).
Guild commands require you give grant the bot the applications.commands OAuth2 scope in order to register guild commands in that guild. You can register global commands without this OAuth2 scope but will need it to use global commands in that guild.
I'm getting errors when trying to create a slash command (The application command failed to be created, 400 bad request, 50035: Invalid Form Body, etc)
This could be caused by several things but the most common one is an invalid "Name" for the command or any of the options/arguments for the command. Make sure your "Name" is all lowercase and only contains letters or dashes. It should also be less than 32 characters. If you are still having issues after checking this, read up on the other slash commands limits here.
Note
In most cases, you can catch an ApplicationCommandException error from creation. This exception will tell you what part of your command is invalid as well as why.
You can add a special build of victoria that supports labs by adding the below to your references:
<PropertyGroup>
<RestoreAdditionalProjectSources>https://www.myget.org/F/yucked/api/v3/index.json</RestoreAdditionalProjectSources>
</PropertyGroup>
This exception happens when an app tries to send an initial response to an interaction twice. This can be caused by:
- 2 instances of your app running at once.
- Responding 3+ seconds after the interaction was received. If you're positive that your app doesn't do this and you are still receiving the exception, please submit an issue.
Currently SocketUser/SocketGuildUser does not expose the BannerId nor AccentColor. To get this info, a RestUser must be requested.