Table of Contents

If you have too many global commands then you might want to consider using the bulk overwrite function.

public async Task Client_Ready()
{
    List<ApplicationCommandProperties> applicationCommandProperties = new();
    try
    {
        // Simple help slash command.
        SlashCommandBuilder globalCommandHelp = new SlashCommandBuilder();
        globalCommandHelp.WithName("help");
        globalCommandHelp.WithDescription("Shows information about the bot.");
        applicationCommandProperties.Add(globalCommandHelp.Build());

        // Slash command with name as its parameter.
        SlashCommandOptionBuilder slashCommandOptionBuilder = new();
        slashCommandOptionBuilder.WithName("name");
        slashCommandOptionBuilder.WithType(ApplicationCommandOptionType.String);
        slashCommandOptionBuilder.WithDescription("Add a family");
        slashCommandOptionBuilder.WithRequired(true); // Only add this if you want it to be required

        SlashCommandBuilder globalCommandAddFamily = new SlashCommandBuilder();
        globalCommandAddFamily.WithName("add-family");
        globalCommandAddFamily.WithDescription("Add a family");
        globalCommandAddFamily.AddOptions(slashCommandOptionBuilder);
        applicationCommandProperties.Add(globalCommandAddFamily.Build());

        await _client.BulkOverwriteGlobalApplicationCommandsAsync(applicationCommandProperties.ToArray());
    }
    catch (ApplicationCommandException exception)
    {
        var json = JsonConvert.SerializeObject(exception.Error, Formatting.Indented);
        Console.WriteLine(json);
    }
}