Skip to content

textlint-rule-preset-smarthr に基づいて Slack上から文書のlintとfixを行えるbotです。

License

Notifications You must be signed in to change notification settings

kufu/smarthr-textlint-bot

Repository files navigation

smarthr-textlint-bot

textlint の SmartHR 用ルールプリセットを使って、Slack 上から文書のlintfixを行える bot です。

何ができる?

  • Slack 内で、bot のメンションを付けてメッセージを送信すると、textlint を通して文書のチェックと、自動校正を実行します。

開発方法

bot 開発にはBoltを使っています。 ローカルで bot アプリを起動するには、以下のステップに従ってください。

  • プロジェクトのルートディレクトリに .envファイルを作って、必要な情報を設定
  • yarnまたはnpm installを実行して依存ライブラリをインストール
  • yarn devまたはnpm run devを実行して、アプリを起動
  • ngrok をインストールしていなければインストール - https://ngrok.com/
    • brew install ngrokのインストールを推奨します。
  • 別のターミナルでngrok http 3000を実行して公開エンドポイントを立ち上げる

.envを配置して Bot Token と Signing Secret を設定

SLACK_BOT_TOKEN=xoxb-111-111-xxx
SLACK_SIGNING_SECRET=xxx

ローカルアプリを起動

node --version # v10.13.0 以上
yarn
yarn dev` # 起動すると https://localhost:3000/slack/events でリクエストを受け付けます

ngrokSlackからのリクエストをフォワードするために起動

ngrok をまだインストールしていなければ、ダウンロードして設定します。以下のステップで、適切に設定できたか確認します。

# ローカルでアプリが立ち上がっていることを確認
curl -I -XPOST https://localhost:3000/slack/events # HTTP/1.1 401 Unauthorized が返ってくるはず

# 別のターミナルで実行
./ngrok http 3000

# ngrok の有償プランを使っているなら以下のように固定のサブドメインを指定できます
./ngrok http 3000 --subdomain {whatever-you-want}

# 再度、公開エンドポイントからリクエストをして、同じように 401 が返ってくるか確認
curl -I -XPOST https://{your random subdomain here}.ngrok.io/slack/events # HTTP/1.1 401 Unauthorized が返ってくれば OK

デプロイ方法

  • Heroku CLI をインストール、heroku helpでインストールされているか確認
  • heroku loginでログイン、heroku auth:whoamiでログインできるているか確認
  • Heroku のデプロイ先を設定
  • 更新や修正を行って origin に push する
  • git push heroku mainを実行し、Heroku に deploy する
  • 完了

詳細な手順: https://slack.dev/bolt-js/ja-jp/deployments/heroku

Heroku CLIをインストール

brew install heroku/brew/heroku

Heroku のデプロイ先指定

heroku git:remote -a smarthr-textlint-bot-staging

HerokuへDeploy

Deploy

About

textlint-rule-preset-smarthr に基づいて Slack上から文書のlintとfixを行えるbotです。

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published