izolabella.Discord
7.0.0
See the version list below for details.
dotnet add package izolabella.Discord --version 7.0.0
NuGet\Install-Package izolabella.Discord -Version 7.0.0
<PackageReference Include="izolabella.Discord" Version="7.0.0" />
paket add izolabella.Discord --version 7.0.0
#r "nuget: izolabella.Discord, 7.0.0"
// Install izolabella.Discord as a Cake Addin
#addin nuget:?package=izolabella.Discord&version=7.0.0
// Install izolabella.Discord as a Cake Tool
#tool nuget:?package=izolabella.Discord&version=7.0.0
💞 izolabella.Discord
This project is an alternative to the command handler provided by Discord.NET for providing more detail to commands in a lightweight manner.
🌸 Quality Status
👩💻 Getting Started
This project is available through NuGet.org;
- Package Manager (Visual Studio)
Install-Package izolabella.Discord
- .NET CLI
dotnet add package izolabella.Discord
This project uses Discord.NET to function!*
⌨️ Code
A new instance of the IzolabellaDiscordClient
class must be initialized. The class takes a DiscordSocketConfig
argument for the client, and a bool
for whether or not the commands should be updated per guild or globally.
IzolabellaDiscordClient Client = new(new DiscordSocketConfig(), false);
The current version of this library uses classes for commands. To create a command, create a class that inherits the abstract class IzolabellaCommand
. These classes must have parameterless constructors.
public class MyCommand : IzolabellaCommand
{
public override string Name => "Command";
public override string Description => "My command's description.'";
public override bool GuildsOnly => true;
public override List<IIzolabellaCommandConstraint> Constraints { get; } = new()
{
new WhitelistPermissionsConstraint(false, GuildPermission.Administrator)
};
public override List<IzolabellaCommandParameter> Parameters { get; } = new()
{
new IzolabellaCommandParameter("Param", "This is my parameter!", ApplicationCommandOptionType.Channel, true)
};
public override Task RunAsync(CommandContext Context, IzolabellaCommandArgument[] Arguments)
{
// command runs here!
}
public override Task OnLoadAsync(IIzolabellaCommand[] AllCommands)
{
// runs when all commands have been initialized - fired once.
}
public override Task OnConstrainmentAsync(CommandContext Context, IzolabellaCommandArgument[] Arguments, IIzolabellaCommandConstraint ConstraintThatFailed)
{
// when one of the constrainments don't pass the validity check by the handler, this method gets called.
}
public override Task OnErrorAsync(HttpException Error)
{
// when an error happens, this method will run.
}
}
To create sub-commands, a class that inherits from IzolabellaSubCommand
must be created, initialized, and placed in a list of a normal IzolabellaCommand
. For example:
public class ExampleSub : IzolabellaSubCommand
{
public override string Name => "Example Name";
public override string Description => "Example!";
public override bool GuildsOnly => true;
public override List<IzolabellaCommandParameter> Parameters => new()
{
new("Channel", "Pick a channel!", ApplicationCommandOptionType.Channel, new() { ChannelType.Text }, false)
};
public override List<IIzolabellaCommandConstraint> Constraints => new();
public override async Task RunAsync(CommandContext Context, IzolabellaCommandArgument[] Arguments)
{
await Context.UserContext.RespondAsync(text: "abc!!");
}
}
Then, in an IzolabellaCommand
, you can place it in the SubCommands
property. As a shorter example (borrowing from the previous IzolabellaCommand
example):
public class MyCommand : IzolabellaCommand
{
public override List<IzolabellaSubCommand> SubCommands => new() { new ExampleSub() };
}
To get things going, call the following method on the IzolabellaDiscordClient
instance you have created:
await Client.StartAsync();
Further, the client itself offers numerous events to hook on to. Browse intellisense context menus to see all the options.
Arguments will be in kebab case when passed back to the RunAsync methods!!! When comparing arguments by name, please keep this in mind. For example, if I have a parameter named "Channel Id", I should check in the arguments for an argument named "channel-id".
I want to make this as useable as possible for you. I have no in-depth documentation since things are currently changing rapidly. For questions and how-tos, please send me a request on Discord at izolabella.bin#0216
.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. 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. |
-
net6.0
- Discord.Net (>= 3.7.2)
- Discord.Net.Core (>= 3.7.2)
- Discord.Net.Rest (>= 3.7.2)
- Discord.Net.Webhook (>= 3.7.2)
- Discord.Net.WebSocket (>= 3.7.2)
- izolabella.PrettyConsole (>= 1.1.0)
- izolabella.Util (>= 1.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.
Version | Downloads | Last updated | |
---|---|---|---|
7.0.2 | 480 | 7/8/2022 | |
7.0.1 | 399 | 7/8/2022 | |
7.0.0 | 397 | 7/8/2022 | |
6.3.0 | 403 | 7/4/2022 | |
6.2.0 | 398 | 7/4/2022 | |
6.1.7 | 408 | 7/4/2022 | |
6.1.6 | 396 | 6/3/2022 | |
6.1.5 | 376 | 6/3/2022 | |
6.1.4 | 386 | 6/3/2022 | |
6.1.3 | 380 | 6/3/2022 | |
6.1.2 | 379 | 6/3/2022 | |
6.1.1 | 379 | 6/2/2022 | |
6.1.0 | 392 | 5/27/2022 | |
6.0.0 | 378 | 5/27/2022 | |
5.1.0 | 410 | 5/23/2022 | |
5.1.0-beta | 146 | 5/22/2022 | |
5.0.0-beta | 144 | 5/22/2022 | |
4.1.1 | 392 | 5/22/2022 | |
4.1.0 | 398 | 5/22/2022 | |
4.0.0 | 429 | 3/28/2022 | |
3.0.1 | 413 | 3/21/2022 | |
3.0.0 | 398 | 3/21/2022 | |
2.3.4 | 407 | 3/21/2022 | |
2.3.3 | 409 | 3/21/2022 | |
2.3.2 | 405 | 3/20/2022 | |
2.3.1 | 401 | 3/18/2022 | |
2.3.0 | 397 | 3/18/2022 | |
2.2.1 | 412 | 3/17/2022 | |
2.2.0 | 413 | 3/16/2022 | |
2.1.0 | 419 | 3/11/2022 | |
2.0.4 | 405 | 3/11/2022 | |
2.0.3 | 402 | 3/11/2022 | |
2.0.2 | 397 | 3/11/2022 | |
2.0.1 | 407 | 3/11/2022 | |
2.0.0 | 410 | 3/11/2022 | |
1.0.5 | 459 | 3/9/2022 | |
1.0.4 | 449 | 3/9/2022 | |
1.0.3 | 442 | 3/9/2022 | |
1.0.2 | 439 | 3/7/2022 | |
1.0.1 | 445 | 3/7/2022 | |
1.0.0 | 447 | 3/7/2022 |
Added subcommand support, and renamed some elements.