在前端开发中,使用机器人帮助我们提高效率和自动化很常见,Hubot 是一个可以让你轻松操作不同的讨论平台的机器人工具。而 @gr2m/hubot 这个 npm 包可以让你快速地构建自己的 Hubot 机器人。本文将详细介绍如何使用这个 npm 包来构建一个简单的 Hubot 机器人。
安装和准备
使用 npm 包的第一步是安装它,你可以使用以下命令安装它:
npm install @gr2m/hubot --save
安装完成后,在你的项目目录下创建一个 .env
文件,并添加以下内容:
export HUBOT_ADAPTER=slack export HUBOT_SLACK_APP_TOKEN=your_slack_app_token export HUBOT_SLACK_BOT_TOKEN=your_slack_bot_token
其中,HUBOT_ADAPTER
表示所使用的适配器类型,HUBOT_SLACK_APP_TOKEN
和 HUBOT_SLACK_BOT_TOKEN
分别表示所使用的 Bot Token 和 App Token。
创建机器人
通过 Hubot 的命名行工具 yo hubot
来创建机器人。首先需要安装全局的 hubot-generator:
npm install -g yo generator-hubot
安装完成后,可以使用以下命令创建机器人:
yo hubot --adapter slack
然后回答一些问题并创建机器人。当机器人被创建后, scripts
目录下将会有一个名为 example.coffee
的文件。打开这个文件,你将看到以下内容:
module.exports = (robot) -> robot.respond /PING$/i, (msg) -> msg.send 'PONG'
这段代码监听了一个 PING
的事件,并回复了一个 PONG
。这是一个 Hubot 机器人最基本的功能。
运行机器人
使用以下命令来运行机器人:
bin/hubot
如果一切正常,你会看到类似下面的输出:
[Thu Jun 02 2016 22:31:14 GMT+0800 (CST)] INFO Using default redis on localhost:6379 [Thu Jun 02 2016 22:31:14 GMT+0800 (CST)] INFO Using adapter slack [Thu Jun 02 2016 22:31:14 GMT+0800 (CST)] INFO Hubot is listening to slack events
现在你可以在 Slack 中使用 @bot ping
来测试一下机器人了。
自定义机器人
让我们来尝试添加一个更有趣的功能 —— 随机生成一句「一句话警世名言」。
首先,安装两个 npm 包:
npm install random famous-quotes --save
然后在 scripts
文件夹下创建一个 quotes.coffee
文件,并添加以下内容:
-- -------------------- ---- ------- - -- --- - ------ - ------- -------- ------------ - ------- --------------- - ------ ------------- - -- ---- - --------------------- ------ -------------- -- ----------- - -- ---- -- -------------- - ------- -- ------------- ------- ----- -- ----- - --------------- -------- ------------------------- -----------
这段代码首先引入了两个 npm 包 random
和 famous-quotes
,然后定义了一个生成随机「一句话警世名言」的函数 generateQuote()
。最后通过监听一个 警句
事件,输出机器人的回复。
现在,在 Slack 中将 @bot 警句
发送给机器人,你将会在频道中看到机器人回复你一句随机生成的「一句话警世名言」。
总结
在本文中,我们详细介绍了如何安装和使用 npm 包 @gr2m/hubot 来构建自己的 Hubot 机器人,并通过一个案例来学习了如何自定义机器人。
Hubot 是一个强大的机器人工具,除了上面提到的以外,它还提供了许多其他的功能。使用 Hubot 机器人可以大大提高我们的效率和自动化工作,是前端开发的一个优秀选择。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/96915