Lookup
in package
implements
Module
uses
InteractionTrait
Cards named in chat.
Find cards — right-click a message → Apps → Find cards — looks up every
[[Card Name]] in it (or [[Card Name|SET]] for one printing), or, with
none, the whole message as one name. It answers only the person who asked,
and needs nothing special: the message comes with the interaction.
Inline lookups — the bot answering [[Card Name]] in any message it can
read — are opt-in, because reading messages needs the privileged Message
Content intent: turn it on in the Developer Portal, then construct this
module with inline: true (bot.php does that for MTG_INLINE_LOOKUPS=1).
Tags
Table of Contents
Interfaces
- Module
- A self-contained bot feature, as in Tutelar: it declares its own application commands ({@see commands()}, which the client registers or updates), listens for them, and routes clicks on the components of the messages it sends, from {@see boot()}.
Constants
- INLINE_LIMIT : int = 3
- Cards answered inline from one message, at most.
- LIMIT : int = 5
- Cards looked up from one message, at most.
Properties
- $inline : bool
Methods
- __construct() : mixed
- boot() : void
- Registers commands and listeners. Called once, after the gateway and the application are ready.
- commands() : array<string|int, CommandBuilder>
- The application commands the module answers, as they should be registered. The client creates missing ones and updates changed ones.
- name() : string
- Stable short name, for logs.
- answer() : PromiseInterface
- Answers a component click with a new message, or by replacing the clicked message, logging what fails.
- choices() : array<string|int, array{name: string, value: string}>
- Autocomplete choices from `value => label` (or a list of values).
- command() : CommandBuilder
- A chat command usable in servers, the bot's DMs and group DMs, from a server install or a user install.
- failure() : MessageBuilder
- The message for a failure.
- hidden() : Option
- The `hidden` option every command takes: reply only to the caller.
- option() : Option
- A command option.
- reply() : PromiseInterface
- Defers the reply, then answers with what `$work` resolves to. A failure answers too: a bad search is the caller's to fix, anything else is logged.
- subcommand() : Option
- A sub-command with its options.
- typed() : array<string, mixed>
- The values typed so far into the command being autocompleted, from inside its sub-command.
- values() : array<string, mixed>
- Option values by name.
- find() : PromiseInterface
- **Find cards**.
- inline() : void
- Answers the `[[Card Name]]` mentions in a message.
- lookup() : PromiseInterface<string|int, MessageBuilder>
- The answer for some mentioned cards: the card itself for one, a list to pick from for several.
Constants
INLINE_LIMIT
Cards answered inline from one message, at most.
public
int
INLINE_LIMIT
= 3
LIMIT
Cards looked up from one message, at most.
public
int
LIMIT
= 5
Properties
$inline read-only
private
bool
$inline
= false
Methods
__construct()
public
__construct([bool $inline = false ]) : mixed
Parameters
- $inline : bool = false
-
Whether to answer
[[Card Name]]in messages (needs the Message Content intent).
boot()
Registers commands and listeners. Called once, after the gateway and the application are ready.
public
boot(MTG $mtg) : void
Parameters
- $mtg : MTG
Tags
commands()
The application commands the module answers, as they should be registered. The client creates missing ones and updates changed ones.
public
commands(MTG $mtg) : array<string|int, CommandBuilder>
Parameters
- $mtg : MTG
Tags
Return values
array<string|int, CommandBuilder>name()
Stable short name, for logs.
public
name() : string
Tags
Return values
stringanswer()
Answers a component click with a new message, or by replacing the clicked message, logging what fails.
protected
static answer(MTG $mtg, Interaction $interaction, callable $work[, bool $update = false ]) : PromiseInterface
Parameters
- $mtg : MTG
- $interaction : Interaction
- $work : callable
-
Returns a MessageBuilder or a promise of one.
- $update : bool = false
-
Replace the clicked message instead of answering with a new, hidden one.
Return values
PromiseInterfacechoices()
Autocomplete choices from `value => label` (or a list of values).
protected
static choices(array<string|int, mixed> $choices) : array<string|int, array{name: string, value: string}>
Parameters
- $choices : array<string|int, mixed>
Return values
array<string|int, array{name: string, value: string}>command()
A chat command usable in servers, the bot's DMs and group DMs, from a server install or a user install.
protected
static command(string $name, string $description) : CommandBuilder
Parameters
- $name : string
- $description : string
Return values
CommandBuilderfailure()
The message for a failure.
protected
static failure(MTG $mtg, Throwable $e) : MessageBuilder
Parameters
- $mtg : MTG
- $e : Throwable
Return values
MessageBuilderhidden()
The `hidden` option every command takes: reply only to the caller.
protected
static hidden(MTG $mtg) : Option
Parameters
- $mtg : MTG
Return values
Optionoption()
A command option.
protected
static option(MTG $mtg, int $type, string $name, string $description[, bool $required = false ][, bool $autocomplete = false ]) : Option
Parameters
- $mtg : MTG
- $type : int
-
An Option type constant.
- $name : string
- $description : string
- $required : bool = false
- $autocomplete : bool = false
Return values
Optionreply()
Defers the reply, then answers with what `$work` resolves to. A failure answers too: a bad search is the caller's to fix, anything else is logged.
protected
static reply(MTG $mtg, Interaction $interaction, bool $hidden, callable $work) : PromiseInterface
Parameters
- $mtg : MTG
- $interaction : Interaction
- $hidden : bool
-
Whether only the caller sees the answer.
- $work : callable
-
Returns a MessageBuilder or a promise of one.
Return values
PromiseInterfacesubcommand()
A sub-command with its options.
protected
static subcommand(MTG $mtg, string $name, string $description, Option ...$options) : Option
Parameters
- $mtg : MTG
- $name : string
- $description : string
- $options : Option
Return values
Optiontyped()
The values typed so far into the command being autocompleted, from inside its sub-command.
protected
static typed(Interaction $interaction) : array<string, mixed>
Parameters
- $interaction : Interaction
Return values
array<string, mixed>values()
Option values by name.
protected
static values(iterable<string|int, mixed> $options) : array<string, mixed>
Parameters
- $options : iterable<string|int, mixed>
-
The options a command handler is given.
Return values
array<string, mixed>find()
**Find cards**.
private
find(MTG $mtg, Interaction $interaction) : PromiseInterface
Parameters
- $mtg : MTG
- $interaction : Interaction
Return values
PromiseInterfaceinline()
Answers the `[[Card Name]]` mentions in a message.
private
inline(MTG $mtg, Message $message) : void
Parameters
- $mtg : MTG
- $message : Message
lookup()
The answer for some mentioned cards: the card itself for one, a list to pick from for several.
private
static lookup(MTG $mtg, array<string|int, array{name: string, set: ?string}> $mentions) : PromiseInterface<string|int, MessageBuilder>
Parameters
- $mtg : MTG
- $mentions : array<string|int, array{name: string, set: ?string}>