All files / core/src/types command.ts

0% Statements 0/7
0% Branches 0/8
0% Functions 0/2
0% Lines 0/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41                                                                                 
import { FlarieInteraction } from './interaction';
 
export class FlarieCommand {
  public readonly name: string;
  public readonly allowDMs: boolean;
  public readonly description: string;
  public readonly disabled: boolean;
  #callback: FlarieCommand.Callback;
 
  constructor(rawOptions: string | FlarieCommand.Options, callback: FlarieCommand.Callback) {
    const options: FlarieCommand.Options =
      typeof rawOptions === 'string' ? { name: rawOptions } : rawOptions;
 
    this.name = options.name;
    this.allowDMs = options.allowDMs || true;
    this.description = options.description || '<insert-description-here>';
    this.disabled = options.disabled || false;
 
    this.#callback = callback;
  }
 
  public async invoke(interaction: FlarieInteraction): Promise<void> {
    return this.#callback(interaction);
  }
}
 
export namespace FlarieCommand {
  export type Callback = (interaction: FlarieInteraction) => Promise<void>;
 
  export type Options = {
    name: string;
    description?: string;
    allowDMs?: boolean;
 
    /**
     * This will make the command usable by only admins
     */
    disabled?: boolean;
  };
}