Converter

Base class for an argument converter.

Argument converters are in charge of taking either one or several string arguments, and converting them into some other type. They're a convenience for people working with the commands framework.

You probably don't want to subclass this directly. There are three direct subclasses you can look at if you'd like to implement your own converters.

Parameters

required

Whether this converter must succeed for a command invocation to be valid.

InputType

TypeVar representing the specific result type this converter represents

OutputType

TypeVar representing the final type of the parsed argument which is given to the bot developer

NamedInputType

TypeVar representing how this converter receives named arguments - either String or List<String>

ResultType

TypeVar representing how this converter signals whether it succeeded - either Boolean or Int

Inheritors

Constructors

Link copied to clipboard
constructor(required: Boolean = true)

Properties

Link copied to clipboard
open lateinit var argumentObj: Argument<*>

Argument object containing this converter and its metadata.

Link copied to clipboard
open val bot: ExtensibleBot

Current instance of the bot.

Link copied to clipboard
open val errorType: Key? = null

If the signatureType isn't sufficient, you can optionally provide a translation key pointing to a longer type string to use for error messages.

Link copied to clipboard
val kord: Kord

Kord instance, backing the ExtensibleBot.

Link copied to clipboard
abstract var parsed: OutputType

The parsed value.

Link copied to clipboard

This will be set to true by the argument parser if the conversion succeeded.

Link copied to clipboard
open val required: Boolean = true
Link copied to clipboard
open val showTypeInSignature: Boolean = true

For commands with generated signatures, set whether the type string should be shown in the signature.

Link copied to clipboard
abstract val signatureType: Key

Translation key pointing to a short string describing the type of data this converter handles. Should be very short.

Link copied to clipboard

Validation lambda, which may throw a DiscordRelayedException if required.

Functions

Link copied to clipboard
open suspend fun getErrorKey(): Key

Return a Key representing a pre-translated error string.

Link copied to clipboard
open suspend fun getErrorString(context: CommandContext): String

Return a translated, formatted error string.

Link copied to clipboard
open override fun getKoin(): Koin

Get the associated Koin instance.

Link copied to clipboard
operator fun getValue(thisRef: Arguments, property: KProperty<*>): OutputType

For delegation, retrieve the parsed value if it's been set, or null if it hasn't.

Link copied to clipboard
open suspend fun handleError(t: Throwable, context: CommandContext): Key

Given a Throwable encountered during the parse function, return a human-readable string to display on Discord.

Link copied to clipboard
open suspend fun mutate(context: CommandContext): OutputType

Call the mutator lambda, if one was provided.

Link copied to clipboard
abstract suspend fun parse(parser: StringParser?, context: CommandContext, named: NamedInputType? = null): ResultType

Process the string in the given parser, converting it into a new value.

Link copied to clipboard
open suspend fun validate(context: CommandContext)

Call the validator lambda, if one was provided.