1.0.3 • Published 8 months ago

botbye-node-express v1.0.3

Weekly downloads
-
License
-
Repository
-
Last release
8 months ago

Express

Install

npm i botbye-node-express

or

yarn add botbye-node-express

Usage

1. Import botbye module:

const botbye = require('botbye-node-express')

2. Call init with SERVER_KEY:

const validateRequest = botbye.init({
    serverKey: 'MY_SERVER_KEY'
});

3. Use validateRequest on handlers where you need bot protection

app.get('/', async (req, res) => {
    const botbyeToken = req.headers['botbye-challenge']   // get token from header or any place you store it

    /**
     * Additional custom fields for linking request
     **/
    const customFields = {
        someKey: "some-value"
    }

    const options = {
        token: botbyeToken,
        request: req,
        customFileds,
    }

    /**
     * @param {Object} options - Options for request validation
     * @return {Promise} - botByeResponse promise
     */
    const botByeResponse = await botbye.validateRequest(options);

    const isBot = botByeResponse.result?.isBot;

    if (isBot) {
    ...
    }
...
})

Examples of botByeResponse:

Bot detected:

{
  "reqId": "f77b2abd-c5d7-44f0-be4f-174b04876583",
  "result": {
    "isAllowed": false
  },
  "error": null
}

Bot not detected:

{
  "reqId": "f77b2abd-c5d7-44f0-be4f-174b04876583",
  "result": {
    "isAllowed": true
  },
  "error": null
}

Ban by rule:

{
  "reqId": "f77b2abd-c5d7-44f0-be4f-174b04876583",
  "result": {
    "isAllowed": false
  },
  "error": {
    "message": "Banned by rule: ban by country"
  }
}

Invalid serverKey:

{
  "reqId": "f77b2abd-c5d7-44f0-be4f-174b04876583",
  "result": null,
  "error": {
    "message": "[BotBye] Bad Request: Invalid Server Key"
  }
}

4. Full code example

const express = require('express')
const botbye = require('botbye-node-express')

const app = express();

botbye.init({
    serverKey: 'MY_SERVER_KEY'
});

app.get('/', async (req, res) => {
    const botbyeToken = req.headers['BotBye-Token']  // get token from header or any place you store it

    const options = {
        token: botbyeToken,
        request: req,
    }

    const botByeResponse = await botbye.validateRequest(options);

    const isAllowed = botByeResponse.result?.isAllowed ?? true;

    res.status(isAllowed ? 200 : 403);
    res.send();
})

const PORT = 3000;

app.listen(PORT, () => {
...
})
1.0.3

8 months ago

1.0.2

1 year ago

1.0.0

2 years ago