@hershel/dispatcher
    TypeScript icon, indicating that this package has built-in type declarations

    3.0.1 • Public • Published

    @hershel/dispatcher

    Command dispatcher for Hershel

    @hershel/dispatcher on npm Travis CI Coveralls Prettier MIT License


    @hershel/dispatcher adds to your bot the ability to respond to specific commands.

    This package has been created in a minimalist, refined and modular spirit. Some functions you may want to have (like role checking to use commands etc...) can be very easily implemented thanks to the internal middlewares of the dispatcher. Let's keep things simple.

    Install

    npm i @hershel/dispatcher
    

    Features

    • Modular: We wanted to provide a powerful package while remaining refined. You can add features directly from the dispatcher using middlewares (see lifecycle).

    • Customizable: this module contains default behaviors (for example, not taking into account messages from other bot). All of these behaviours can be overridden by your own verification systems.

    • Simple: Integrates perfectly into Hershel in one line of code. You can also reuse this middleware for other project.

    Example

    Basic usage

    import * as hershel from 'hershel'
    import { Dispatcher } from '@hershel/dispatcher'
     
    const bot = new hershel.Client()
    const dispatcher = new Dispatcher({
      prefix: ['!', '?!?']
    })
     
    bot.use(dispatcher.commands())
     
    bot.login(process.env.TOKEN)

    It's important to know that @hershel/dispatcher does not implement any commands natively.

    Lifecycle

    -> [...]
    -> Dispatcher middleware with .commands()
      |-> check if the dispatcher should handle the message
          |-> skip if dispatcher should not handle message
      |-> extract prefix from the message
          |-> skip if prefix is not detected
      |-> extract command name and resolve it
          |-> skip if command is not detected
      |-> parse arguments for the command
      |-> execute custom middlewares (e.g. authorization...)
      |-> execute the command
    -> Others Hershel middlewares
    

    API

    The context.state is changed by this module and context.params is added.

    shouldHandle -> boolean

    Check if the message should be handled by the dispatcher

    extractPrefix -> void

    Injects in context state prefix key with the content of the prefix, its length and if a prefix has been detected.

    extractCommand -> void

    Injects in context state command key with the alias of the command, and the command object resolved.

    extractArgument -> void

    Injects in context state argument symbol with the name and options of the arguments.

    Related

    Thanks

    Hershel uses part of Fastify's theoretical logic, a fast and low overhead web framework for Node.js.

    License

    MIT

    Install

    npm i @hershel/dispatcher

    DownloadsWeekly Downloads

    14

    Version

    3.0.1

    License

    MIT

    Unpacked Size

    23 kB

    Total Files

    18

    Last publish

    Collaborators

    • helloedit