seed-slackbot v3.2.4
slackbot
Installation
$ npm install seed-slackbotSlackbot API
constructor({Object|String} options)
Options should contain a token field that is string.
Options could contain a processSlackbot field, that is an optional boolean and false by default
Options could contain a processReplies field, that is an optional boolean and false by default
Options could contain a processSubtypes field, that is an optional boolean and false by default
Options could contain a processSelf field, that is an optional boolean and false by default
Options could contain a mock field, that is an optional boolean and false by default
var Slack = require('seed-slackbot');
var slack = new Slack({ token: 'ABC123', processReplies: true });
var slack = new Slack('ABC123'); // shorthandrequest({String} method, {Object} data, {Function} callback(error, result)):Slack
Used to call slack web api
slack.request('chat.postMessage', msg, function(err, result) {});channel({String} term):Object
Get channel by name or id
var channel = slack.channel('C1234');user({String} term):Object
Get user by name or id
var user = slack.user('U4567');im({String} term):Object
Get IM by id or user name or user id
var im = slack.im('C5678');self():Object
Get current user
var self = slack.self();send({String|Object} channelId, {String} message):Slack
Send message to channel
slack.send('1234', 'Hello world!');
slack.send({ type: 'message', channel: '1234', text: 'Hello world!' }); // alternativestream():DuplexStream
Get slackbot's internal duplex stream
var stream = slack.stream();
stream.pipe(through(function(message, enc, cb) {
if (message.type === 'presence_change' && message.user.id === slack.self().id) {
this.push(['test', 'I\'m back!']);
}
cb();
})).pipe(stream);Usage
var Slack = require('seed-slackbot');
var slack = new Slack({ token: process.env.SLACK_TOKEN });
slack.on('message', function(data) {
slack.send(channel, message);
slack.request('chat.postMessage', msg, function(err, result) {
});
});Testing
It's possible to mock slack transports to test slackbot and it's dependents
var slack = new Slack({ mock: true });
// simulate a message coming from slack
slack.mock(JSON.stringify({
channel: 'C123',
type: 'message',
text: 'Hello world',
user: 'U123'
}));
// examine messages going to slack
slack.on('mock:message', function(payload) {
console.log(JSON.parse(payload));
});
// examine requests going to slack and simulate slack response
slack.on('mock:request', function(data) {
// data.url
// data.method 'rtm.start'
// data.data {}
// data.callback
data.callback(null, { data: { users: [{}], channels: [{}], groups: [], ims: [{}], ...} });
});TODO
Buffer stream until slack is connected
License
MIT