From ac437684461ced1f17500f5370ed5437a1539efd Mon Sep 17 00:00:00 2001 From: nka21 <133028205+nka21@users.noreply.github.com> Date: Fri, 14 Nov 2025 13:40:10 +0000 Subject: [PATCH 1/3] =?UTF-8?q?update:=20Makefile=20=E3=81=AE=E4=BB=95?= =?UTF-8?q?=E6=A7=98=E3=82=B3=E3=83=B3=E3=83=86=E3=82=AD=E3=82=B9=E3=83=88?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CLAUDE.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CLAUDE.md b/CLAUDE.md index 8ec89dc..5298c3a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -69,6 +69,22 @@ reaction-bot/ 環境変数の設定方法は [.env.example](.env.example) を参照してください。 +## 開発ワークフロー + +### Makefileの使用 +このプロジェクトではMakefileを使用してビルドやテストを管理しています。 + +**重要**: ビルドやテストなどのコマンドを実行する際は、必ずMakefileの内容を確認し、定義されているターゲットを使用してください。 + +主要なコマンド: +- `make build` - バイナリをビルド(開発用) +- `make test` - テストを実行 +- `make fmt` - コードフォーマット +- `make lint` - 静的解析 +- `make run` - アプリケーションを実行 + +詳細は `make help` で確認できます。 + ## 実装規約 ### Go言語ベストプラクティス From fd232f0084c6f045a12086cbb0f41307c58bf671 Mon Sep 17 00:00:00 2001 From: nka21 <133028205+nka21@users.noreply.github.com> Date: Fri, 14 Nov 2025 13:40:44 +0000 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=E7=8F=BE=E5=9C=A8=E3=81=AEMsg?= =?UTF-8?q?=E3=81=8C=E8=BB=A2=E9=80=81=E5=85=88=E3=81=8B=E3=81=A9=E3=81=86?= =?UTF-8?q?=E3=81=8B=E3=81=AE=E5=88=A4=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/usecases/transfer_message.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/internal/usecases/transfer_message.go b/internal/usecases/transfer_message.go index a3ce831..80b6579 100644 --- a/internal/usecases/transfer_message.go +++ b/internal/usecases/transfer_message.go @@ -82,3 +82,17 @@ func (uc *TransferMessageUseCase) DeleteTransferredMessage( log.Printf("転送メッセージ %s を削除しました", transferredMsgID) return nil } + +// IsTransferredMessage - 指定されたメッセージIDが転送メッセージかどうかを判定する +func (uc *TransferMessageUseCase) IsTransferredMessage(msgID string) bool { + uc.mappingMutex.RLock() + defer uc.mappingMutex.RUnlock() + + // WHY: transferMsgMappingの値として存在する場合、そのメッセージは転送メッセージ + for _, transferredMsgID := range uc.transferMsgMapping { + if transferredMsgID == msgID { + return true + } + } + return false +} From 37e6c4b7653b4d3c7df47492c61705b1598512bd Mon Sep 17 00:00:00 2001 From: nka21 <133028205+nka21@users.noreply.github.com> Date: Fri, 14 Nov 2025 13:41:12 +0000 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20=E5=88=A4=E5=AE=9A=E3=83=AD?= =?UTF-8?q?=E3=82=B8=E3=83=83=E3=82=AF=E3=82=92=E4=BD=BF=E3=81=A3=E3=81=A6?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E5=88=86=E5=B2=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/interfaces/discord_handler.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/internal/interfaces/discord_handler.go b/internal/interfaces/discord_handler.go index a62b9ed..1782a09 100644 --- a/internal/interfaces/discord_handler.go +++ b/internal/interfaces/discord_handler.go @@ -35,6 +35,12 @@ func (h *DiscordHandler) HandleReactionAdd(s *discordgo.Session, r *discordgo.Me return } + // WHY: 転送メッセージへのリアクションは無視する(転送の連鎖を防ぐ) + if h.transferUseCase.IsTransferredMessage(r.MessageID) { + log.Printf("メッセージ %s は転送メッセージのため、リアクション追加を無視します", r.MessageID) + return + } + originalMsg, err := s.ChannelMessage(r.ChannelID, r.MessageID) if err != nil { log.Printf("メッセージ取得に失敗: %v", err) @@ -67,6 +73,12 @@ func (h *DiscordHandler) HandleReactionRemove(s *discordgo.Session, r *discordgo return } + // WHY: 転送メッセージへのリアクションは無視する(転送の連鎖を防ぐ) + if h.transferUseCase.IsTransferredMessage(r.MessageID) { + log.Printf("メッセージ %s は転送メッセージのため、リアクション削除を無視します", r.MessageID) + return + } + originalMsg, err := s.ChannelMessage(r.ChannelID, r.MessageID) if err != nil { log.Printf("メッセージ取得に失敗: %v", err)