質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

Q&A

解決済

1回答

2230閲覧

Bolt for Pythonを用いたSlackBotが参加済みのチャンネルで応答をしない

cuelchill

総合スコア1

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

0グッド

0クリップ

投稿2022/01/03 04:07

編集2022/01/03 12:35

Slackの自動応答ボット

Bolt for Pythonを用いてSlackのチャンネルユーザーから投稿された特定のメッセージに応答するボットを作成したい

発生している問題・エラーメッセージ

ボットへのDM投稿に対しては問題なく応答しましたが、
ボットが参加済みのチャンネルへのユーザーからの投稿には応答しません。

///追記
loggingモジュールを用いて確認しましたが、エラーは出ませんでした。
また、チャンネル投稿に対するボットの動作ログも出てこず、
そもそも参加が出来ていないような状態です。

該当のソースコード

bot_bolt.py

Python

1#!/usr/local/bin/python3.7 2import os 3from dotenv import load_dotenv 4from slack_bolt import App 5from slack_bolt.adapter.socket_mode import SocketModeHandler 6 7load_dotenv(verbose=True) 8# ボットトークンとソケットモードハンドラーを使ってアプリを初期化します 9app = App(token=os.environ.get("SLACK_BOT_TOKEN")) 10# 指定可能なリスナーのメソッド引数の一覧は以下のモジュールドキュメントを参考にしてください: 11# https://slack.dev/bolt-python/api-docs/slack_bolt/kwargs_injection/args.html 12@app.message("knock knock") 13def ask_who(message, say): 14 say("_Who's there?_") 15 16@app.message("hello") 17def message_hello(message,say): 18 say(f"hello <@{message['user']}>") 19 20# '????' が含まれるすべてのメッセージに一致 21@app.message(":wave:") 22def say_hello(message, say): 23 user = message['user'] 24 say(f"Hi there, <@{user}>!") 25 26# アプリを起動します 27if __name__ == "__main__": 28 SocketModeHandler(app, os.environ["SLACK_APP_TOKEN"]).start() 29

環境変数格納ファイル
.env

SLACK_APP_TOKEN=xapp-********* SLACK_BOT_TOKEN=xoxb-*********

cron設定用Bot自動起動
bot_run.sh

#!/bin/bash # # cron script # cd cd ./web/slackBot /usr/local/bin/python bot_bolt.py

試したこと

ボットのScopeにこちらの設定を追記しましたが応答はありません。
- chat:write
- chat:write.customize
- chat:write.public
- channels:read
- channels:history
- groups:read
- groups:history
- im:history
- im:read
- im:write
- mpim:history
- mpim:read
- mpim:write

補足情報(FW/ツールのバージョンなど)

Python 3.7.12
ロリポップレンタルサーバーにて実行ファイルとcron設定を保存

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Supernove

2022/01/03 04:46

何かエラーメッセージは出てますか? あれば質問に追記お願いします
cuelchill

2022/01/03 12:42

supernove様ありがとうございます。 ログを出してみましたがエラーは確認できず、追記の内容について迷っていました。 回答にある手順を試した所上手くいったので、そもそもチャンネル投稿を読み取れないのでボットが動かずログも出てこないという状況のようでした。 ログ確認について見落としており、また質問としても情報不足でした。 ご指摘ありがとうございます。
guest

回答1

0

ベストアンサー

以下のいずれかが原因ではないかと思います。

  • Slack アプリの設定画面の Event Subscriptions のページで message.channels が追加されていない (DM でのメッセージを受信できているなら message.im は追加されているはずです)
  • message.channels イベントの追加や channels:history scope の追加後にアプリを再インストールしていない

投稿2022/01/03 10:14

seratch

総合スコア215

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cuelchill

2022/01/03 12:48

seratch様ありがとうございます。 ご提示の通り「message.channels」が追加されておらず、 設定し再インストールしたところ参加中のチャンネル全てで応答をしてくれました。 迅速な対応ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問