科学の箱

科学・IT・登山の話題

Python

Python + Slack Bot – 3

投稿日:2018年9月7日 更新日:

さてリアルタイムでとりあえずうまくいったので、もう少し違うサンプルコードを試してみる。

参考にしたのはこちら。

https://www.fullstackpython.com/blog/build-first-slack-bot-python.html

ただしこのコードが書かれた当時とSlackのレスポンスが変わっているようなのでそのままでは動かない。

下記は変更後。これによりdoを入力すると別のレスポンスが返ってくるようになった。


import os
import time
import re
from slackclient import SlackClient
# instantiate Slack client
slack_client = SlackClient("xoxp-")
# starterbot's user ID in Slack: value is assigned after the bot starts up
starterbot_id = None

# constants
RTM_READ_DELAY = 1 # 1 second delay between reading from RTM
EXAMPLE_COMMAND = "do"
MENTION_REGEX = "^<@(|[WU].+?)>(.*)"

def parse_bot_commands(slack_events):

  print(slack_events)
  for event in slack_events:
    if event["type"] == "message" and not "subtype" in event:
      message = event["text"]
      user_id = event["user"]
      print(user_id + ":" + starterbot_id)
    if user_id == starterbot_id:
      return message, event["channel"]
  return None, None

def handle_command(command, channel):

  # Default response is help text for the user
  default_response = "Not sure what you mean. Try *{}*.".format(EXAMPLE_COMMAND)

  # Finds and executes the given command, filling in response
  response = None

  # This is where you start to implement more commands!
  if command.startswith(EXAMPLE_COMMAND):
    response = "Sure...write some more code then I can do that!"

  # Sends the response back to the channel
  slack_client.api_call(
    "chat.postMessage",
    channel=channel,
    text=response or default_response
  )

if __name__ == "__main__":
  if slack_client.rtm_connect(with_team_state=False):
    print("Starter Bot connected and running!")
    # Read bot's user ID by calling Web API method `auth.test`
    starterbot_id = slack_client.api_call("auth.test")["user_id"]
    while True:
      command, channel = parse_bot_commands(slack_client.rtm_read())
      if command:
        handle_command(command, channel)
      time.sleep(RTM_READ_DELAY)
  else:
    print("Connection failed. Exception traceback printed above.")

 

 

メタ情報

inarticle



メタ情報

inarticle



-Python
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

python virtualenvの使い方

pip3 install virtualenv virtualenv myenv myenv/Scripts/activate Related posts:pythonで配列に関係する型Scrapy …

no image

pythonからgoogle translateを使う

まずはパッケージをpip経由でインストール pip install googletrans これで完了。あとは利用するだけです。 日本語を英語に翻訳するとき。 translator = Transla …

no image

配列のインデックス

インデックスとは配列に対して[]で要素を抜き出す方法である。 マニュアルは以下になる。 Indexing Indexing Routines インデックスの方法としては以下がある。 整数値を使ったイン …

no image

数字、計算、文字列を画面出力

Hello Worldができたので、いろいろな出力を試してみる。 出力はprint関数を使えばよい。 まずは数値から試してみる。数値は文字列と違い引用符で囲む必要はない。画面に直接表示するので変数は使 …

no image

グラフの軸を操作する

概要 ここでは以下の項目について取り扱う 軸にラベルを設定する ー xlabel, ylabel 軸の最小値、最大値を設定する ー xlim, ylim, xaxis 軸にメモリを設定する ー xti …

2018年9月
« 6月   10月 »
 12
3456789
10111213141516
17181920212223
24252627282930

side bar top



アーカイブ

カテゴリー