本記事はSlackに入力した内容を自作のSlackbotにログとして記録させる方法を紹介するものです。Slackは無料プランだと1ヶ月しかコメントを保持できません。有料プランの場合でも欲しい情報を探すのも意外に手間がかかります。必要な情報だけ都度他のドキュメントに転記する面倒です。入力した内容が自動的に記録できれば手間を大幅に削減できます。目次Slackbotの書き込みに使用するモジュールSlackに投稿した内容をBotに記録する方法Slackbotで時刻・ユーザー・チャンネルの情報も出力するSlackbotの書き込みに使用するモジュールファイルを読み書きする基本論理は「Pythonでファイルの読み書きを制御する」で作成したこちらの自作モジュールを使用します。resultPythonでのSlackbot実装の基本については「SlackbotをPythonで作成しよう」をお読みください。Slackbotのファイルの読み書きについては「Slackbotでファイルの読み書きをしよう」も参考にしてください。Slackに投稿した内容をBotに記録する方法slackbotライブラリのデコレーター「@listen_to」を使用します。読み取り内容を正規表現「^(.*)$」とすることで入力した全てのメッセージを受け取ることが可能です。text):message.send(text)受け取ったコメントを書き込む受け取ったコメントを書き込む処理は以下の通りです。・Botに記録させる為、Botが起動している時のみ記録されます。・Botが応答した内容は記録されません。・コメントの編集内容は記録できません。ファイルに書き込む時に改行を入れておかないと次に文字を入力した時に続けて文字が出力されてしまいます。改行がない場合テストテスト改行がある場合テストテスト◆改行は文頭と文末のどちらが良い?改行は文頭に入れる方法と文末に入れる方法があります。先頭に改行を入れた場合最初にファイルを作成した時に1行目が空きます。(1行目が空いていてもその後の動作に特に影響はありません)末尾に入れる場合、ファイルの文末に改行がないと改行されずに前の文章に続けて出力されます。どちらに入れる場合でもルールを明確にしておけば特に問題はありません。作成するプログラムに合わせて都合のいい方に入れましょう。Slackbotで時刻・ユーザー・チャンネルの情報も出力するテキストだけ出力するのも味気ないので他の情報も出力するように改造について、以下の内容を追加で出力する例を説明します。・チャンネル時刻を出力する時刻は「datetime」ライブラリを使用することで表示可能です。strftime()メソッドでフォーマットを調整できます。%H:%M:%S”)ユーザー名を取得するユーザー名は「message」に格納されている情報を使用します。ユーザー名はいくつか種類がありますが、今回はプロフィール上に表示される名前である「’real_name’」とSlack上に表示される「’display_name’」を取得する例です。message.user[‘profile’][‘display_name’]チャンネルを取得するチャンネルは「message」に格納されている情報を使用します。message.channel._body[‘name’]以上をまとめたデータはコードは以下の通りです。書き込みに失敗した場合は応答する。書き込みに失敗した場合は応答する。'ng':message.reply("書き込みに失敗しました")CSVファイルやEXCELで扱いやすいようにカンマ区切りにしています。以上、ファイルを記録する方法でした。この方法だとBotのいるチャンネルの全ての会話が記録されてしまうので、次回は記録範囲を限定する方法について説明したいと思います。Slackbotこちらの記事も読まれていますこの記事を書いている人miyabikno住んでいるところ:神奈川県。SIer中小企業(C,VBA):8年(うち5年QA)。Web系ベンチャー(PHP,Javascript,Python):2年。@miyabiknoSIer中小企業(C,VBA):8年(うち5年QA)。Web系ベンチャー(PHP,Javascript,Python):2年。現在はブログをメインに活動しています。みやびのどっとぴーわい。