Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Pythonista3でSlackbotを動作させる方法

More than 1 year has passed since last update.

こんにちは。

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

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

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

パソコンで作る方法についてはブログの方で解説しているので興味があったら覗いてみてください。
ブログ:みやびのどっとぴーわい SlackbotをPythonで作成しよう

Pythonistaの基本的な使い方についてもまとめています。
ブログ:みやびのどっとぴーわい Python超入門〜iPhone・iPadで始めるプログラミング〜

Pythonista3でslackbotライブラリをインストールする方法

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

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

Stashのインストール

Stashをインストールすることで実行できるようになります。

Pythonista3上で以下のコードを実行するとStashをインストールできます。

import requests as r; exec(r.get('http://bit.ly/get-stash').text)

stashを起動してライブラリをインストール

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

起動したターミナルで以下のコマンドを実行してください。

pip install slackbot

これで準備はOKです。

SlackのAPIトークンを取得する手順

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

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

以下の記事では画像付きで解説しています。
ブログ:みやびのどっとぴーわい SlackbotのAPIトークンを取得する(動画あり)

Pythonista3でSlackbotの記述例と実行例

PythonでSlackbotを動かすために必要なファイルはこの2つ

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

記述例

まずはslackbot_settings.pyの記述例です。

# 「API_TOKEN」にはSlackから取得したAPIトークンを記述してください
API_TOKEN = "XXXXXXXXXXXXXXXXXXX"

知らない言葉を聞いた時のデフォルトの応答

DEFAULT_REPLY = "すみません。よくわかりません"

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

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

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

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

◆bot.pyに記述する内容
Botを起動する時の実行ファイルです。Botを起動する為の処理を記述します。

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('コニチハ')

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

実行例

Slackbotからの応答

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

終わりに

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

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

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

ブログ:みやびのどっとぴーわい Slackbotの構築マニュアル〜Python編〜

miyabikno
SIer系業務7年、Web系業務を3年やってきたプログラミング系ブロガーです。 Pythonの記事をメインで書いています。
https://se.miyabikno-jobs.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away