はじめに
初投稿です!
pythonを使ってslackbotを作成した備忘録
Botユーザー作成~簡単なやり取りについて記載
作業開始!
slack側
- メニュー ⇒ その他の管理 ⇒ app管理で「appディレクトリ」に飛ぶ
- ヘッダーの「App ディレクトリを検索」に"Bots"と入力し、ロボットアイコンをクリック
- 「設定を追加ボタン」を押し、ボットユーザー名を入力して「ボットインテグレーションを追加する」ボタンを押す
- 無事作成されたら、APIトークンをメモ(任意で「アイコン」「氏名」「個のボットの機能」を編集)
python側
slackbotパッケージインストールする
pip install slackbot
下記のようなディレクトリ構造にする
slackbot
- run.py # slackbot起動用ファイル
- slackbot_settings.py # slackbot設定用ファイル
- plugins
- __init__.py # モジュールを示すファイル(中身は空)
- my_mention.py # slackbot機能用ファイル
run.py
# coding:utf-8
from slackbot.bot import Bot
def main():
bot = Bot()
bot.run()
if __name__ == "__main__":
print('start slackbot')
main()
slackbot_settings.py
# coding:utf-8
# botアカウントのトークン指定
API_TOKEN = '先ほどメモしたトークンを入力'
# どの対応にも当てはまらない場合の対応
DEFAULT_REPLY = '何を言っているかわかりません。'
# プラグインスクリプト
PLUGINS = ['plugins']
slackでbotにダイレクトメッセージ,channnel内でメンションするとbotが反応
現時点ではデフォルトメッセージしか返ってこない
- ダイレクトメッセージ
- channelメンション
my_mention.pyでいろいろ試してみる
my_mention.py
# coding:utf-8
from slackbot.bot import respond_to # @botname 又は ダイレクトメッセージで反応
from slackbot.bot import listen_to # チャネル内発言で反応
from slackbot.bot import default_reply # 該当する応答がない場合に反応するデコーダ
# @respond_to('sample') bot宛に「sample」を送ったとき
# @listen_to('sample') botが所属するchannel内で「sample」を送ったとき
# @default_reply() slackbot_settings.pyで設定したDEFAULT_REPLYと同じ動き
# どちらも入力がある場合、基本的にはこちらが優先される
# message.reply('message') @発信者名: message とメッセージを送信する
# message.send('message') message とメッセージを送信する
# message.react('emoji') 発言者のメッセージにリアクションする
# ':'は使わない
@respond_to('こんにちは')
def respond_func(message):
message.reply('こんにちは!')
@respond_to('おやすみ')
def respond_func(message):
message.react('x')
message.reply('まだ夜じゃないよ!')
@listen_to('お腹すいた')
def listen_func(message):
message.send('一緒にラーメン食べにいく?:ramen::ramen:')
respond_toなどの中のトリガー文字は含まれていれば(部分一致であれば)発動するみたい
次回はもう少し細かい設定をしていく( ˘ω˘ )