Pythonista3でSlackbotを動作させる方法

こんにちは。

みやびのと申します。
エンジニア歴12年ほどです。

今回はiOSアプリであるPythonista3でSlackbotを動かす方法について紹介する記事します。

具体的には
・Pythonista3でslackbotライブラリをインストールする方法
・SlackのAPIトークンを取得する手順
・Pythonista3でSlackbotの記述例と実行例
の3つについて解説です。

パソコンで作る方法についてはブログの方で解説しているので興味があったら覗いてみてください。
ブログ：[みやびのどっとぴーわい SlackbotをPythonで作成しよう](https://se.miyabikno-jobs.com/entrance-labotlatori/)

Pythonistaの基本的な使い方についてもまとめています。
ブログ：[みやびのどっとぴーわい Python超入門〜iPhone・iPadで始めるプログラミング〜
](https://se.miyabikno-jobs.com/start-python-iphone/)

## Pythonista3でslackbotライブラリをインストールする方法
Slackbotを動かすためには、ライブラリのインストールが必要ですが、Pythonistaはデフォルトでは「pip」コマンドが入っていません。

よってまずは「pip」コマンドを動かせるようにする必要があります。

### Stashのインストール
<a href="https://forum.omz-software.com/topic/1919/stash-shell-like-an-expert-in-pythonista" rel="noopener noreferrer" target="_blank">Stash</a>をインストールすることで実行できるようになります。

Pythonista3上で以下のコードを実行するとStashをインストールできます。
<pre class="lang:default decode:true " >
import requests as r; exec(r.get('http://bit.ly/get-stash').text)
</pre> 

### stashを起動してライブラリをインストール
「launch_stash.py」というファイルができているのでこれを実行するとプロンプトが起動。
pipコマンドが実行できるようになります。

起動したターミナルで以下のコマンドを実行してください。
<pre class="lang:default decode:true " >
pip install slackbot
</pre> 

これで準備はOKです。

## SlackのAPIトークンを取得する手順
Slackbotを動かすためにはAPIトークンが必要です。
取得手順は以下の通り

1.ワークスペースのAPPフォルダに移動します。
2.サイドメニューの「カテゴリ」から「Bot関連を選択」します。
3.「Hubot」を選択します。
4.「設定の追加」ボタンをクリックします。
5.名前を入力して「Hubotインテグレーションの追加」を押します。
6.「API トークン」に書かれている内容をコピーします。

以下の記事では画像付きで解説しています。
ブログ：<a href="https://se.miyabikno-jobs.com/slackbot-api-token/">みやびのどっとぴーわい  SlackbotのAPIトークンを取得する(動画あり)

## Pythonista3でSlackbotの記述例と実行例
PythonでSlackbotを動かすために必要なファイルはこの2つ

・slackbot_settings.py：Botの設定を書く為のファイル(名称変更不可)
・bot.py:Botを起動する為の実行ファイル(名前は任意)

### 記述例
まずはslackbot_settings.pyの記述例です。
<pre class="lang:default decode:true " ># 「API_TOKEN」にはSlackから取得したAPIトークンを記述してください
API_TOKEN = "XXXXXXXXXXXXXXXXXXX"

# 知らない言葉を聞いた時のデフォルトの応答
DEFAULT_REPLY = "すみません。よくわかりません"

＃ 外部ファイルを読み込む。botmodule.pyを読み込んでおく
PLUGINS = [
    'slackbot.plugins',
]
</pre> 

「API_TOKEN」に取得したトークンを指定します。
「DEFAULT_REPLY」はBotが知らない言葉が出てきた時に応答する内容です。

プラグインに指定すると自作のライブラリを読み込めます。（importで十分な気もする）

続いてbot.pyの記述例です。

<span class="text_bolder">◆bot.pyに記述する内容</span>
Botを起動する時の実行ファイルです。Botを起動する為の処理を記述します。

<pre class="lang:default decode:true " >from slackbot.bot import respond_to
from slackbot.bot import listen_to

# 「respond_to」はメンションする(@でターゲットを指定すること)と応答する
@respond_to('こんにちは')
def greeting_1(message):
    # Slackに応答を返す
    message.reply('こんにちは!')

# 「listen_to」はメンションがなくても応答する
@listen_to('コニチハ')
def greeting_2(message):
    message.reply('コニチハ')
</pre> 

「respond_to」はメンションする(@でターゲットを指定すること)と応答します。
「listen_to」はメンションがなくても応答します。

### 実行例
<img src="https://se.miyabikno-jobs.com/wp/wp-content/uploads/2018/12/Slack_reply-768x318.png" alt="Slackbotからの応答" width="５00" class="alignnone size-medium wp-image-515" />

注意：バックグラウンドでも動作しますが、スリープ画面になるなど通信が切れるので再起動が必要です。

## 終わりに
最近はスマホでなんでもできる時代になりました。プログラミングも然り。
Slackbotをスマホで作る実用性はそんなに多くないですが、パソコン持ち歩かなくても外出中にいろいろ試せるので隙間時間の勉強としてはちょうどいいかなと思います。

Slackbotはやりこむと結構いろいろできます。
スマホじゃなくてもいいので是非試してみてください。

ブログでSlackbotについてまとめています。

ブログ：[みやびのどっとぴーわい Slackbotの構築マニュアル〜Python編〜](https://se.miyabikno-jobs.com/slackbot-manual-python/)