0.1.2 • Published 7 years ago

emilia-bot v0.1.2

Weekly downloads
1
License
MIT
Repository
github
Last release
7 years ago

emilia-bot

Emilia-bot facilitate meeting on slack.

demo

Installation

npm install emilia-bot

Usage

  1. Get Client ID and Client Secret from slack api and setting.
  2. Install emilia-bot.
  3. Setup emilia-bot and serve.
  4. Authenticate slack api.
  5. Invite the bot to your team.

Minimum use:

'use strict'

const Emilia = require('emilia-bot')

let modules = [
  {
    agenda: 'hello',
    execute: function (success, failed) {
      success({
        text: 'hello world.'
      })
    }
  }
]

new Emilia(modules).start().catch((err) => {
  console.error(err)
})

See example...

Control

With default settings.

MessagesDescription
@emilia takeTake attendance.
@emilia startStart meeting.
@emilia nextExecute next module.
@emilia prevExecute prev module.
@emilia goto 1Execute specified module.
@emilia endEnd meeting.

Module

Emilia-bot manages an agenda in a unit of module.

Module example:

{
  agenda: 'hello',
  execute: function (success, failed) {
    success({
      text: 'hello world.'
    })
  }
}

Execute function is converted to promise, where the parameters success and failed are compatible with resolve and reject. The parameter for success function is an contents object of attachment, and failed function parameter is a string.

Options

VariablesTypeDescriptionRequiredDefault
slackApiClientIdstringprocess.env.EMILIA_SLACK_API_CLIENT_ID
slackApiClientSecretstringprocess.env.EMILIA_SLACK_API_CLIENT_ID
portintAuthentication server port for the slack api.process.env.EMILIA_PORT
storageobjectStorage setting for botkit.{ json_file_store: './simple_storage/' }
reactionRateToNextAgendaint0.0 ~ 1.0. Reaction rate of atendees to execute next agenda.0.8

Hears

The settings for the message emilia-bot responds. See botkit Hears Event for more details.

VariablesTypeDescriptionRequiredDefault
takeAttendancestring or array['take']
startMeetingstring or array['start']
nextAgendastring or array['next']
prevAgendastring or array['prev']
gotoAgendastring or array['goto ([0-9]+)']
endMeetingstring or array['end']

Messages

The settings for the message posted by emilia-bot.

VariablesTypeDescriptionRequiredDefault
takeAttendanceMsgstring@here Take attendance.
takeAttendanceAttendBtnTextstringattend
takeAttendanceAbsentBtnTextstringabsent
startMtgMsgstring@here Start meeting
startMtgAgendasTitlestringagendas
startMtgAttendeesTitlestringattendees
endMtgMsgstring@here End meeting.

Setting example

'use strict'

const Emilia = require('emilia-bot')

let modules = [
  {
    agenda: 'hello',
    execute: function (success, failed) {
      success({
        text: 'hello world.'
      })
    }
  }
]


let options = {
  reactionRateToNextAgenda: 0.5,
  hears: {
    takeAttendance: ['take'],
    startMeeting: ['start'],
    nextAgenda: ['next'],
    prevAgenda: ['prev'],
    gotoAgenda: ['goto ([0-9]+)'],
    endMeeting: ['end']
  },
  messages: {
    takeAttendanceMsg: '@here Take attendance.',
    takeAttendanceAttendBtnText: 'attend',
    takeAttendanceAbsentBtnText: 'absent',
    startMtgMsg: '@here Start meeting',
    startMtgAgendasTitle: 'agendas',
    startMtgAttendeesTitle: 'attendees',
    endMtgMsg: '@here End meeting.'
  }
}

new Emilia(modules, options).start().catch((err) => {
  console.error(err)
})

Contributing

Feel free to create. If the PR is an big changes let's discuss about it on github issue first.

ToDo

  • Test! Test! Test!!!
  • Write docs and comments on code.
  • Implement meeting start by cron.

Reference

License

Unless otherwise noted, the source files are distributed under the MIT License found in the LICENSE file.