Introduction to bolt-js
bolt-js is a robust JavaScript framework that empowers developers to build applications for Slack with ease. It abstracts many of the complexities involved in working with Slack APIs, enabling quick and efficient app development.
Key APIs and Examples
1. Initializing the Bolt App
Initialize your Bolt application with your Slack app’s credentials:
const { App } = require('@slack/bolt');
const app = new App({
token: process.env.SLACK_BOT_TOKEN,
signingSecret: process.env.SLACK_SIGNING_SECRET
});
(async () => {
await app.start(process.env.PORT || 3000);
console.log('⚡️ Bolt app is running!');
})();
2. Listening for Message Events
Respond to messages sent in Slack channels:
app.message('hello', async ({ message, say }) => {
await say(`Hello, <@${message.user}>!`);
});
3. Event Listeners for App Home Opened
Respond when the App Home is opened:
app.event('app_home_opened', async ({ event, context }) => {
// Update the App Home view
const result = await app.client.views.publish({
user_id: event.user,
view: {
type: 'home',
blocks: [
{
type: 'section',
text: {
type: 'mrkdwn',
text: 'Welcome to your _App\'s Home_!'
}
}
]
}
});
});
4. Modal Views
Create and handle modal views:
app.command('/open-modal', async ({ command, ack, client }) => {
await ack();
const result = await client.views.open({
trigger_id: command.trigger_id,
view: {
type: 'modal',
callback_id: 'modal-identifier',
title: {
type: 'plain_text',
text: 'My Modal'
},
blocks: [
{
type: 'section',
block_id: 'section-identifier',
text: {
type: 'mrkdwn',
text: 'This is a section block with a button.'
},
accessory: {
type: 'button',
text: {
type: 'plain_text',
text: 'Click Me'
},
action_id: 'button_click'
}
}
]
}
});
});
app.action('button_click', async ({ body, ack, say }) => {
await ack();
await say('Button was clicked!');
});
Example Application
Here is a sample application showcasing the discussed APIs:
const { App } = require('@slack/bolt');
const app = new App({
token: process.env.SLACK_BOT_TOKEN,
signingSecret: process.env.SLACK_SIGNING_SECRET
});
app.message('hello', async ({ message, say }) => {
await say(`Hello, <@${message.user}>!`);
});
app.event('app_home_opened', async ({ event, context }) => {
const result = await app.client.views.publish({
user_id: event.user,
view: {
type: 'home',
blocks: [
{
type: 'section',
text: {
type: 'mrkdwn',
text: 'Welcome to your *App\'s Home*!'
}
}
]
}
});
});
app.command('/open-modal', async ({ command, ack, client }) => {
await ack();
const result = await client.views.open({
trigger_id: command.trigger_id,
view: {
type: 'modal',
callback_id: 'modal-identifier',
title: {
type: 'plain_text',
text: 'My Modal'
},
blocks: [
{
type: 'section',
block_id: 'section-identifier',
text: {
type: 'mrkdwn',
text: 'This is a section block with a button.'
},
accessory: {
type: 'button',
text: {
type: 'plain_text',
text: 'Click Me'
},
action_id: 'button_click'
}
}
]
}
});
});
app.action('button_click', async ({ body, ack, say }) => {
await ack();
await say('Button was clicked!');
});
(async () => {
await app.start(process.env.PORT || 3000);
console.log('⚡️ Bolt app is running!');
})();
By leveraging these APIs, you can swiftly create powerful and interactive Slack applications using bolt-js.
Hash: 39198b02fdebdc1dea64ac056768a8f6c6001a4bd6a6d79eaf16a02380420fa5