using System.Collections; using System.Collections.Generic; using System.Threading.Tasks; using DiscordBotCore.Others; using DiscordBotCore.Others.Actions; namespace DiscordBotCore.Interfaces; public interface ICommandAction { /// /// The name of the action. It is also used to call the action /// public string ActionName { get; } /// /// The description of the action /// public string? Description { get; } /// /// An example or a format of how to use the action /// public string? Usage { get; } /// /// Some parameter descriptions. The key is the parameter name and the value is the description. Supports nesting. Only for the Help command /// public IEnumerable ListOfOptions { get; } /// /// The type of the action. It can be a startup action, a normal action (invoked) or both /// public InternalActionRunType RunType { get; } /// /// Specifies if the action requires another thread to run. This is useful for actions that are blocking the main thread. /// public bool RequireOtherThread { get; } /// /// The method that is invoked when the action is called. /// /// The parameters. Its best practice to reflect the parameters described in public Task Execute(string[]? args); }