科学の箱

科学・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

OpenCV

WindowsにOpenCVをインストールする場合に2つのやり方がある。 一つは様々な言語からOpenCVを利用できるようにする方法、2つ目の方法ではPythonからOpenCVを利用する方法である。 …

no image

wordpress-xmlrpc

WordPressへPythonから投稿してみる。 まずは設定から。説明はこちらにある。 https://python-wordpress-xmlrpc.readthedocs.io/en/lates …

no image

matplotlibのお役立ちリンク

matplotlibのリファレンスが必要ならこちらを参照する。 https://www.labri.fr/perso/nrougier/teaching/matplotlib/ Related pos …

no image

画面に描画する線のフォーマットを変える

matplotlib.pyplot.plot()関数では線の形式を簡単に変えることができる。 ここでは以下を説明する。 線種別、色、太さを指定 線のマーカーを指定 線種別、色、太さを指定 線種別、色、 …

no image

pycharmでターミナルからconda環境を利用する

pycharmでTerminalを開く conda環境を開く %windir%\System32\cmd.exe “/K” C:\ProgramData\Anaconda3\S …

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

side bar top



アーカイブ

カテゴリー