Skip to content

dev-hato/hato-bot

Repository files navigation

鳩bot - 愛嬌のあるBot

badge

鳩botでは主に次のことができます。

  • 雨雲情報 ... amesh [text] で指定した地名・住所[text]の雨雲情報を画像で表示します。
  • 最新の地震情報 ... eq で最新の地震情報を3件表示します。
  • パワーワードの登録、表示 ... text で登録したパワーワードを表示します。
  • 突然の死吹き出しで整形 ... >< [text] で文字列[text]を「突然の死」吹き出しで整形します。

hato

鳩botを動かす

鳩botは自分のPC上で動かすことができます。

必要なもの

鳩botを使うには以下が必要です。

自分のPC上で動かす

自分のPCで動かすこともできます。

  1. 事前にSlack API TokenとYahoo API Tokenを取得します。

  2. hadolintをインストールします。

  3. このリポジトリをcloneします。

    安定版を使う場合は -b master を指定します。最新の開発版を使う場合は指定不要です。

    git clone -b master https://github.com/dev-hato/hato-bot.git
    cd hato-bot

    または Release から最新の安定版をダウンロードして解凍します。

  4. 必要に応じてパッケージをインストールします。

    pipenv install
    npm install
  5. .env ファイルを作成し Slack API Token、PostgreSQLの認証情報、Yahoo API Tokenなどを記述します。

    .env.example をコピーして使うとよいでしょう

    MODEに discord を指定すると、DiscordのBotとして動作します。

    DISCORD_API_TOKENにDiscordのBot Tokenを指定します。

    DISCORD_API_TOKENには Read Messages/View Channels と、 Send Messages の権限が必要です。

    MODEに misskey を指定すると、自分のサーバーからのメンションに限って反応するMisskeyのBotとして動作します。

    MISSKEY_URLにBotのいるMisskeyサーバーのドメインを指定します。

    MISSKEY_API_TOKENにMisskeyのBotのアクセストークンを指定します。

    MISSKEY_API_TOKENには ドライブを操作する, ノートを作成・削除する, アカウントの情報を見る の権限が必要です。

  6. docker composeで鳩botとPostgreSQLを起動します。

    export TAG_NAME=$(git symbolic-ref --short HEAD | sed -e "s:/:-:g")
    docker compose up -d --wait

    開発時は代わりに次のコマンドを実行します。

    export TAG_NAME=$(git symbolic-ref --short HEAD | sed -e "s:/:-:g")
    docker compose -f docker-compose.yml -f dev.base.docker-compose.yml -f dev.docker-compose.yml build
    docker compose -f docker-compose.yml -f dev.base.docker-compose.yml -f dev.docker-compose.yml watch
  7. コードの変更はdocker composeの再起動で適用できます。

    export TAG_NAME=$(git symbolic-ref --short HEAD | sed -e "s:/:-:g")
    docker compose restart

    開発時は自動的にDockerイメージの再ビルドが行われ反映されます。

lintをかける方法

npm run lint

コマンドの実行方法

  • 鳩botに対しコマンドを実行したいときは post_command.py を使うと便利です。

    pipenv run python post_command.py --channel {投稿先のチャンネルのchannel id} \
                                      --user {自分のuser_id} \
                                      "{hato-botのコマンド}"
  • またはngrokを使うこともできます。

    ./ngrok http 3000

コミットする前に行うこと

開発に必要なパッケージと pre-commit のインストールを行います。

pipenv install --dev
pipenv run pre-commit install

補足

  • コードを整形する場合は pipenv run autopep8 --in-place --recursive . を実行します。

鳩botコマンド一覧

  • 鳩botで使用可能なコマンドは次の通りです。

    amesh ... 東京のamesh(雨雲情報)を表示する。
    amesh [text] ... 指定した地名・住所・郵便番号[text]のamesh(雨雲情報)を表示する。
    amesh [緯度 (float)] [経度 (float)] ... 指定した座標([緯度 (float)], [経度 (float)])のamesh(雨雲情報)を表示する。
    amedas ... 東京のamedas(気象情報)を表示する。
    amedas [text] ... 指定した地名・住所・郵便番号[text]のamedas(気象情報)を表示する。
    amedas [緯度 (float)] [経度 (float)] ... 指定した座標([緯度 (float)], [経度 (float)])のamedas(気象情報)を表示する。
    電力 ... 東京電力管内の電力使用率を表示する。
    標高 ... 東京の標高を表示する。
    標高 [text] ... 指定した地名・住所・郵便番号[text]の標高を表示する。
    標高 [緯度 (float)] [経度 (float)] ... 指定した座標([緯度 (float)], [経度 (float)])の標高を表示する。
    eq ... 最新の地震情報を3件表示する。
    textlint [text] ... 文字列[text]を校正する。
    text list ... パワーワード一覧を表示する。
    text random ... パワーワードをひとつ、ランダムで表示する。
    text show [int] ... 指定した番号[int]のパワーワードを表示する。
    text add [text] ... パワーワードに[text]を登録する。
    text delete [int] ... 指定した番号[int]のパワーワードを削除する。
    >< [text] ... 文字列[text]を吹き出しで表示する。
    にゃーん ... 「よしよし」と返す。
    おみくじ ... おみくじを引いて返す。
    version ... バージョン情報を表示する。
    chat [text] ... ChatGPTで文章生成する。
    画像生成 [text] ... openAIのImage generationで画像生成する。[text]は英語での入力推奨。
    ping ... 「ping」したら「PONG」と返す。
    

バージョンアップによる変更点

  • バージョンアップによる変更点についてはCHANGELOG を参照してください。

バグ報告や機能の要望について

  • バグ報告や機能追加の要望がある場合は IssuesNew Issue から報告をお願いします。

  • プルリクエストも大歓迎です。

クレジット

Botで利用しているサービスのクレジットを記載します。