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);
}