Edited at

slackbot備忘録 ~基本編1~


はじめに

初投稿です!

pythonを使ってslackbotを作成した備忘録

Botユーザー作成~簡単なやり取りについて記載


作業開始!


slack側


  1. メニュー ⇒ その他の管理 ⇒ app管理で「appディレクトリ」に飛ぶ


  2. ヘッダーの「App ディレクトリを検索」に"Bots"と入力し、ロボットアイコンをクリック


  3. 「設定を追加ボタン」を押し、ボットユーザー名を入力して「ボットインテグレーションを追加する」ボタンを押す

  4. 無事作成されたら、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']


cmdでrun.pyを起動

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などの中のトリガー文字は含まれていれば(部分一致であれば)発動するみたい

次回はもう少し細かい設定をしていく( ˘ω˘ )