# Slack Tutorial Bot ###### tags: `Slack` `API` `Bot` `JP` ## 概要 + Slack 上におけるSlackの使い方、チュートリアルを生徒や教師にわかりやすく、伝えるためのBOT。 ## アーキテクチャ・設計 + Nedb を採用します。 + MVC モデルを採用します。 `cluster manager` を参考にして下さい。 + `cluster manager` 相応の開発クオリティ診断をクリアします。 ### When New Member Join Slack 新たなメンバーがSlackにJoinした際にチュートリアルモードがDMに送られます。 ## 機能 ### When join new member + welcome_text function 1. 当機能はユーザーがGeneralにはいったら起動します。 2. ユーザーにテキスト(slackの利点、google form,etc)をユーザーのDMへ送信します。 ### How to create channel + 当コマンドの使い方 1. 当コマンドは`how to create channel`と入力されたら起動します。 2. 当コマンドはユーザーにチャンネルの使い方を説明します。 ### How to delete channel + 当コマンドの使い方 1. 当コマンドは`how to delete channel`と入力されたら起動します。 2. 当コマンドはユーザーにチャンネルの消し方を説明します。 ### How to create group + 当コマンドの使い方 1. 当コマンドは`how to create group`と入力されたら起動します。 2. 当コマンドはユーザーにグループの作り方を説明、実践します ### How to join channel + 当コマンドの使い方 1. 当コマンドは`how to join channel`と入力されたら起動します。 2. 当コマンドはユーザーにチャンネルに参加の仕方を説明、実践します。 ### It have to write Mention + 当コマンドの使い方 1. 当コマンドは`how to write mention`と入力されたら起動します。 2. 当コマンドはユーザーにメンションの使い方を説明、実践します。 ### How to send document and programing code + 当コマンドの使い方 1. 当コマンドは`how to send documents and programing code`と入力されたら起動します。 2. 当コマンドはユーザーにdocumentとcodeの送り方を説明と実践します。 ### The welcome text 【実装編】 + 前提条件 + general チャンネルにjoinするとDMに送信します。 + シーケンス 1. `Nebd`内の`welcome`に保存されているテキストを取得します。 2. その取得したテキストをDMにメッセージを送信します。 ### How to crate/delete channel 【実装編】 + 前提条件 + `How to create/delete channel`と入力されたら、当コマンドが動きます。 + `make_channel`の配列0番目に`作り方の説明`を保存します。 + `make_channel`の配列1番目に`GIF`を保存します。 + `make_channel`の配列2番目に`チャンネルとグループの説明`を保存します。 + `delete_channel`の配列0番目に`消し方の説明`を保存します。 + `delete_channel`の配列1番目に`GIF`を保存します。 + `delete_channel`の配列2番目に`チャンネルとグループの説明`を保存します。 + シーケンス  1. DMに`Nedb`に保存されている`make_channel`の配列の0番目(グループの作り方)を送信します。 2. DMに`Nedb`に保存されている`make_channel`の配列の1番目(GIF)を送信します。 3. DMに`Nedb`に保存されている`make_channel`の配列の2番目(チャンネルとグループの説明)を送信します。 4. 作られたチャンネルの`channel`,`user`を取得します。 5. DMに`Nedb`に保存されている`delete_channel`の配列の0番目(グループの消し方)を送信します。 6. DMに`Nedb`に保存されている`delete_channel`の配列の1番目(GIF)を送信します。 7. DMに`Nedb`に保存されている`delete_channel`の配列の2番目(チャンネルとグループの説明)を送信します。 + 配列0番目に`消し方の説明`を保存します。 + `delete_channel`の配列1番目に`GIF`を保存します。 + `delete_channel`の配列2番目に`チャンネルとグループの説明`を保存します。 ### How to create group 【実装編】 + 前提条件 + `how to create channel`と入力されたら、当コマンドが動きます。 + 配列0番目に`作り方の説明`を保存します。 + `make_gourp`の配列1番目に`GIF`を保存します。 + `make_group`の配列2番目に`チャンネルとグループの説明`を保存します。 + シーケンス 1. DMに`Nedb`に保存されている`make_group`の配列の0番目(グループの作り方)を送信します。 2. DMに`Nedb`に保存されている`make_group`の配列の1番目(GIF)を送信します。  3. DMに`Nedb`に保存されている`make_group`の配列の2番目(チャンネルとグループの説明)を送信します。 4. 作られたチャンネルの`group`,`user`を取得します。 5. 第5シーケンスで得られた`group`を削除します。 ### How to join channel 【実装編】 + 前提条件 + `how to join channel`と入力I されたら、当コマンドが動きます。 + `join_channel`の配列0番目にメンションの`説明`を保存します。 + `join_channel`の配列1番目にメンションの`GIF`を保存します。 + シーケンス 1. DMに`Nedb`に保存されている。`join_channel[0]`の配列0番目(チャンネルの入り方)をDMに送信します。 2. DMに`Nedb`に保存されている。`join_channel`の配列1番目(GIF)を送信します。 ### It have to write Mention 【実装編】 + 前提条件 + `write mention`と入力されたら、当コマンドが動きます。 + `mention`の配列0番目にメンションの`説明`を保存します。 + `mention`の配列1番目にメンションの`画像`を保存します。 + シーケンス 1. DMに`Nedb`に保存されている`mention`の配列の0番目をDMに送信します。 2. DMに`Nedb`に保存されている`mention`の配列の1番目をDMに送信します。 ### How to send document and programing code + 前提条件 + `how to send document and code`と入力されたら、当コマンドが動きます。 + `doucument_and_code`の配列0番目にドキュメントコードの`説明`を保存します。 + `document_and_code`の配列1番目にドキュメントコードの`GIF`を保存します。 + シーケンス   1. DMの`Nedb`に保存されている。`doucument_and_code`,配列0番目(ドキュメント、コードの送り方)を送信します。 2. DMに`Nedb`に保存されている。`document_and_code`の配列1番目(GIF)を送信します。 ### when chaneged spledsheet ## 説明 ### The difference between randam and general ### How to use star, notifications, pin and bot ### The limit of DM ### How to use call funciton ### Default setting ### recommend channel ## DB モデル一覧 ### nedb sample document ```jsonld= { "_id": "", "platform": "", "type":"user", "current_tutorial": "", "pass_list":[], "current_turotial_sequence":0[[]] } ,{ "_id": "", "platform": "web", "type":"tutorials", "make_channel":[], "delete_channel":[], "make_group":[], "mention":[], "join_channel":"", "document_and_code":"", },{ "_id": "", "platform": "mac", "type":"tutorials", "make_channel":[], "delete_channel":[], "make_group":[], "mention":[], "join_channel":"", "document_and_code":"", },{ "_id": "", "platform": "windows", "type":"tutorials", "make_channel":[], "delete_channel":[], "make_group":[], "mention":[], "join_channel":"", "document_and_code":"", },{ "_id": "", "platform": "ios", "type":"tutorials", "make_channel":[], "delete_channel":[], "make_group":[], "mention":[], "join_channel":"", "document_and_code":"", }, { "_id": "", "welcome_text":"" } ``` + ChannelsRegExp Model + find Method + 引数 + nedb (nedb_Object) + platform (String) + type (String) + このメソッドの内容 1.