Skip to content

✨ ブログ記事を新規登録したら Discord の専用チャンネルに通知する - #357

Open
Tivo0921 wants to merge 1 commit into
mainfrom
feature/blog-discord-notification
Open

Tivo0921 wants to merge 1 commit into
mainfrom
feature/blog-discord-notification

Conversation

@Tivo0921

Copy link
Copy Markdown
Contributor

closes #356

概要

外部ブログ記事を新規登録したとき、Discord の専用チャンネルに Bot で通知します。編集・削除では送りません。

通知の中身

  • 書いた人を Discord のメンション (<@id>) で表示
  • タイトル (元記事へのリンク、256 文字まで)
  • 説明 (200 文字で切って「…」。絵文字を途中で切らない)
  • サムネイル画像 / 媒体 / 公開日 (あるものだけ)

実装

  • lib/blog-notification.ts: Embed の組み立て (buildBlogNotification) と送信 (notifyBlogChannel)
  • app/api/blogs/route.ts: 登録成功後に Next.js の after() で送信。レスポンスを待たせず、通知に失敗しても登録は成功のまま (ログだけ残す)
  • lib/discord-dm.ts: DiscordEmbed 型に url / image を追加
  • 送信先は環境変数 BLOG_NOTIFICATION_CHANNEL_ID。未設定 (空文字・空白のみ) の環境では送らない
  • infra/variables.tf: prd だけに BLOG_NOTIFICATION_CHANNEL_ID = "1563415197232795718" を追加 (dev / stg は通知しない)

マージ後に必要な作業

  • terraform apply (prd)
  • 本番 Bot が通知チャンネルで「チャンネルを見る」「メッセージを送信」できることを確認

テスト

  • 追加 14 件を含め全 362 件パス
    • Embed の内容、任意項目が無い場合、説明の切り詰め (サロゲートペア・ちょうど 200 文字)、タイトル 256 文字上限
    • チャンネル未設定なら送らない / Discord エラー時は例外
    • API: 登録成功で通知、通知失敗でも 200、入力不正・保存失敗・未ログイン・退会済みでは通知しない
  • 開発用 Bot から Lusy サーバーのテストチャンネルへ実際に 1 件送り、見た目を確認済み

🤖 Generated with Claude Code

- 書いた人をメンションし、タイトル(元記事へのリンク)・説明・サムネイル・媒体・公開日を Embed で出す
- 通知は after() でレスポンスのあとに送り、失敗しても登録は成功のままにする
- 通知先は BLOG_NOTIFICATION_CHANNEL_ID。本番だけ設定し、未設定の環境では送らない

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Tivo0921 Tivo0921 self-assigned this Oct 24, 2026
@Tivo0921
Tivo0921 requested a review from atchonburike October 24, 2026 06:03
@github-actions

Copy link
Copy Markdown

Deployed on https://dev-pr-357-birbz3fm6q-an.a.run.app

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] ブログ記事を新規登録したら Discord の専用チャンネルに通知する

1 participant