さてリアルタイムでとりあえずうまくいったので、もう少し違うサンプルコードを試してみる。
参考にしたのはこちら。
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.")