Rumah > hujung hadapan web > tutorial js > Buat bot Slack berasaskan Node.js

Buat bot Slack berasaskan Node.js

WBOY
Lepaskan: 2023-08-28 19:49:02
asal
1192 orang telah melayarinya

创建基于 Node.js 的 Slack 机器人

kendur adalah Cepat menjadi standard industri baharu untuk komunikasi pasukan. wujud Malah, ia sangat popular sehingga apabila saya menaip slack Apabila saya memasuki Google, seperti yang dijangkakan, hasil pertama ialah definisi perkataan ini. daripada kamus. Laman web Slack berada di tempat kedua!

Ini adalah Hampir tidak pernah terdengar untuk perkataan yang paling biasa dalam kamus bahasa Inggeris. Lazimnya, takrifan Google diikuti dengan pautan ke beberapa kamus teratas laman web.

Apa itu Slack?

di dalamnya Pada asasnya, Slack ialah sistem pemesejan. Ia membenarkan pemesejan terus kepada pasukan Keahlian dan cipta saluran (swasta atau awam) untuk memudahkan masa nyata Komunikasi dan kerjasama pasukan. belajar lagi Untuk maklumat tentang Slack, anda boleh melihat Slack's Ciri-ciri.

Pada masa ini Pada satu ketika, anda mungkin tertanya-tanya di mana Node.js masuk. Seperti yang saya nyatakan, pada tahap paling asasnya, Slack ialah sistem pemesejan; Walau bagaimanapun, ia boleh dikembangkan tanpa had dibuat khas. Slack menawarkan sistem yang sangat fleksibel untuk menyesuaikan anda Integrasi pasukan, termasuk:

  • Buat mesej alu-aluan tersuai Mesej
  • Buat emoji tersuai
  • Pasang pihak ketiga Permohonan
  • Buat sendiri Permohonan
  • Buat bot Slack tersuai

Dalam ini Dalam artikel ini, saya akan menunjukkan cara mencipta bot Slack menggunakan Node.js Boleh ditambah pada konfigurasi Slack pasukan anda.

Definisi Bot Slack

longgar Tugas Bot adalah menerima acara yang dihantar oleh Slack dan memprosesnya. Sebilangan besar acara akan dihantar kepada bot anda, di sinilah Node.js masuk. kita mesti memutuskan untuk tidak Hanya ambil berat tentang acara yang hendak dikendalikan dan cara mengendalikan setiap acara individu.

untuk Contohnya, beberapa peristiwa biasa yang akan dikendalikan oleh bot ialah:

  • ahli_joined_channelmember_joined_channel
  • member_left_channel
  • 消息

在这个 文章中,我将创建一个 Node.js 应用程序和一个可以添加的 Slack Bot 到您的团队项目以根据事件执行特定操作 收到。

首先,我需要在 Slack 上创建一个机器人。可以创建两种类型的机器人:

  • 自定义机器人
  • 创建应用并添加机器人用户

本文将创建一个自定义机器人,因为如果您计划在 Slack 上编写和发布应用程序,那么应用程序机器人用户会更合适。鉴于我希望这个机器人对我的团队来说是私有的,自定义机器人就足够了。

创建自定义 Slack 机器人

可以在此处创建自定义机器人:https://my.slack.com/apps/A0F7YS25R-bots。如果您已经登录 Slack 帐户,请选择左侧的添加配置按钮;否则,请先登录您的 Slack 帐户,然后再继续。如果您没有 Slack 帐户,可以免费注册。

这将带您进入一个新页面,要求您提供机器人的用户名。立即输入您的用户名,确保遵循 Slack 的命名指南。选择一个精彩的机器人名称后,请按添加机器人配置

成功创建机器人后,Slack 会将您重定向到允许进一步自定义机器人的页面。我会把这部分留给你创造性的自己。此页面唯一需要的是以 xoxb- 开头的 API 令牌。我可以将此令牌复制到安全位置以供以后使用,也可以简单地将此页面保持打开状态,直到我们需要 Node.js 应用程序的令牌为止。

配置

在继续编写代码之前,还需要两个 Slack 配置:

  1. 创建或选择您的机器人将与之交互的现有频道。当我测试新机器人时,我选择创建一个新频道。请务必记住频道名称,因为您很快就会在应用程序中需要它。
  2. 将您的机器人添加/邀请到频道,以便与其互动。

现在我已经配置了 Slack Bot,是时候转到 Node.js 应用程序了。如果您已经安装了 Node.js,则可以继续下一步。如果您尚未安装 Node.js,我建议您首先访问 Node.js 下载页面并选择适合您系统的安装程序。

对于 my Slack Bot, I am going to create a new Node.js application by running through the npm init

ahli_left_channel#🎜🎜# #🎜🎜#Mesej#🎜🎜# #🎜🎜# #🎜🎜#Dalam ini Dalam artikel ini, saya akan mencipta aplikasi Node.js dan Slack Bot yang boleh ditambah kepada projek pasukan anda untuk melakukan tindakan khusus berdasarkan acara menerima. #🎜🎜# #🎜🎜#Pertama, saya perlu mencipta bot pada Slack. Dua jenis bot boleh dibuat: #🎜🎜# #🎜🎜# #🎜🎜#custombot#🎜🎜# #🎜🎜#Buat apl dan tambah pengguna bot#🎜🎜# #🎜🎜# #🎜🎜#Artikel ini akan mencipta bot tersuai kerana jika anda bercadang untuk menulis dan menerbitkan aplikasi di Slack, pengguna App Bot akan lebih sesuai. Memandangkan saya mahu bot ini menjadi peribadi kepada pasukan saya, bot tersuai sudah memadai. #🎜🎜# #🎜🎜#Buat bot Slack tersuai#🎜🎜# #🎜🎜# Bot tersuai boleh dibuat di sini: https://my.slack.com/apps/A0F7YS25R-bots. Jika anda sudah log masuk ke akaun Slack anda, pilih butang Tambah Konfigurasi di sebelah kiri jika tidak, sila log masuk ke akaun Slack anda sebelum meneruskan. Jika anda tidak mempunyai akaun Slack, anda boleh mendaftar secara percuma. #🎜🎜# #🎜🎜# Ini akan membawa anda ke halaman baharu yang meminta anda memberikan nama pengguna bot anda. Masukkan nama pengguna anda sekarang, pastikan anda mengikuti garis panduan penamaan Slack. Setelah anda memilih nama bot yang hebat, tekan Tambah konfigurasi bot. #🎜🎜# #🎜🎜#Selepas berjaya mencipta bot, Slack akan mengubah hala anda ke halaman yang membenarkan penyesuaian lanjut bot. Saya akan menyerahkan bahagian ini kepada diri kreatif anda. Satu-satunya perkara yang diperlukan oleh halaman ini ialah token API bermula dengan xoxb-. Saya boleh menyalin token ini ke lokasi yang selamat untuk kegunaan kemudian, atau saya boleh terus membuka halaman ini sehingga kami memerlukan token untuk aplikasi Node.js kami. #🎜🎜#

Tatarajah

#🎜🎜#Sebelum kami meneruskan menulis kod, kami memerlukan dua lagi konfigurasi Slack: #🎜🎜#
    #🎜🎜#Buat atau pilih saluran sedia ada yang akan berinteraksi dengan bot anda. Apabila saya menguji bot baharu, saya memilih untuk membuat saluran baharu. Pastikan anda mengingati nama saluran kerana anda akan memerlukannya dalam apl tidak lama lagi. #🎜🎜# #🎜🎜# Tambahkan/jemput bot anda ke saluran untuk berinteraksi dengannya. #🎜🎜#
#🎜🎜# Sekarang saya telah mengkonfigurasi Slack Bot, tiba masanya untuk beralih ke aplikasi Node.js. Jika anda sudah memasang Node.js, anda boleh meneruskan ke langkah seterusnya. Jika anda belum memasang Node.js lagi, saya syorkan anda melawati halaman muat turun Node.js dahulu dan pilih pemasang yang sesuai untuk sistem anda. #🎜🎜# #🎜🎜#Untuk Slack Bot saya, saya akan mencipta aplikasi Node.js baharu dengan menjalankan proses npm init Dengan gesaan arahan yang ditetapkan ke tempat anda ingin aplikasi anda dipasang, anda boleh menjalankan arahan berikut:#🎜🎜#
mkdir slackbot
cd slackbot
npm init
Salin selepas log masuk

Jika anda tidak biasa dengan npm init, ini melancarkan utiliti untuk membantu anda mengkonfigurasi projek baharu anda. Perkara pertama yang diminta ialah nama. Ia lalai saya kepada slackbot dan saya gembira dengan itu. Jika anda ingin menukar nama aplikasi anda, sekarang adalah peluang anda jika tidak, tekan Enter untuk meneruskan ke langkah konfigurasi seterusnya. Pilihan seterusnya ialah Versi dan Penerangan. Saya meninggalkan kedua-dua pilihan sebagai lalai dan hanya tekan Enter untuk terus memilih kedua-dua pilihan. npm init,这会启动一个实用程序来帮助您配置新项目。它询问的第一件事是名称。它默认我的为 slackbot,我对此感到满意。如果您想更改您的应用程序名称,现在就是机会;否则,请按Enter继续下一步配置步骤。接下来的选项是版本和描述。我将这两个选项都保留为默认值,只需按 Enter 键继续选择这两个选项。

入口点

接下来要求的是入口点。默认为 index.js;然而,很多人喜欢使用 app.js。我不想参加这场辩论,并且考虑到我的应用程序不需要密集的项目结构,我将把我的应用程序保留为默认值 index.js

当您从可能像制表符与空格一样激烈的争论中恢复过来后,配置将继续,并提出几个问题:

  • 测试命令
  • git 存储库
  • keywords
  • 作者
  • 许可证

对于 the purposes of this article, I've left all options as their default. Finally, once all options have been configured, a confirmation of the package.json file is displayed prior to creating it. Press Enter to complete the configuration.

输入SDK

为了更轻松地与 Slack 交互,我还将安装 Slack 开发者工具包,如下所示:

npm install @slack/client --save
Salin selepas log masuk

你终于准备好编写一些代码了吗?我当然是。首先,我将使用 Slack 开发者工具包网站上的示例代码,该代码使用实时消息 API (RTM) 发布一条 Slack 消息,并进行一些调整。

鉴于我选择的入口点index.js,是时候创建此文件了。 Slack 开发人员工具包网站上的示例大约有 20 行代码。我将一次将其分解为几行,只是为了解释这些行的作用。但请注意,所有这些行都应包含在您的 index.js 文件中。

代码首先包含 Slack 开发人员工具包中的两个模块:

var RtmClient = require('@slack/client').RtmClient;
var CLIENT_EVENTS = require('@slack/client').CLIENT_EVENTS;
Salin selepas log masuk

RtmClient 一旦实例化,将成为引用 RTM API 的机器人对象。 CLIENT_EVENTS 是机器人将侦听的事件。

包含这些模块后,就可以实例化并启动机器人了:

var rtm = new RtmClient('xoxb-*************************************');
rtm.start();
Salin selepas log masuk

请务必将上面混淆的 API 令牌替换为您在 Slack Bot 创建过程中获得的令牌。

在我的 RtmClient 上调用 start 函数将初始化机器人的会话。这将尝试验证我的机器人。当我的机器人成功连接到 Slack 时,将发送事件,允许我的应用程序继续进行。这些事件将立即显示。

实例化客户端后,将创建一个 channel 变量,该变量将立即填充到 CLIENT_EVENTS 事件之一内。

let channel;
Salin selepas log masuk

channel 变量将用于执行特定操作,例如向机器人连接的通道发送消息。

当 RTM 会话启动 (rtm.start();) 并为机器人提供有效的 API 令牌时,会生成一个 将发送 RTM.AUTHENTICATED 消息。接下来的几行监听此事件:

rtm.on(CLIENT_EVENTS.RTM.AUTHENTICATED, (rtmStartData) => {
  for (const c of rtmStartData.channels) {
      if (c.is_member && c.name ==='jamiestestchannel') { channel = c.id }
  }
  console.log(`Logged in as ${rtmStartData.self.name} of team ${rtmStartData.team.name}`);
});
Salin selepas log masuk

当收到 RTM.AUTHENTICATED 事件时,前面的代码会在 Slack 团队频道列表中执行 for 循环。就我而言,我专门寻找jamiestestchannel并确保我的机器人是该频道的成员。当满足该条件时,通道 ID 将存储在 channel 变量中。

调试

为了帮助调试,会记录一条控制台消息,其中显示一条消息,表明机器人已通过显示其名称 (${rtmStartData.self.name}) 和团队名称成功进行身份验证(${rtmStartData.team.name}) 它属于。

机器人经过身份验证后,会触发另一个事件 (RTM.RTM_CONNECTION_OPENED

Titik masuk

Perkara seterusnya yang diperlukan ialah titik masuk. Lalai ialah index.js namun, ramai orang lebih suka menggunakan app.js. Saya tidak mahu masuk ke perdebatan ini, dan memandangkan permohonan saya tidak memerlukan struktur projek yang padat, saya akan meninggalkan aplikasi saya dengan index.js</code lalai >. </em> </p>Selepas anda pulih daripada pertengkaran yang mungkin hangat seperti tab lwn. ruang, konfigurasi diteruskan dengan beberapa soalan: <p> <ul> <li>Arahan ujian</li> <li>repositori git</li> <li>kata kunci</li> <li>Pengarang</li> <li>Lesen</li> </ul> </p>Untuk tujuan artikel ini, saya telah meninggalkan semua pilihan sebagai lalai Akhirnya, setelah semua pilihan telah dikonfigurasikan, pengesahan fail <code class="inline">package.json dipaparkan sebelum ini. untuk menciptanya. Tekan Enter untuk melengkapkan konfigurasi.

Masukkan SDK

Untuk memudahkan interaksi dengan Slack, saya juga akan memasang Kit Pembangun Slack seperti yang ditunjukkan di bawah: 🎜
rtm.on(CLIENT_EVENTS.RTM.RTM_CONNECTION_OPENED, function () {
  rtm.sendMessage("Hello!", channel);
});
Salin selepas log masuk
🎜Adakah anda akhirnya bersedia untuk menulis beberapa kod? Sudah tentu saya. Pertama, saya akan menggunakan kod sampel daripada tapak web Kit Pembangun Slack yang menerbitkan mesej Slack menggunakan API Pemesejan Masa Nyata (RTM), dengan beberapa tweak. 🎜 🎜Memandangkan 🎜titik masuk🎜 pilihan saya ialah index.js, sudah tiba masanya untuk mencipta fail ini. Contoh di laman web Slack Developer Toolkit ialah kira-kira 20 baris kod. Saya akan memecahkannya beberapa baris pada satu masa hanya untuk menerangkan perkara yang dilakukan oleh baris. Tetapi sila ambil perhatian bahawa semua baris ini harus disertakan dalam fail index.js anda. 🎜 🎜Kod bermula dengan dua modul daripada kit alat pembangun Slack: 🎜
node index.js
Salin selepas log masuk
🎜RtmClient Sebaik sahaja digunakan, ia akan menjadi objek robot yang merujuk kepada API RTM. CLIENT_EVENTS ialah peristiwa yang bot akan dengar. 🎜 🎜Selepas memasukkan modul ini, anda boleh membuat instantiat dan memulakan robot: 🎜
{
    "type": "message", 
    "channel": "C2147483705", 
    "user": "U2147483697", 
    "text": "Hello world", 
    "ts": "1355517523.000005" 
}
Salin selepas log masuk
Salin selepas log masuk
🎜Pastikan anda menggantikan Token API yang dikelirukan di atas dengan token yang anda perolehi semasa proses penciptaan Slack Bot. 🎜 🎜Memanggil fungsi start pada RtmClient saya akan memulakan sesi bot. Ini akan cuba mengesahkan bot saya. Apabila bot saya berjaya menyambung ke Slack, acara dihantar, membenarkan permohonan saya diteruskan. Acara ini akan dipaparkan serta-merta. 🎜 🎜Selepas membuat seketika pelanggan, pembolehubah channel akan dibuat, yang akan segera diisi dalam salah satu acara CLIENT_EVENTS. 🎜
var RTM_EVENTS = require('@slack/client').RTM_EVENTS;
Salin selepas log masuk
Salin selepas log masuk
Pembolehubah 🎜channel akan digunakan untuk melakukan tindakan tertentu, seperti menghantar mesej ke saluran yang disambungkan bot. 🎜 🎜Apabila sesi RTM dimulakan (rtm.start();) dan token API yang sah diberikan kepada bot, RTM.AUTHENTICATED akan dihantar. Beberapa baris seterusnya mendengar acara ini: 🎜
rtm.on(RTM_EVENTS.MESSAGE, function(message) {
    console.log(message);
});
Salin selepas log masuk
Salin selepas log masuk
🎜Apabila acara RTM.AUTHENTICATED diterima, kod sebelumnya melaksanakan gelung for dalam senarai saluran pasukan Slack. Dalam kes saya, saya secara khusus mencari 🎜jamiestestchannel🎜 dan memastikan bot saya adalah ahli saluran itu. Apabila syarat ini dipenuhi, ID saluran disimpan dalam pembolehubah channel. 🎜

Nyahpepijat

🎜Untuk membantu penyahpepijatan, mesej konsol dilog dengan mesej yang menunjukkan bahawa bot telah berjaya dengan memaparkan namanya (${rtmStartData.self.name}) dan nama pasukan Authenticate ( ${rtmStartData.team.name}) miliknya. 🎜 🎜Selepas bot disahkan, satu lagi peristiwa (RTM.RTM_CONNECTION_OPENED) dicetuskan, yang menunjukkan bahawa bot telah disambungkan sepenuhnya dan boleh mula berinteraksi dengan Slack. Baris kod berikut mencipta pendengar acara apabila berjaya, 🎜Hello! 🎜Mesej akan dihantar ke saluran itu (dalam kes saya, 🎜jamiestestchannel🎜). 🎜
{ 
    type: 'message',
    channel: 'C6TBHCSA3',
    user: 'U17JRET09',
    text: 'hi',
    ts: '1503519368.000364',
    source_team: 'T15TBNKNW',
    team: 'T15TBNKNW' 
}
Salin selepas log masuk
Salin selepas log masuk
🎜Pada ketika ini, saya kini boleh menjalankan aplikasi Node saya dan menonton bot saya secara automatik menyiarkan mesej baharu ke saluran saya:🎜
rtm.on(RTM_EVENTS.MESSAGE, function(message) {
    if (message.channel === channel)
        console.log(message);
});
Salin selepas log masuk
Salin selepas log masuk
🎜Hasil menjalankan arahan ini (apabila berjaya) adalah dua kali ganda: 🎜
  1. 我收到调试消息,表明我的机器人已成功登录。这源自启动 RTM 客户端后触发的 RTM.AUTHENTICATED
  2. 我在 Slack 频道中收到一条Hello!消息。当应用程序接收并处理 RTM.RTM_CONNECTION_OPENED 事件消息时,会发生这种情况。

在继续和进一步增强我的应用程序之前,现在是回顾一下我到目前为止所做的工作的好时机:

  1. 创建了一个自定义 Slack 机器人。
  2. 创建了一个自定义 Slack 频道并邀请我的机器人加入。
  3. 创建了一个名为 slackbot 的新 Node.js 应用程序。
  4. 已将 Slack 开发者工具包安装到我的应用程序中。
  5. 创建了我的 index.js 文件,该文件使用我的自定义机器人中的 API 令牌 创建 RtmClient
  6. RTM.AUTHENTICATED 创建了一个事件侦听器,用于查找我的机器人所属的 Slack 频道。
  7. RTM.RTM_CONNECTION_OPENED 创建了一个事件侦听器,用于向我的 Slack 频道发送Hello!消息。
  8. 调用 RTM Start Session 方法来开始由我的事件侦听器处理的身份验证过程。

构建机器人

现在是真正的乐趣开始的时候了。 Slack 提供(我没有数)至少 50 个不同的事件可供我的自定义机器人监听和选择性处理。正如您从 Slack 事件列表中看到的,某些事件是 RTM API(我们正在使用的)自定义的,而其他事件是 Events API 自定义的。在撰写本文时,我的理解是 Node.js SDK 仅支持 RTM。

为了完成我的机器人,我将处理 message 事件;当然,这可能是最复杂的事件之一,因为它支持大量子类型,我稍后将探讨这些子类型。

以下是 Slack 中最基本的 message 事件的示例:

{
    "type": "message", 
    "channel": "C2147483705", 
    "user": "U2147483697", 
    "text": "Hello world", 
    "ts": "1355517523.000005" 
}
Salin selepas log masuk
Salin selepas log masuk

在这个 basic object, the three most important things I care about are:

  1. 频道。我希望确保此消息属于我的机器人所属的频道。
  2. 用户。这将使我能够直接与用户交互或根据用户身份执行特定操作。
  3. text。这可能是最重要的部分,因为它包含消息的内容。我的机器人只想响应某些类型的消息。

有些消息更为复杂。它们可以包含许多子属性,例如:

  • edited:一个子对象,描述哪个用户编辑了消息以及消息发生的时间。
  • subtype:定义多种不同类型之一的字符串,例如channel_join、channel_leave等。

  • is_starred:一个布尔值,指示此消息是否已加星标。

  • pinned_to:已固定此消息的通道数组。

  • reactions:一组反应对象,定义反应是什么(例如捂脸)、反应发生的次数以及对消息做出这种反应的用户数组。

我将扩展之前创建的 index.js 来监听 message 事件。为了减少代码冗余,以下示例将仅包含与 message 事件增强相关的部分代码。

必须做的第一件事是为我将要收听的 RTM_EVENTS 添加一个新模块。我已将其放置在我之前的两个模块下方:

var RTM_EVENTS = require('@slack/client').RTM_EVENTS;
Salin selepas log masuk
Salin selepas log masuk

处理 message 事件的代码我将放置在文件的底部。为了测试 message 事件是否正常工作,我创建了一个新的事件侦听器,它将 message 对象记录到控制台,如下所示:

rtm.on(RTM_EVENTS.MESSAGE, function(message) {
    console.log(message);
});
Salin selepas log masuk
Salin selepas log masuk

我现在可以重新运行我的 Node 应用程序 (node index.js)。当我在频道中输入消息时,以下内容将记录到我的控制台:

{ 
    type: 'message',
    channel: 'C6TBHCSA3',
    user: 'U17JRET09',
    text: 'hi',
    ts: '1503519368.000364',
    source_team: 'T15TBNKNW',
    team: 'T15TBNKNW' 
}
Salin selepas log masuk
Salin selepas log masuk

到目前为止,一切都很好。我的机器人已成功接收消息。下一个增量步骤是确保消息属于我的机器人所在的频道:

rtm.on(RTM_EVENTS.MESSAGE, function(message) {
    if (message.channel === channel)
        console.log(message);
});
Salin selepas log masuk
Salin selepas log masuk

现在,当我运行我的应用程序时,如果 message 事件适用于我的机器人所属的 channel,我只会看到调试消息。

我现在将扩展应用程序以向频道发送自定义消息,演示如何在消息中标记用户:

rtm.on(RTM_EVENTS.MESSAGE, function(message) {
    if (message.channel === channel)
        rtm.sendMessage("Stop, everybody listen, <@" + message.user + "> has something important to say!", message.channel);
});
Salin selepas log masuk

现在,当任何人在频道中输入消息时,我的机器人都会发送自己的消息,如下所示:“停下来,大家听着,@endyourif 有重要的事情要说!”

好吧,不是很有用。相反,我将通过增强 message 事件侦听器以响应特定命令来完成我的机器人。这将通过执行以下操作来完成:

  1. 根据空格将 messagetext 部分拆分为一个数组。
  2. 检查第一个索引是否与我的机器人的用户名匹配。
  3. 如果是,我将查看第二个索引(如果存在)并将其视为我的机器人应执行的命令

为了轻松检测我的机器人是否被提及,我需要创建一个新变量来存储我的机器人用户 ID。下面是更新的代码部分,我之前在其中设置了 channel 变量。现在,它还将我的机器人的用户 ID 存储在名为 bot 的变量中。

let channel;
let bot;

rtm.on(CLIENT_EVENTS.RTM.AUTHENTICATED, (rtmStartData) => {
  for (const c of rtmStartData.channels) {
      if (c.is_member && c.name ==='jamiestestchannel') { channel = c.id }
  }
  console.log(`Logged in as ${rtmStartData.self.name} of team ${rtmStartData.team.name}`);
  
  bot = '<@' + rtmStartData.self.id + '>';
});
Salin selepas log masuk

通过设置 bot 变量,我通过充实之前创建的 message 事件监听器来完成我的机器人,如下所示:

rtm.on(RTM_EVENTS.MESSAGE, function(message) {
    if (message.channel === channel) {
		if (message.text !== null) {
			var pieces = message.text.split(' ');
			
			if (pieces.length > 1) {
				if (pieces[0] === bot) {
					var response = '<@' + message.user + '>';
					
					switch (pieces[1].toLowerCase()) {
						case "jump":
							response += '"Kris Kross will make you jump jump"';
							break;
						case "help":
							response += ', currently I support the following commands: jump';
							break;
						default:
							response += ', sorry I do not understand the command "' + pieces[1] + '". For a list of supported commands, type: ' + bot + ' help';
							break;
					}
					
					rtm.sendMessage(response, message.channel);
				}
			}
		}
	}
});
Salin selepas log masuk

以下代码将数组中的 text 对象的 message 属性基于空格进行拆分。接下来,我确保数组中至少有两个元素,最好是我的机器人和要执行的命令。

当数组中的第一个元素与我的机器人匹配时,我对数组中的第二个元素执行 switch 语句:命令。当前支持的命令有jumphelp。当一条消息发送到看起来像“@jamiestest跳转”的频道时,我的机器人将向原始用户回复一条特殊消息。

如果该命令未被识别,它将落入我的 switch 的默认 case 语句中,并使用如下所示的通用命令进行响应:“@endyourif,抱歉,我不明白命令“hi”。有关受支持命令的列表,请键入:@jamiestest help"。

结论

此时 point, my bot is complete! If you are interested in further enhancing your bot, here's a list of ideas:

  • 通过监听 team_join 事件来处理新团队成员的加入。当新团队成员加入时,最好向他们发送各种入职信息和/或文件,欢迎他们加入您的团队。
  • 增强我已启动的受支持命令列表。
  • 通过搜索数据库、Google、YouTube 等使命令具有交互性。
  • 在应用程序上创建机器人用户并创建您自己的自定义斜杠命令。

Atas ialah kandungan terperinci Buat bot Slack berasaskan Node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan