UNPKG

mangrove-botkit

Version:

Building blocks for Building Bots

129 lines (87 loc) 2.87 kB
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ______ ______ ______ __ __ __ ______ /\ == \ /\ __ \ /\__ _\ /\ \/ / /\ \ /\__ _\ \ \ __< \ \ \/\ \ \/_/\ \/ \ \ _"-. \ \ \ \/_/\ \/ \ \_____\ \ \_____\ \ \_\ \ \_\ \_\ \ \_\ \ \_\ \/_____/ \/_____/ \/_/ \/_/\/_/ \/_/ \/_/ This is a sample Slack bot built with Botkit. This bot demonstrates many of the core features of Botkit: * Connect to Slack using the real time API * Receive messages based on "spoken" patterns * Send a message with attachments * Send a message via direct message (instead of in a public channel) # RUN THE BOT: Get a Bot token from Slack: -> http://my.slack.com/services/new/bot Run your bot from the command line: token=<MY TOKEN> node demo_bot.js # USE THE BOT: Find your bot inside Slack to send it a direct message. Say: "Hello" The bot will reply "Hello!" Say: "Attach" The bot will send a message with a multi-field attachment. Send: "dm me" The bot will reply with a direct message. Make sure to invite your bot into other channels using /invite @<my bot>! # EXTEND THE BOT: Botkit has many features for building cool and useful bots! Read all about it here: -> http://howdy.ai/botkit ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ var Botkit = require('../../lib/Botkit.js'); if (!process.env.token) { console.log('Error: Specify token in environment'); process.exit(1); } var controller = Botkit.slackbot({ debug: false }); controller.spawn({ token: process.env.token }).startRTM(function(err) { if (err) { throw new Error(err); } }); controller.hears(['hello','hi'],['direct_message','direct_mention','mention'],function(bot,message) { bot.reply(message,"Hello."); }); controller.hears(['attach'],['direct_message','direct_mention'],function(bot,message) { var attachments = []; var attachment = { title: 'This is an attachment', color: '#FFCC99', fields: [], }; attachment.fields.push({ label: 'Field', value: 'A longish value', short: false, }); attachment.fields.push({ label: 'Field', value: 'Value', short: true, }); attachment.fields.push({ label: 'Field', value: 'Value', short: true, }); attachments.push(attachment); bot.reply(message,{ text: 'See below...', attachments: attachments, },function(err,resp) { console.log(err,resp); }); }); controller.hears(['dm me'],['direct_message','direct_mention'],function(bot,message) { bot.startConversation(message,function(err,convo) { convo.say('Heard ya'); }); bot.startPrivateConversation(message,function(err,dm) { dm.say('Private reply!'); }); });