1.0.1 • Published 7 years ago

message-suite-fisherman v1.0.1

Weekly downloads
5
License
ISC
Repository
github
Last release
7 years ago

Message Suite - Fisherman

Add some message features to fisherman. Copyrights (c), Simon Sassi 2017

What is the message suite

The message suite is a fisherman middleware that is using the prototype editing available by fisherman It edits the FisherResponse prototype to provide some cool features like:

  • Bot Typing: send a message with a delay to simulate real user typing, with response.send()
  • Embed compatibility: it checks if the bot can send embed, if it can't, it convert the embed to a formatted text

Setting up

npm install --save command-loader-fisherman

Include the middleware to the bot:

[...]
const MessageSuite = require("message-suite-fisherman")
var messageSuitePlugin = new MessageSuite({enableTyping: true, enableEmbedCompatibilityMode: true})
bot.use(messageSuitePlugin)
[...]

Api docs

new MessageSuite(opts)

Creates an instance of MessageSuite.

MessageSuite constructor options

Parameter nameDescriptionTypeDefault value
enableTypingEnable typing when it's a command and response.send() is usedBooleanfalse
defaultTypingCountDefault typing count when no typing count is specified in the command's localesInteger1
defaultTimeoutDefault timeout in MS to send the message after starting typing when no timeout is specified in the command's localesInteger1000
enableEmbedCompatibilityModeIf it should enable the Compatibilty mode, it will send formatted text instead of an embed if the bot hasn't the perm EMBED_LINKSBooleantrue
embedCompatibilityModeFormatThe function used to convert the embed to formatted textFunctiondefaultFormat

Setting the embedCompatibilityModeFormat options

This parameter is an option used to parse the embed.

The default value is a simple function who looks like this:

  defaultFormat (embed) {
    var formatted = ''
    if (embed.title) formatted = formatted + '__' + embed.title + '__\n'
    if (embed.description) formatted = formatted + '\n' + embed.description + '\n'
    if (embed.fields) for (var i in embed.fields)formatted = formatted + '=> **' + embed.fields[i].name + '**\n ' + embed.fields[i].value + '\n'
    return formatted
  }

The embed parameter is an Object. This function has to return a string value

Custom timeout and typing count in the command locales property

You can set as well the timeout and the typing count in the command's locales property:

Example with a timeout of 5s and a typing count of 1

register.textCommand('test', {locales: {typingCount:1, typingTimeout:5000}}, function (req, res) {
  console.log("Command trigerred")
  var embed = {
    title: "a test",
    description: "Just a simple test",
    fields: [{name: "Cat title", value: "Guoi daziou duoaoauj dqiupou"},{name: "Cat title", value: "Guoi daziou duoaoauj dqiupou"}]
  }
  res.send("ok", {embed: embed})
})