---
# System prepended metadata

title: H2Bot開発者ドキュメント
tags: [個人開発]

---

H2Bot開発者ドキュメント
=============================
###### tags: `個人開発`

追加・修正についてはリポジトリの[issue](https://github.com/eiganken/h2bot/issues)に投げてください！

環境構築
-----------------------------
### Gitのインストール
H2Bot開発はマグマが流れるように流動的です。流れを制御するために、Gitを使います。Gitのインストールは[Gitのインストール](https://git-scm.com/book/ja/v2/%E4%BD%BF%E3%81%84%E5%A7%8B%E3%82%81%E3%82%8B-Git%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)を参考にしましょう。
### リポジトリのclone
Gitのインストールが終わったら、次にH2Botの開発拠点であるリポジトリをクローンしましょう。リポジトリのクローンは[リポジトリをクローンする](https://docs.github.com/ja/github/creating-cloning-and-archiving-repositories/cloning-a-repository)を参考にしましょう。
### (物理環境向け) Pythonの設定
#### 1. discordライブラリをインストール
~~みなさんテスト環境だとdiscordライブラリいりませんね...~~
discordライブラリをインストールしましょう。
```
$pip install discord.py
#or
$pip3 install discord.py
```
#### 2. import pathを追加
H2Botアプリケーションでは、異次元モジュールインポートを行います。力に目覚めるためにプロジェクトディレクトリ内の``ANYPATH/h2bot/h2bot``, ``ANYPATH/h2bot/database``, ``ANYPATH/h2bot/command``をPythonのimport_pathに追加しましょう。

### (仮想環境向け) Dockerの設定
準備中です。

### test.dbの配置
テスト用のデータベース``test.db``については、チャットもしくはメッセージで送ります。寝坊以外で返信しない可能性はほぼないです。
次の場所にダウンロードした``test.db``を配置してください。
```
---h2bot
 |---database
   |---test.db
```

開発作業
-----------------------------
### 開発用Gitブランチ
開発用の大根ブランチは``develop``です。新たなコマンドを追加してテストする場合は、``develop``ブランチから``feature/cmd-add-<command_name>``ブランチを派生させて開発しましょう。もし、コマンドに変更があるのなら``feature/cmd-upd-<command_name>``ブランチを派生させましょう。
### コマンドの実装
コマンドを実装したいときは、以下のように``NEW_COMMAND``を実装しましょう。
```
---h2bot
 |---command
   |---NEW_COMMAND
     |---__init__.py
     |---manual.yml
```
#### __init__.py
コマンドの処理を記述するpythonファイルです。``run()``関数を必ず定義してください。以下は``creators``コマンドの実装例です。
```=python3
import database as db


def run(props):
    result = db.get_col_values_of('creator_id')
    creators = [row[0] for row in result]
    return to_string(creators)

def to_string(result_raw):
    s = ""
    for creator in result_raw:
        s += "@" + creator + "\n"
    return s
```
#### manual.yml
コマンドのマニュアルを記述するyamlファイルです。
コマンドの文字列``val``と説明``desc``を必ず定義してください。以下は``creators``コマンドの実装例です。
```
val: creators
desc: 過去にエチ度を感じた絵の絵師一覧を表示する
```

H2Botアプリケーションの実行
-----------------------------
環境構築(とコマンドの実装)が完了したところで、H2Botアプリケーションを実行してみましょう。
```
$python3 app.py
```
``config.yml``内で``state: test``のとき、自身のローカル環境でpythonアプリとしてテスト実行されます。実装したコマンドはここで試すことができます。
```
$python3 app.py
enter your test command > /echi creators
```
