2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-12-02

本記事では、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の書き込み処理の実装

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

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の読み込み処理の実装

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

◆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読み書きサンプルコード

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?