Slackbotでファイルの読み書きをしよう〜PythonでのBot開発〜


本記事では、Pythonで作成したSlackbotでファイルの読み書きにする処理について説明します。

Pythonでファイルの読み書きを制御する」にて実装した論理をSlackbotから呼び出せるようにしていきます。

ファイルを読み書きする基本論理は「Pythonでファイルの読み書きを制御する」で作成した以下のモジュールを使用します。

import codecs

class FileReadWrite:

    # ファイルを読み込むメソッド
    def file_read(self, path):
        try:
            # ファイルを開く
            target_file = codecs.open(path, "r", "utf_8")
            # ファイルを読み込む
            text = target_file.read()
            target_file.close()
        except:
            # エラーが出た時の例外処理
            text = "ng"

        return text

    # ファイルを書き込むメソッド
    def file_write(self, path, text):
        try:
            target_file = codecs.open(path, "a", "utf_8")
            target_file.write(text)
            result = "ok"
            target_file.close()
        except:
            # エラーが出た時の例外処理
            result = "ng"
        return result

PythonでのSlackbot実装の基本については「SlackbotをPythonで作成しよう」をお読みください。

Slackbotの書き込み処理の実装

◆動作仕様
上記のモジュールから書き込みメソッドを呼び出して結果によってリアクションを返します。
書き込みが成功した場合は「」、書き込みに失敗した場合は「」のリアクションを返すようにします。


from slackbot.bot import respond_to
from slackbot.bot import listen_to
from filereadwrite import FileReadWrite

@respond_to('^ファイル書き込みテスト$')
def write_test(message):
    # クラスのインスタンスを生成
    f = FileReadWrite()
    # ファイルに書き込む
    action = f.file_write("./test1.txt", "あいうえお\n")
    # 結果をリアクションする
    message.react(action)

◆実行結果

Slackbotの読み込み処理の実装

◆動作仕様
上記のモジュールから読み込みメソッドを呼び出して結果によってテキストまたはリアクションを返します。
読み込みに成功した場合はファイルの内容を出力します。読み込みに失敗した場合は「」のリアクションを返すようにします。

◆botmodule.pyに記述する内容
読み込みの論理を追記します。

@respond_to('^ファイル読み込みテスト$')
def read_test(message):
    # クラスのインスタンスを生成
    f = FileReadWrite()
    # ファイルからテキストを読み込む
    text = f.file_read("./test1.txt")

    # 失敗した時はNGをリアクションで返す
    if text == "ng":
        message.react(text)
    else:
        # 成功した場合はテキストを返す
        message.reply(text)

◆実行結果

以上、Slackbotでのファイルの読み書き論理の実装でした。

Slackbot+PythonまとめTOP>>Slackbotの作り方マニュアル〜Python編〜

◆サンプルコード
Python Slackbot読み書きサンプルコード