---
# System prepended metadata

title: Slack Tutorial Bot
tags: [JP, API, Bot, Slack]

---

# 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`の配列０番目に`作り方の説明`を保存します。
  + `make_channel`の配列１番目に`GIF`を保存します。
  + `make_channel`の配列２番目に`チャンネルとグループの説明`を保存します。
  + `delete_channel`の配列０番目に`消し方の説明`を保存します。
  + `delete_channel`の配列１番目に`GIF`を保存します。
  + `delete_channel`の配列２番目に`チャンネルとグループの説明`を保存します。 
+ シーケンス　
  1. DMに`Nedb`に保存されている`make_channel`の配列の0番目(グループの作り方)を送信します。
  2. DMに`Nedb`に保存されている`make_channel`の配列の１番目(GIF)を送信します。
  3. DMに`Nedb`に保存されている`make_channel`の配列の２番目(チャンネルとグループの説明)を送信します。
  4. 作られたチャンネルの`channel`,`user`を取得します。
  5. DMに`Nedb`に保存されている`delete_channel`の配列の0番目(グループの消し方)を送信します。
  6. DMに`Nedb`に保存されている`delete_channel`の配列の１番目(GIF)を送信します。
  7. DMに`Nedb`に保存されている`delete_channel`の配列の２番目(チャンネルとグループの説明)を送信します。

  + 配列０番目に`消し方の説明`を保存します。
  + `delete_channel`の配列１番目に`GIF`を保存します。
  + `delete_channel`の配列２番目に`チャンネルとグループの説明`を保存します。 
### How to create group 【実装編】
+ 前提条件
  + `how to create channel`と入力されたら、当コマンドが動きます。
  + 配列０番目に`作り方の説明`を保存します。
  + `make_gourp`の配列１番目に`GIF`を保存します。
  + `make_group`の配列２番目に`チャンネルとグループの説明`を保存します。 
+ シーケンス
  1. DMに`Nedb`に保存されている`make_group`の配列の0番目(グループの作り方)を送信します。
  2. DMに`Nedb`に保存されている`make_group`の配列の１番目(GIF)を送信します。　 
  3.　DMに`Nedb`に保存されている`make_group`の配列の２番目(チャンネルとグループの説明)を送信します。
  4. 作られたチャンネルの`group`,`user`を取得します。
  5. 第５シーケンスで得られた`group`を削除します。
### How to join channel 【実装編】
+ 前提条件
  + `how to join channel`と入力I されたら、当コマンドが動きます。
  + `join_channel`の配列０番目にメンションの`説明`を保存します。
  + `join_channel`の配列１番目にメンションの`GIF`を保存します。 
+ シーケンス
  1.　DMに`Nedb`に保存されている。`join_channel[0]`の配列0番目（チャンネルの入り方）をDMに送信します。
  2.　DMに`Nedb`に保存されている。`join_channel`の配列1番目（GIF）を送信します。
### It have to write Mention 【実装編】
+ 前提条件
  + `write mention`と入力されたら、当コマンドが動きます。
  + `mention`の配列０番目にメンションの`説明`を保存します。
  + `mention`の配列１番目にメンションの`画像`を保存します。
+ シーケンス
  1.　DMに`Nedb`に保存されている`mention`の配列の０番目をDMに送信します。
  2.　DMに`Nedb`に保存されている`mention`の配列の1番目をDMに送信します。
### How to send document and programing code
+ 前提条件
  + `how to send document and code`と入力されたら、当コマンドが動きます。
  + `doucument_and_code`の配列０番目にドキュメントコードの`説明`を保存します。
  + `document_and_code`の配列１番目にドキュメントコードの`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. 
