Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package org.sopt.makers.crew.main.global.exception;

public class CustomSlackException extends RuntimeException {
public CustomSlackException() {
super();
}

public CustomSlackException(String message) {
super(message);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public void init() {

slackMessageService.sendMention(ctx.client(), event);
} catch (Exception e) {
log.error("Failed to process reaction event", e);
log.warn("Failed to process reaction event", e);
}

return ctx.ack();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package org.sopt.makers.crew.main.slack;

import java.io.IOException;
import java.util.List;

import org.sopt.makers.crew.main.entity.slack.MakersUserSlack;
import org.sopt.makers.crew.main.entity.slack.MakersUserSlackRepository;
import org.sopt.makers.crew.main.entity.slack.SlackMessageTemplate;
import org.sopt.makers.crew.main.entity.slack.SlackMessageTemplateRepository;
import org.sopt.makers.crew.main.global.exception.CustomSlackException;
import org.sopt.makers.crew.main.slack.dto.SlackEmojiEventDto;
import org.sopt.makers.crew.main.slack.dto.SlackEmojiEventDto.SlackDeleteEmojiEventDto;
import org.sopt.makers.crew.main.slack.dto.SlackEmojiEventDto.SlackUpdateEmojiEventDto;
Expand All @@ -15,6 +17,7 @@
import org.springframework.transaction.annotation.Transactional;

import com.slack.api.methods.MethodsClient;
import com.slack.api.methods.SlackApiException;
import com.slack.api.methods.response.chat.ChatPostMessageResponse;
import com.slack.api.model.event.ReactionAddedEvent;

Expand All @@ -34,7 +37,7 @@ public class SlackMessageService {
@Transactional
public void insertEvent(SlackEmojiEventDto dto) {
if (makersUserSlackRepository.existsByCallEmojiAndUserSlackId(dto.getCallEmoji(), dto.getUserSlackId()))
throw new IllegalArgumentException("Call Emoji already exists");
throw new CustomSlackException("Call Emoji already exists");

makersUserSlackRepository.save(dto.toEntity());
}
Expand All @@ -43,7 +46,7 @@ public void insertEvent(SlackEmojiEventDto dto) {
public void updateEvent(SlackUpdateEmojiEventDto dto) {
MakersUserSlack makersUserSlack = makersUserSlackRepository.findByCallEmojiAndUserSlackId(dto.getCallEmoji(),
dto.getUserSlackId())
.orElseThrow(() -> new IllegalArgumentException(
.orElseThrow(() -> new CustomSlackException(
"Invalid call emoji or user slack Id : " + dto.getCallEmoji() + " " + dto.getUserSlackId()));

makersUserSlack.updateEmoji(dto.getUpdateCallEmoji());
Expand All @@ -52,19 +55,20 @@ public void updateEvent(SlackUpdateEmojiEventDto dto) {
@Transactional
public void deleteEvent(SlackDeleteEmojiEventDto dto) {
if (!makersUserSlackRepository.existsByCallEmojiAndUserSlackId(dto.getCallEmoji(), dto.getUserSlackId()))
throw new IllegalArgumentException("Call Emoji not exists");
throw new CustomSlackException("Call Emoji not exists");

makersUserSlackRepository.deleteByCallEmojiAndUserSlackId(dto.getCallEmoji(), dto.getUserSlackId());
}

public void sendMention(MethodsClient client, ReactionAddedEvent event) {
String channel = event.getItem().getChannel();
String user = event.getUser();
List<MakersUserSlack> slackUser = resolveSlackUser(event);
try {

String sendMessage = messageBuild(slackUser, user);
List<MakersUserSlack> slackUser = resolveSlackUser(event);

String sendMessage = messageBuild(slackUser, user);

try {
ChatPostMessageResponse responses = client.chatPostMessage(r -> r
.channel(channel)
.text(sendMessage)
Expand All @@ -73,11 +77,11 @@ public void sendMention(MethodsClient client, ReactionAddedEvent event) {
if (responses.isOk())
log.info("message send success");
else {
throw new IllegalArgumentException("ERROR OCCURED");
throw new CustomSlackException("ERROR OCCURED");
}
} catch (Exception e) {
log.error("now error : {}", e);
log.error("message send failed");
} catch (CustomSlackException | SlackApiException | IOException e) {
log.warn("now error : {}", e);
log.warn("message send failed");
}
}

Expand All @@ -87,7 +91,7 @@ private List<MakersUserSlack> resolveSlackUser(ReactionAddedEvent event) {
List<MakersUserSlack> slackUser = makersUserSlackRepository.findByCallEmoji(reaction);

if (slackUser.isEmpty())
throw new IllegalArgumentException("Invalid reaction emoji : " + reaction);
throw new CustomSlackException("Invalid reaction emoji : " + reaction);

return slackUser;
}
Expand All @@ -96,7 +100,7 @@ private String messageBuild(List<MakersUserSlack> slackUsers, String user) {

String slackTemplateCd = extractTemplateCd(slackUsers);
SlackMessageTemplate slackMessageTemplate = slackMessageTemplateRepository.findByTemplateCd(slackTemplateCd)
.orElseThrow(() -> new IllegalArgumentException("해당 슬랙 메시지 템플릿이 존재하지 않습니다."));
.orElseThrow(() -> new CustomSlackException("해당 슬랙 메시지 템플릿이 존재하지 않습니다."));
SlackMessageBuilder slackMessageBuilder = selector.selectSlackMessageBuilder(slackTemplateCd);
String sendMessage = slackMessageBuilder.buildSlackMessage(slackMessageTemplate.getTemplateContent(),
MessageContext.create(user, userIdList(slackUsers)));
Expand All @@ -111,7 +115,8 @@ private String extractTemplateCd(List<MakersUserSlack> slackUser) {
if (slackUser.size() > 1) {
return slackUser.stream()
.map(MakersUserSlack::getSlackTemplateCd)
.findFirst().orElseThrow(() -> new IllegalArgumentException("templateCd not found"));
.findFirst().orElseThrow(() -> new CustomSlackException("templateCd not found"));

}

return slackUser.get(0).getSlackTemplateCd();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public void init() {
socketModeApp.startAsync();
log.info("slack socket mode start");
} catch (Exception e) {
log.error("slack socket mode error");
log.warn("slack socket mode error");
}
}

Expand All @@ -49,7 +49,7 @@ public void destroy() {
socketModeApp.stop();
log.info("slack socket mode stop");
} catch (Exception e) {
log.error("Failed to stop socket mode", e);
log.warn("Failed to stop socket mode", e);
}
}
}