Skip to content

Commit

Permalink
✨ ログをtraQに流す
Browse files Browse the repository at this point in the history
  • Loading branch information
ikura-hamu committed Aug 23, 2024
1 parent d2d24e2 commit ba015a6
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 26 deletions.
5 changes: 5 additions & 0 deletions handler/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package handler
import (
"context"
"fmt"
"log"
"strconv"
"strings"
"text/template"
Expand All @@ -21,6 +22,8 @@ type BotHandler struct {
*Config
}

var logger = log.Default()

func NewBotHandler(traqClient service.Traq, gitHubClient service.GitHub, ir repository.Invitation) (*BotHandler, error) {
ctx := context.Background()
botUserID, err := traqClient.GetBotUser(ctx)
Expand All @@ -33,6 +36,8 @@ func NewBotHandler(traqClient service.Traq, gitHubClient service.GitHub, ir repo
return nil, fmt.Errorf("failed to load config: %w", err)
}

logger.SetOutput(traqClient.NewWriter(conf.botChannelID))

h := &BotHandler{
traqClient: traqClient,
githubClient: gitHubClient,
Expand Down
35 changes: 17 additions & 18 deletions handler/message_created.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package handler
import (
"context"
"fmt"
"log"
"regexp"
"slices"
"strings"
Expand Down Expand Up @@ -54,7 +53,7 @@ func (h *BotHandler) MessageCreated(p *payload.MessageCreated) {
ctx := context.Background()
_, err := h.traqClient.PostMessage(ctx, p.Message.ChannelID, "pong")
if err != nil {
log.Println("failed to post message: ", err)
logger.Println("failed to post message: ", err)
}
},
},
Expand All @@ -67,7 +66,7 @@ func (h *BotHandler) MessageCreated(p *payload.MessageCreated) {
ctx := context.Background()
_, err := h.traqClient.PostMessage(ctx, p.Message.ChannelID, ":shiran_zubora.ex-large:")
if err != nil {
log.Println("failed to post message: ", err)
logger.Println("failed to post message: ", err)
}
},
},
Expand Down Expand Up @@ -103,7 +102,7 @@ func (h *BotHandler) invite(p *payload.MessageCreated) {
if len(splitText) < 2 {
_, err := h.traqClient.PostMessage(ctx, p.Message.ChannelID, inviteCommandMessage("引数が足りません"))
if err != nil {
log.Println("failed to post message: ", err)
logger.Println("failed to post message: ", err)
}
return
}
Expand All @@ -113,15 +112,15 @@ func (h *BotHandler) invite(p *payload.MessageCreated) {
if slices.Contains([]string{"-h", "-help", "--help"}, splitText[0]) {
_, err := h.traqClient.PostMessage(ctx, p.Message.ChannelID, inviteCommandMessage("/invite は、GitHubのOrganizationに招待するためのコマンドです。"))
if err != nil {
log.Println("failed to post message: ", err)
logger.Println("failed to post message: ", err)
}
return
}

if len(splitText)%2 != 0 || len(splitText) == 0 {
_, err := h.traqClient.PostMessage(ctx, p.Message.ChannelID, inviteCommandMessage("引数の数が合いません"))
if err != nil {
log.Println("failed to post message: ", err)
logger.Println("failed to post message: ", err)
}
return
}
Expand All @@ -134,30 +133,30 @@ func (h *BotHandler) invite(p *payload.MessageCreated) {

exist, err := h.githubClient.CheckUserExist(ctx, gitHubID)
if err != nil {
log.Println("failed to check user exist: ", err)
logger.Println("failed to check user exist: ", err)
return
}
if !exist {
_, err := h.traqClient.PostMessage(ctx, p.Message.ChannelID,
fmt.Sprintf("GitHubユーザー %s は存在しません", gitHubID))
if err != nil {
log.Println("failed to post message: ", err)
logger.Println("failed to post message: ", err)
}

return
}

inOrg, err := h.githubClient.CheckUserInOrg(ctx, gitHubID)
if err != nil {
log.Println("failed to check user in org: ", err)
logger.Println("failed to check user in org: ", err)
return
}

if inOrg {
_, err := h.traqClient.PostMessage(ctx, p.Message.ChannelID,
fmt.Sprintf("GitHubユーザー %s は既に %s に所属しています", gitHubID, h.githubClient.OrgName()))
if err != nil {
log.Println("failed to post message: ", err)
logger.Println("failed to post message: ", err)
}

return
Expand All @@ -175,7 +174,7 @@ func (h *BotHandler) invite(p *payload.MessageCreated) {

messageID, err := h.traqClient.PostMessage(ctx, h.botChannelID, invitationMessage)
if err != nil {
log.Printf("failed to post message: %v", err)
logger.Printf("failed to post message: %v", err)
}

invitations := make([]*model.Invitation, 0, len(splitText)/2)
Expand All @@ -185,18 +184,18 @@ func (h *BotHandler) invite(p *payload.MessageCreated) {

err = h.ir.CreateInvitation(ctx, invitations)
if err != nil {
log.Println("failed to create invitation: ", err)
logger.Println("failed to create invitation: ", err)
return
}

err = h.traqClient.AddStamp(ctx, messageID, h.acceptStampID, 1)
if err != nil {
log.Println("failed to add stamp: ", err)
logger.Println("failed to add stamp: ", err)
return
}
err = h.traqClient.AddStamp(ctx, messageID, h.rejectStampID, 1)
if err != nil {
log.Println("failed to add stamp: ", err)
logger.Println("failed to add stamp: ", err)
return
}

Expand All @@ -212,14 +211,14 @@ func (h *BotHandler) list(p *payload.MessageCreated) {
_, err := h.traqClient.PostMessage(ctx, p.Message.ChannelID,
listCommandMessage("/list は、招待一覧を表示するためのコマンドです。"))
if err != nil {
log.Println("failed to post message: ", err)
logger.Println("failed to post message: ", err)
}
return
}

invitations, err := h.ir.GetAllInvitations(ctx)
if err != nil {
log.Println("failed to get invitations: ", err)
logger.Println("failed to get invitations: ", err)
return
}

Expand All @@ -230,7 +229,7 @@ func (h *BotHandler) list(p *payload.MessageCreated) {

_, err = h.traqClient.PostMessage(ctx, p.Message.ChannelID, message)
if err != nil {
log.Println("failed to post message: ", err)
logger.Println("failed to post message: ", err)
}
}

Expand All @@ -241,7 +240,7 @@ func (h *BotHandler) help(p *payload.MessageCreated) {

_, err := h.traqClient.PostMessage(ctx, p.Message.ChannelID, helpDoc)
if err != nil {
log.Println("failed to post message: ", err)
logger.Println("failed to post message: ", err)
}
}

Expand Down
15 changes: 7 additions & 8 deletions handler/message_stamps_updated.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"context"
"errors"
"fmt"
"log"
"slices"

"github.com/traP-jp/members_bot/repository"
Expand All @@ -25,7 +24,7 @@ func (h *BotHandler) AcceptOrReject(p *payload.BotMessageStampsUpdated) {

adminIDs, err := h.traqClient.GetGroupMemberIDs(ctx, h.adminGroupID)
if err != nil {
log.Printf("failed to get group member IDs: %v", err)
logger.Printf("failed to get group member IDs: %v", err)
return
}

Expand All @@ -34,7 +33,7 @@ func (h *BotHandler) AcceptOrReject(p *payload.BotMessageStampsUpdated) {
return
}
if err != nil {
log.Printf("failed to get invitations: %v", err)
logger.Printf("failed to get invitations: %v", err)
return
}

Expand Down Expand Up @@ -69,21 +68,21 @@ func (h *BotHandler) AcceptOrReject(p *payload.BotMessageStampsUpdated) {

err = h.traqClient.AddStamp(ctx, p.MessageID, h.inactiveStampID, 1)
if err != nil {
log.Printf("failed to add stamp: %v", err)
logger.Printf("failed to add stamp: %v", err)
return
}

if reject {
err := h.ir.DeleteInvitations(ctx, p.MessageID)
if err != nil {
log.Printf("failed to delete invitations: %v", err)
logger.Printf("failed to delete invitations: %v", err)
}
return
}

err = h.githubClient.SendInvitations(ctx, invitations)
if err != nil {
log.Printf("failed to send invitations: %v", err)
logger.Printf("failed to send invitations: %v", err)
return
}

Expand All @@ -94,11 +93,11 @@ func (h *BotHandler) AcceptOrReject(p *payload.BotMessageStampsUpdated) {

_, err = h.traqClient.PostMessage(ctx, h.botChannelID, message)
if err != nil {
log.Printf("failed to post message: %v", err)
logger.Printf("failed to post message: %v", err)
}

err = h.ir.DeleteInvitations(ctx, p.MessageID)
if err != nil {
log.Printf("failed to delete invitations: %v", err)
logger.Printf("failed to delete invitations: %v", err)
}
}
20 changes: 20 additions & 0 deletions service/impl/traq.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package impl
import (
"context"
"fmt"
"io"

"github.com/traP-jp/members_bot/model"
"github.com/traP-jp/members_bot/service"
Expand Down Expand Up @@ -72,3 +73,22 @@ func (t *Traq) UpdateUserBio(ctx context.Context, bio string) error {

return nil
}

func (t *Traq) NewWriter(channelID string) io.Writer {
return &TraqWriter{channelID: channelID, t: t}
}

var _ io.Writer = (*TraqWriter)(nil)

type TraqWriter struct {
channelID string
t *Traq
}

func (tw *TraqWriter) Write(p []byte) (n int, err error) {
_, err = tw.t.PostMessage(context.Background(), tw.channelID, string(p))
if err != nil {
return 0, err
}
return len(p), nil
}
3 changes: 3 additions & 0 deletions service/traq.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ package service

import (
"context"
"io"

"github.com/traP-jp/members_bot/model"
)
Expand All @@ -14,4 +15,6 @@ type Traq interface {
AddStamp(ctx context.Context, messageID, stampID string, count int) error
GetGroupMemberIDs(ctx context.Context, groupID string) ([]string, error)
UpdateUserBio(ctx context.Context, bio string) error

NewWriter(channelID string) io.Writer
}

0 comments on commit ba015a6

Please sign in to comment.