如何在 Ubuntu 14.04 上安装用于 IRC 的 Lita 聊天机器人

介绍

许多现代的DevOps团队正在围绕聊天室设置越来越多的基础设施,有很多聊天室可用,从商业选项(如HipChat和Slack)到 DIY选项(如IRC或Jabber/XMPP)。

本文将概述如何安装 bot Lita,它受GitHub的Hubot的启发。Lita完全用Ruby编写,并在许多类型的聊天室中工作,如HipChat,Campfire和IRC。

在本教程中,我们将通过安装Lita在自己的Ubuntu服务器上的步骤进行步骤,将其连接到IRC频道,并开始安装插件。

前提条件

要遵循本教程,您将需要:

  • 一个 Ubuntu 14.04 Droplet.
  • 一个 sudo 非根用户,您可以通过遵循 本教程来设置。
  • 因为我们将设置Lita用于IRC,您还需要自己连接到IRC并加入一个频道。

您可以 設定自己的 IRC 伺服器,但如果您只是嘗試 Lita out,使用公共伺服器(如 freenode、IRCnet 或 EFnet)更容易。

Freenode 特别有一种简单的 web chat,这样你就可以连接,而无需下载 IRC 客户端。 要使用它,请选择一个独特的号和频道名称,然后点击 Connect

步骤 1 - 安装 Lita

在此步骤中,我们将安装Lita及其依赖。

虽然Ruby包含在默认Ubuntu存储库中,但在14.04中可用的Ruby版本对于Lita来说太老了。

因此,首先加载具有更新的版本的个人包存档(PPA)。

1sudo apt-add-repository ppa:brightbox/ruby-ng

然后在您的服务器上更新包。

1sudo apt-get update

接下来,安装 Ruby 和一些 Lita 需要的额外依赖。

1sudo apt-get install ruby2.2 ruby2.2-dev build-essential libssl-dev redis-server

最后,我们将使用 RubyGems 安装 Lita,它是 Ruby 的包管理器(类似于 APT 是 Ubuntu 的包管理器)。

安装 Lita 和 Lita IRC 适配器。

1sudo gem install lita 
2sudo gem install lita-irc

步骤 2 – 配置 Lita

Lita 的软件现在已安装,所以在这个步骤中,我们将创建一个机器人,并将其设置为连接到我们的 IRC 频道。

下列命令将创建一个新的机器人. 用你的机器人独特的口号代替your_bot_name

1lita new your_bot_name

该命令还会在您的 homedir 中创建一个目录, ~/your_bot_name,其中包含两个文件: Gemfilelita_config.rb. Gemfile 告诉 Ruby 要加载哪个插件。 lita_config.rb 是存储所有插件配置设置的地方。

在我们可以启动Lita之前,我们需要编辑这些配置文件,以便您的机器人知道如何连接到IRC。

1cd ~/your_bot_name/

打开Gemfile以使用 nano 或您最喜欢的文本编辑器进行编辑。

1nano Gemfile

查找字符串#宝石lita-irc,并在字符串开始时删除#字符串,该字符串不发表评论。

1[label Gemfile modified excerpt]
2. . .
3
4# Uncomment to use the IRC adapter
5gem "lita-irc"
6
7. . .

然后保存并关闭文件。

接下来,打开lita_config.rb文件。

1nano lita_config.rb

config.robot.name参数从Lita更改为您的机器人的号。

1[label lita_config.rb modified excerpt]
2Lita.configure do |config|
3  # The name your robot will use.
4  config.robot.name = "your_bot_name"
5
6. . .

下面稍微更进一步,将config.robot.adapter参数从:shell更改为:irc

1[label lita_config.rb modified excerpt]
2. . .
3
4  # The adapter you want to connect with. Make sure you've added the
5  # appropriate gem to the Gemfile.
6  config.robot.adapter = :irc
7
8. . .

然后,在文件的底部,在最后一行之前,添加下面的行(下方突出)结尾

请确保您正确地复制入口,并将config.adapters.irc.channelsconfig.adapters.irc.user行中的位置变量替换为您的频道名称和机器人名称。

 1[label lita_config.rb modified excerpt]
 2. . .
 3
 4  ## Example: Set configuration for any loaded handlers. See the handler's
 5  ## documentation for options.
 6  # config.handlers.some_handler.some_config_key = "value"
 7
 8  config.adapters.irc.server = "irc.freenode.net"
 9  config.adapters.irc.channels = ["#your_channel_name"]
10  config.adapters.irc.user = "your_bot_name"
11  config.adapters.irc.cinch = lambda do |cinch_config|
12    cinch_config.max_reconnect_delay = 123
13  end
14
15end

保存并关闭文件。

有关哪些选项可以转移到lita-irc插件的完整列表,请参阅 lita-irc插件的GitHub页面

步骤 3 – 连接到一个频道

在此步骤中,我们将启动机器人并设置一个管理员。

确保您使用您所选择的 IRC 客户端或 Web 客户端连接到 IRC,并在您希望 Lita 加入的渠道中。

1lita start

过了一会儿,你会看到你的机器人加入你指定的IRC频道。

在这一点上,我们没有告诉我们的机器人如何做任何事情,所以它还不太有用。在我们添加一些额外的功能之前,让我们将我们的用户定义为管理员。

1your_bot_name users find your_irc_nickname

你的机器人会用这样的东西回应:

1[label Lita's response in IRC]
2your_irc_nickname<(ID: ff97cx41-b7fd-4x9b-x76d-e76xf443c65x, Mention name: your_irc_nickname)

复制ID,然后通过在服务器的终端中输入CTRL+C来停止Lita。

重新打开lita_config.rb文件。

1nano lita_config.rb

在文件末尾,在最后的结尾之前,添加下面的行. 用您复制的 ID 替换此处的 ID。

 1[label Gemfile modified excerpt]
 2...
 3
 4  config.adapters.irc.cinch = lambda do |cinch_config|
 5    cinch_config.max_reconnect_delay = 123
 6  end
 7
 8  config.robot.admins = ["f97cx41-b7fd-4x9b-x76d-e76xf443c65x"]
 9
10end

保存并关闭文件。

步骤4:添加插件

在此时,您的机器人可以连接到IRC,但这几乎是它所能做的所有事情,在此步骤中,我们将安装一个示例插件来添加一些有用的功能。

虽然你可以在Ruby中编写自己的插件,但有数以百计的(https://www.lita.io/plugins)预备插件可供选择。

首先,让我们安装lita-dig插件。

1sudo gem install lita-dig

接下来,打开Gemfile再次编辑。

1nano Gemfile

添加下列行到文件的尽头。

1gem "lita-dig"

保存并关闭文件,然后重新启动机器人。

1lita start

当您的机器人重新连接时,请将下列行发送到IRC频道。

1your_bot_name dig digitalocean.com

机器人会用几行来响应,从类似的字样开始,即;从 8.8.8.8:53 (114 字节)收到回复

步骤5 - 写一个Upstart脚本

在迄今为止的每个步骤中,我们都必须手动启动机器人. 这对测试来说是好的,但有一个更好的解决方案. 在这个步骤中,我们将创建一个Upstart脚本来管理机器人,使其易于启动,停止和重新启动。

首先,创建一个名为lita-your_bot_name.conf的文件在/etc/init中。

1sudo nano /etc/init/lita-your_bot_name.conf

将以下内容粘贴到文件中,将your_username替换为您服务器上的 sudo 非 root 用户的用户名。

 1[label /etc/init/lita-your_bot_name.conf]
 2
 3start on runlevel [2345]
 4stop on runlevel [^2345]
 5
 6chdir /home/your_username/your_bot_name
 7env HOME=/home/your_username
 8setuid your_username
 9setgid your_username
10
11respawn
12respawn limit 10 5
13
14exec lita start

这里有一个快速的解释这个脚本做什么:

启动停止的行告诉Ubuntu何时启动和停止机器人,chdir的行告诉Upstart执行exec命令时应该在哪个目录,实际上启动机器人。

env 行是必要的,所以 Ruby 应用程序知道其设置文件所在地。 setuidsetgid 告诉 Upstart 作为特定用户启动机器人;如果这些行被省略,Upstart 将将机器人启动为根。

respawn线告诉Upstart如果 bot 被中断或崩溃时重新启动,而respawn limit则阻止Upstart如果 bot 在 5 秒内崩溃 10 次,这表明有更大的问题。

我们可以通过使用内置的 linter 来检查本脚本中的语法是否正确,这是一个语法检查程序,使用以下命令。

1sudo init-checkconf /etc/init/lita-your_bot_name.conf

如果语法正确,你应该看到下面的输出。

1[label Correct linter output]
2File /etc/init/lita-your\_bot\_name.conf: syntax ok.

一旦您检查了 config 文件的语法,请通过输入以下命令来启动 bot 使用 Upstart 脚本。

1sudo start lita-your_bot_name

你应该看到一个看起来像这样的线条:

1[label Upstart output]
2lita-your_bot_name start/running, process 1234

您的机器人应该很快加入IRC频道;您现在可以退出服务器,机器人将继续运行。

结论

在本教程中,我们安装并配置了Lita与插件和Upstart脚本. 凭借独特的机器人名称和Upstart脚本,您甚至可以在不同的聊天室中运行多个机器人,使用不同的插件。

从自定义链接到流行的CI构建服务,如Jenkins到控制您的GitLabs存储库,使用聊天机器人可以简化,简化和自动化您的工作。

Published At
Categories with 技术
comments powered by Disqus