鳩botでは主に次のことができます。
- 雨雲情報 ...
amesh [text]
で指定した地名・住所[text]の雨雲情報を画像で表示します。 - 最新の地震情報 ...
eq
で最新の地震情報を3件表示します。 - パワーワードの登録、表示 ...
text
で登録したパワーワードを表示します。 - 突然の死吹き出しで整形 ...
>< [text]
で文字列[text]を「突然の死」吹き出しで整形します。
鳩botは自分のPC上で動かすことができます。
鳩botを使うには以下が必要です。
- Dockerが動作するPC
- Slack API Token (Slack API Tokenの取得手順) (Slackで動かす場合のみ)
- Discord Bot Token (Discord Bot Tokenの取得手順) (Discordで動かす場合のみ)
- Misskeyアクセストークン (Misskeyアクセストークンの取得手順) (Misskeyで動かす場合のみ)
- Yahoo API Token (Yahoo API Tokenの取得手順)
- OpenAI API Key (OpenAI API Keyの取得手順)
-
事前にSlack API TokenとYahoo API Tokenを取得します。
-
Launch a demo app · Fly Docsに記載されている手順で
fly
コマンドをインストールします。 -
Launch a demo app · Fly Docsに記載されている手順でfly.ioへの登録・ログインを行います。
-
Dashboard · Fly内の
Billing
からクレジットカードを登録します (無料枠で使用する場合も必須)。 -
yq
コマンドのGitHubに記載されている手順でyq
コマンドをインストールします。 -
このリポジトリをcloneします。
安定版を使う場合は
-b master
を指定します。最新の開発版を使う場合は指定不要です。git clone -b master https://github.com/dev-hato/hato-bot.git cd hato-bot
-
.env
ファイルを作成しSlack API Token、PostgreSQLの認証情報、Yahoo API Tokenなどを記述します。.env.example
をコピーして使うとよいでしょう。MODEに
discord
を指定すると、DiscordのBotとして動作します。MODEに
misskey
を指定すると、自分のいるサーバーからのメンションに限って反応するMisskeyのBotとして動作します。 -
fly.toml
ファイルを作成します。fly.template.toml
をコピーし、TODOコメントに従って編集すると良いでしょう。 -
次のコマンドを実行してfly.ioへのデプロイを行います。
./flyio_deploy.sh
自分のPCで動かすこともできます。
-
事前にSlack API TokenとYahoo API Tokenを取得します。
-
hadolintをインストールします。
-
このリポジトリをcloneします。
安定版を使う場合は
-b master
を指定します。最新の開発版を使う場合は指定不要です。git clone -b master https://github.com/dev-hato/hato-bot.git cd hato-bot
または Release から最新の安定版をダウンロードして解凍します。
-
必要に応じてパッケージをインストールします。
uv python install uv sync npm install
-
.env
ファイルを作成しSlack API Token、PostgreSQLの認証情報、Yahoo API Tokenなどを記述します。.env.example
をコピーして使うとよいでしょうMODEに
discord
を指定すると、DiscordのBotとして動作します。MODEに
misskey
を指定すると、自分のいるサーバーからのメンションに限って反応するMisskeyのBotとして動作します。 -
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
-
コードの変更はdocker composeの再起動で適用できます。
export TAG_NAME=$(git symbolic-ref --short HEAD | sed -e "s:/:-:g") docker compose restart
開発時は自動的にDockerイメージの再ビルドが行われ反映されます。
npm run lint
-
鳩botに対しコマンドを実行したいときは
post_command.py
を使うと便利です。uv run post_command.py --channel {投稿先のチャンネルのchannel id} \ --user {自分のuser_id} \ "{hato-botのコマンド}"
-
またはngrokを使うこともできます。
./ngrok http 3000
開発に必要なパッケージと pre-commit
のインストールを行います。
uv python install
uv sync --dev
uv tool run pre-commit install
- コードを整形する場合は
uv tool run autopep8 --in-place --recursive .
を実行します。
-
鳩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 を参照してください。
-
バグ報告や機能追加の要望がある場合は Issues の
New Issue
から報告をお願いします。 -
プルリクエストも大歓迎です。
Botで利用しているサービスのクレジットを記載します。