鳩botでは主に次のことができます。
amesh [text]
で指定した地名・住所[text]の雨雲情報を画像で表示します。eq
で最新の地震情報を3件表示します。text
で登録したパワーワードを表示します。>< [text]
で文字列[text]を「突然の死」吹き出しで整形します。鳩botは自分のPC上で動かすことができます。
鳩botを使うには以下が必要です。
事前に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 から最新の安定版をダウンロードして解凍します。
必要に応じてパッケージをインストールします。
pipenv install
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
を使うと便利です。
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で使用可能なコマンドは次の通りです。
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」と返す。
バグ報告や機能追加の要望がある場合は Issues の
New Issue
から報告をお願いします。
プルリクエストも大歓迎です。
Botで利用しているサービスのクレジットを記載します。