XeroxDev.DSharpPlus.ModalCommands
2.0.0
dotnet add package XeroxDev.DSharpPlus.ModalCommands --version 2.0.0
NuGet\Install-Package XeroxDev.DSharpPlus.ModalCommands -Version 2.0.0
<PackageReference Include="XeroxDev.DSharpPlus.ModalCommands" Version="2.0.0" />
paket add XeroxDev.DSharpPlus.ModalCommands --version 2.0.0
#r "nuget: XeroxDev.DSharpPlus.ModalCommands, 2.0.0"
// Install XeroxDev.DSharpPlus.ModalCommands as a Cake Addin #addin nuget:?package=XeroxDev.DSharpPlus.ModalCommands&version=2.0.0 // Install XeroxDev.DSharpPlus.ModalCommands as a Cake Tool #tool nuget:?package=XeroxDev.DSharpPlus.ModalCommands&version=2.0.0
Table of content
1. Badges
2. What is this package
This is an extension for DSharpPlus to use modals like commands from CommandsNext.
3. Example
3.1 Registration
var modalCommands = _client.UseModalCommands(new ModalCommandsConfiguration()
{
Services = _sp
});
modalCommands.RegisterModals(Assembly.GetExecutingAssembly());
3.2 Creating a modal
var modal = ModalBuilder.Create("food")
.WithTitle("Super cool modal!")
.AddComponents(new TextInputComponent("Favorite food", "fav-food", "Pizza, Icecream, etc", max_length: 30))
.AddComponents(new TextInputComponent("Why?", "why-fav", "Because it tastes good", required: false, style: TextInputStyle.Paragraph));
You can also create a modal in the normal way, but remember to add the Prefix
set in ModalCommandsConfiguration
(
Default >
) with WithCustomId
.
3.3 Listen for modal submit
public class FoodModal : ModalCommandModule
{
[ModalCommand("food")]
public async Task GetFavFoodAsync(ModalContext ctx, string food, string reason)
{
await ctx.Interaction.CreateResponseAsync(InteractionResponseType.ChannelMessageWithSource,
new DiscordInteractionResponseBuilder().WithContent($"Your favorite food is: {food}. Reason: {reason}").AsEphemeral());
}
}
4. Custom arguments converter
By default, only the following arguments are supported:
- string
- bool
- int
- uint
- long
- ulong
- float
- double
- DiscordUser
- DiscordMember
- DiscordRole
- DiscordChannel
If you want to add more arguments, you can create a new argument converter like so:
public class IntConverter : IModalArgumentConverter<int>
{
// This method will convert the string to an int.
public Task<Optional<int>> ConvertAsync(string value, ModalContext ctx)
{
return Task.FromResult(int.TryParse(value, out var res) ? Optional.FromValue(res) : Optional.FromNoValue<int>());
}
// This method will convert the int to a string.
public string ConvertToString(int value) => value.ToString();
}
After writing your argument converter, you can register it in your ModalCommandsExtension like so:
buttonCommands.RegisterConverter(new ShortConverter());
5. Credits
I stole nearly all of this from Kuylars DSharpPlus.ButtonCommands extension
And because of this: If something doesn't work, blame Kuylar. I'm a lazy person 😛
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net7.0
- DSharpPlus (>= 4.4.2)
- Microsoft.Extensions.DependencyInjection (>= 7.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.